diff options
344 files changed, 30102 insertions, 4740 deletions
diff --git a/.gitignore b/.gitignore index fe7859c265..01cb6e7db7 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ /*.tar.bz2 /*.tar.gz /*.tar.xz +/30-systemd-environment-d-generator /GPATH /GRTAGS /GSYMS @@ -194,6 +195,7 @@ /test-env-util /test-escape /test-event +/test-exec-util /test-execute /test-extract-word /test-fd-util @@ -220,6 +222,7 @@ /test-journal /test-journal-enum /test-journal-flush +/test-journal-importer /test-journal-init /test-journal-interleaving /test-journal-match @@ -89,3 +89,16 @@ Eric Cook <llua@users.noreply.github.com> Lukáš Nykrýn <lnykryn@redhat.com> Heikki Kemppainen <heikki.kemppainen@nokia.com> Hendrik Brueckner <hbrueckner@users.noreply.github.com> +Alexandros Frantzis <alexandros.frantzis@canonical.com> +Alexander Kochetkov <al.kochet@gmail.com> +Fionn Cleary <clearyf@tcd.ie> +Michel Kraus <github@demonsphere.de> <27o@users.noreply.github.com> +Charles (Chas) Williams <ciwillia@brocade.com> +Emil Soleyman <emil@soleyman.com> +Dmitry Khlebnikov <dmitry.khlebnikov@rea-group.com> <galaxy4public@users.noreply.github.com> +Antoine Eiche <lewo@abesis.fr> +Gianluca Boiano <morf3089@gmail.com> +Paolo Giangrandi <paolo@luccalug.it> +Karl Kraus <karl.kraus@tum.de> <laqueray@gmail.com> +Tibor Nagy <xnagytibor@gmail.com> +Stuart McLaren <stuart.mclaren@hp.com> diff --git a/DISTRO_PORTING b/DISTRO_PORTING index 51a244389d..68107e46c9 100644 --- a/DISTRO_PORTING +++ b/DISTRO_PORTING @@ -25,21 +25,19 @@ HOWTO: NTP POOL: - By default, timesyncd uses the Google NTP servers - time[1-4].google.com. They serve time that is not standards - compliant, and can be up to .5s off. Google does not - officially support these servers for the broader - audience. Distributions and vendors really should not ship - OSes or devices with these NTP servers configured. Instead, - please register your own vendor pool at ntp.org and make it - the built-in default by passing --with-ntp-servers= to - configure. Registering vendor pools is free: + By default, timesyncd uses the Google Public NTP servers + time[1-4].google.com. They serve time that uses a leap second + smear, and can be up to .5s off from servers that use stepped + leap seconds. - http://www.pool.ntp.org/en/vendors.html + https://developers.google.com/time/smear + + If you prefer to use leap second steps, please register your own + vendor pool at ntp.org and make it the built-in default by + passing --with-ntp-servers= to configure. Registering vendor + pools is free: - Again, if you ship your software or device with the default - NTP servers, then you will get served wrong time, and will - rely on services that might not be supported for long. + http://www.pool.ntp.org/en/vendors.html PAM: The default PAM config shipped by systemd is really bare bones. diff --git a/ENVIRONMENT.md b/ENVIRONMENT.md index 1ad2addfee..e542d4ec6f 100644 --- a/ENVIRONMENT.md +++ b/ENVIRONMENT.md @@ -59,3 +59,8 @@ systemd-logind: * `$SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1` — if set, report that hibernation is available even if the swap devices do not provide enough room for it. + +installed systemd tests: + +* `$SYSTEMD_TEST_DATA` — override the location of test data. This is useful if + a test executable is moved to an arbitrary location. @@ -51,12 +51,14 @@ systemd's build dependencies: Putting this all together, here's a series of commands for preparing a patch for systemd (this example is for Fedora): + $ sudo dnf builddep systemd # install build dependencies + $ sudo dnf install mkosi # install tool to quickly build images $ git clone https://github.com/systemd/systemd.git $ cd systemd $ vim src/core/main.c # or wherever you'd like to make your changes - $ dnf builddep systemd # install build dependencies $ ./autogen.sh c # configure the source tree $ make -j `nproc` # build it locally, see if everything compiles fine + $ make -j `nproc` check # run some simple regression tests $ sudo mkosi # build a test image $ sudo systemd-nspawn -bi image.raw # boot up the test image $ git add -p # interactively put together your patch diff --git a/Makefile-man.am b/Makefile-man.am index 6f59658445..d5626411a5 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -11,6 +11,7 @@ MANPAGES += \ man/bootup.7 \ man/busctl.1 \ man/daemon.7 \ + man/environment.d.5 \ man/file-hierarchy.7 \ man/halt.8 \ man/hostname.5 \ @@ -110,6 +111,7 @@ MANPAGES += \ man/systemd-debug-generator.8 \ man/systemd-delta.1 \ man/systemd-detect-virt.1 \ + man/systemd-environment-d-generator.8 \ man/systemd-escape.1 \ man/systemd-fsck@.service.8 \ man/systemd-fstab-generator.8 \ @@ -146,6 +148,7 @@ MANPAGES += \ man/systemd.1 \ man/systemd.automount.5 \ man/systemd.device.5 \ + man/systemd.environment-generator.7 \ man/systemd.exec.5 \ man/systemd.generator.7 \ man/systemd.journal-fields.7 \ @@ -184,6 +187,7 @@ MANPAGES += \ man/udev_new.3 \ man/udevadm.8 MANPAGES_ALIAS += \ + man/30-systemd-environment-d-generator.8 \ man/SD_ALERT.3 \ man/SD_BUS_ERROR_ACCESS_DENIED.3 \ man/SD_BUS_ERROR_ADDRESS_IN_USE.3 \ @@ -240,6 +244,7 @@ MANPAGES_ALIAS += \ man/SD_ID128_FORMAT_STR.3 \ man/SD_ID128_FORMAT_VAL.3 \ man/SD_ID128_MAKE.3 \ + man/SD_ID128_MAKE_STR.3 \ man/SD_ID128_NULL.3 \ man/SD_INFO.3 \ man/SD_JOURNAL_APPEND.3 \ @@ -541,6 +546,7 @@ MANPAGES_ALIAS += \ man/udev_ref.3 \ man/udev_unref.3 \ man/user.conf.d.5 +man/30-systemd-environment-d-generator.8: man/systemd-environment-d-generator.8 man/SD_ALERT.3: man/sd-daemon.3 man/SD_BUS_ERROR_ACCESS_DENIED.3: man/sd-bus-errors.3 man/SD_BUS_ERROR_ADDRESS_IN_USE.3: man/sd-bus-errors.3 @@ -597,6 +603,7 @@ man/SD_ID128_CONST_STR.3: man/sd-id128.3 man/SD_ID128_FORMAT_STR.3: man/sd-id128.3 man/SD_ID128_FORMAT_VAL.3: man/sd-id128.3 man/SD_ID128_MAKE.3: man/sd-id128.3 +man/SD_ID128_MAKE_STR.3: man/sd-id128.3 man/SD_ID128_NULL.3: man/sd-id128.3 man/SD_INFO.3: man/sd-daemon.3 man/SD_JOURNAL_APPEND.3: man/sd_journal_get_fd.3 @@ -898,6 +905,9 @@ man/udev_monitor_unref.3: man/udev_monitor_new_from_netlink.3 man/udev_ref.3: man/udev_new.3 man/udev_unref.3: man/udev_new.3 man/user.conf.d.5: man/systemd-system.conf.5 +man/30-systemd-environment-d-generator.html: man/systemd-environment-d-generator.html + $(html-alias) + man/SD_ALERT.html: man/sd-daemon.html $(html-alias) @@ -1066,6 +1076,9 @@ man/SD_ID128_FORMAT_VAL.html: man/sd-id128.html man/SD_ID128_MAKE.html: man/sd-id128.html $(html-alias) +man/SD_ID128_MAKE_STR.html: man/sd-id128.html + $(html-alias) + man/SD_ID128_NULL.html: man/sd-id128.html $(html-alias) @@ -2635,6 +2648,7 @@ EXTRA_DIST += \ man/crypttab.xml \ man/daemon.xml \ man/dnssec-trust-anchors.d.xml \ + man/environment.d.xml \ man/file-hierarchy.xml \ man/halt.xml \ man/hostname.xml \ @@ -2767,6 +2781,7 @@ EXTRA_DIST += \ man/systemd-debug-generator.xml \ man/systemd-delta.xml \ man/systemd-detect-virt.xml \ + man/systemd-environment-d-generator.xml \ man/systemd-escape.xml \ man/systemd-firstboot.xml \ man/systemd-fsck@.service.xml \ @@ -2827,6 +2842,7 @@ EXTRA_DIST += \ man/systemd-volatile-root.service.xml \ man/systemd.automount.xml \ man/systemd.device.xml \ + man/systemd.environment-generator.xml \ man/systemd.exec.xml \ man/systemd.generator.xml \ man/systemd.journal-fields.xml \ diff --git a/Makefile.am b/Makefile.am index 9a435e3a66..2a5610740e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -39,12 +39,12 @@ SUBDIRS = . po .PRECIOUS: $(TEST_SUITE_LOG) Makefile LIBUDEV_CURRENT=7 -LIBUDEV_REVISION=5 +LIBUDEV_REVISION=6 LIBUDEV_AGE=6 -LIBSYSTEMD_CURRENT=17 +LIBSYSTEMD_CURRENT=18 LIBSYSTEMD_REVISION=0 -LIBSYSTEMD_AGE=17 +LIBSYSTEMD_AGE=18 # Dirs of external packages dbuspolicydir=@dbuspolicydir@ @@ -68,6 +68,7 @@ catalogstatedir=$(systemdstatedir)/catalog xinitrcdir=$(sysconfdir)/X11/xinit/xinitrc.d # Our own, non-special dirs +environmentdir=$(prefix)/lib/environment.d pkgsysconfdir=$(sysconfdir)/systemd userunitdir=$(prefix)/lib/systemd/user userpresetdir=$(prefix)/lib/systemd/user-preset @@ -80,6 +81,8 @@ networkdir=$(rootprefix)/lib/systemd/network pkgincludedir=$(includedir)/systemd systemgeneratordir=$(rootlibexecdir)/system-generators usergeneratordir=$(prefix)/lib/systemd/user-generators +systemenvgeneratordir=$(prefix)/lib/systemd/system-environment-generators +userenvgeneratordir=$(prefix)/lib/systemd/user-environment-generators systemshutdowndir=$(rootlibexecdir)/system-shutdown systemsleepdir=$(rootlibexecdir)/system-sleep systemunitdir=$(rootprefix)/lib/systemd/system @@ -93,6 +96,7 @@ kernelinstalldir = $(prefix)/lib/kernel/install.d factory_etcdir = $(datadir)/factory/etc factory_pamdir = $(datadir)/factory/etc/pam.d bootlibdir = $(prefix)/lib/systemd/boot/efi +testsdir = $(prefix)/lib/systemd/tests # And these are the special ones for / rootprefix=@rootprefix@ @@ -133,6 +137,7 @@ check_DATA = dist_rootlibexec_DATA = tests= manual_tests = +TEST_DATA_FILES = TEST_EXTENSIONS = .py PY_LOG_COMPILER = $(PYTHON) DISABLE_HARD_ERRORS = yes @@ -205,6 +210,8 @@ AM_CPPFLAGS = \ -DSYSTEMD_CRYPTSETUP_PATH=\"$(rootlibexecdir)/systemd-cryptsetup\" \ -DSYSTEM_GENERATOR_PATH=\"$(systemgeneratordir)\" \ -DUSER_GENERATOR_PATH=\"$(usergeneratordir)\" \ + -DSYSTEM_ENV_GENERATOR_PATH=\"$(systemenvgeneratordir)\" \ + -DUSER_ENV_GENERATOR_PATH=\"$(userenvgeneratordir)\" \ -DSYSTEM_SHUTDOWN_PATH=\"$(systemshutdowndir)\" \ -DSYSTEM_SLEEP_PATH=\"$(systemsleepdir)\" \ -DSYSTEMD_KBD_MODEL_MAP=\"$(pkgdatadir)/kbd-model-map\" \ @@ -218,7 +225,6 @@ AM_CPPFLAGS = \ -DLIBDIR=\"$(libdir)\" \ -DROOTLIBDIR=\"$(rootlibdir)\" \ -DROOTLIBEXECDIR=\"$(rootlibexecdir)\" \ - -DTEST_DIR=\"$(abs_top_srcdir)/test\" \ -I $(top_srcdir)/src \ -I $(top_builddir)/src/basic \ -I $(top_srcdir)/src/basic \ @@ -250,6 +256,8 @@ AM_CPPFLAGS = \ -I $(top_srcdir)/src/libsystemd/sd-device \ -I $(top_srcdir)/src/libsystemd/sd-id128 \ -I $(top_srcdir)/src/libsystemd-network \ + -DABS_SRC_DIR=\"$(abs_top_srcdir)\" \ + -DABS_BUILD_DIR=\"$(abs_top_builddir)\" \ $(OUR_CPPFLAGS) AM_CFLAGS = $(OUR_CFLAGS) @@ -304,6 +312,10 @@ endef install-directories-hook: $(MKDIR_P) $(addprefix $(DESTDIR),$(INSTALL_DIRS)) +install-environment-conf-hook: install-directories-hook + $(AM_V_LN)$(LN_S) --relative -f $(DESTDIR)$(sysconfdir)/environment \ + $(DESTDIR)$(environmentdir)/99-environment.conf + install-aliases-hook: set -- $(SYSTEM_UNIT_ALIASES) && \ dir=$(systemunitdir) && $(install-aliases) @@ -337,10 +349,13 @@ INSTALL_EXEC_HOOKS += \ install-target-wants-hook \ install-directories-hook \ install-aliases-hook \ - install-touch-usr-hook + install-touch-usr-hook \ + install-busnames-target-wants-hook +if ENABLE_ENVIRONMENT_D INSTALL_EXEC_HOOKS += \ - install-busnames-target-wants-hook + install-environment-conf-hook +endif # ------------------------------------------------------------------------------ AM_V_M4 = $(AM_V_M4_$(V)) @@ -422,6 +437,11 @@ systemgenerator_PROGRAMS = \ systemd-system-update-generator \ systemd-debug-generator +if ENABLE_ENVIRONMENT_D +userenvgenerator_PROGRAMS = \ + 30-systemd-environment-d-generator +endif + dist_bashcompletion_data = \ shell-completion/bash/busctl \ shell-completion/bash/journalctl \ @@ -761,7 +781,9 @@ EXTRA_DIST += \ tools/make-man-rules.py \ tools/make-directive-index.py \ tools/xml_helper.py \ - man/glib-event-glue.c + man/glib-event-glue.c \ + man/50-xdg-data-dirs.sh \ + man/90-rearrange-path.py # ------------------------------------------------------------------------------ noinst_LTLIBRARIES += \ @@ -873,6 +895,8 @@ libbasic_la_SOURCES = \ src/basic/bus-label.h \ src/basic/ratelimit.h \ src/basic/ratelimit.c \ + src/basic/exec-util.c \ + src/basic/exec-util.h \ src/basic/exit-status.c \ src/basic/exit-status.h \ src/basic/virt.c \ @@ -958,7 +982,9 @@ libbasic_la_SOURCES = \ src/basic/format-util.h \ src/basic/nss-util.h \ src/basic/khash.h \ - src/basic/khash.c + src/basic/khash.c \ + src/basic/journal-importer.h \ + src/basic/journal-importer.c nodist_libbasic_la_SOURCES = \ src/basic/errno-from-name.h \ @@ -1011,6 +1037,8 @@ libshared_la_SOURCES = \ src/shared/apparmor-util.h \ src/shared/ima-util.c \ src/shared/ima-util.h \ + src/shared/journal-util.c \ + src/shared/journal-util.h \ src/shared/ptyfwd.c \ src/shared/ptyfwd.h \ src/shared/base-filesystem.c \ @@ -1528,6 +1556,7 @@ tests += \ test-ellipsize \ test-util \ test-mount-util \ + test-exec-util \ test-cpu-set-util \ test-hexdecoct \ test-escape \ @@ -1594,7 +1623,8 @@ tests += \ test-rlimit-util \ test-signal-util \ test-selinux \ - test-sizeof + test-sizeof \ + test-journal-importer if HAVE_ACL tests += \ @@ -1606,7 +1636,7 @@ tests += \ test-seccomp endif -EXTRA_DIST += \ +TEST_DATA_FILES += \ test/a.service \ test/basic.target \ test/b.service \ @@ -1730,6 +1760,9 @@ EXTRA_DIST += \ test/test-execute/exec-restrict-namespaces-yes.service \ test/test-execute/exec-restrict-namespaces-mnt.service \ test/test-execute/exec-restrict-namespaces-mnt-blacklist.service \ + test/test-execute/exec-read-only-path-succeed.service \ + test/test-execute/exec-privatedevices-yes-capability-sys-rawio.service \ + test/test-execute/exec-privatedevices-no-capability-sys-rawio.service \ test/bus-policy/hello.conf \ test/bus-policy/methods.conf \ test/bus-policy/ownerships.conf \ @@ -1912,6 +1945,12 @@ test_mount_util_SOURCES = \ test_mount_util_LDADD = \ libsystemd-shared.la +test_exec_util_SOURCES = \ + src/test/test-exec-util.c + +test_exec_util_LDADD = \ + libsystemd-shared.la + test_hexdecoct_SOURCES = \ src/test/test-hexdecoct.c @@ -2457,6 +2496,16 @@ test_arphrd_list_SOURCES = \ test_arphrd_list_LDADD = \ libsystemd-shared.la +test_journal_importer_SOURCES = \ + src/test/test-journal-importer.c + +test_journal_importer_LDADD = \ + libsystemd-shared.la + +TEST_DATA_FILES += \ + test/journal-data/journal-1.txt \ + test/journal-data/journal-2.txt + # ------------------------------------------------------------------------------ ## .PHONY so it always rebuilds it .PHONY: coverage lcov-run lcov-report coverage-sync @@ -2803,6 +2852,13 @@ systemd_system_update_generator_LDADD = \ libsystemd-shared.la # ------------------------------------------------------------------------------ +30_systemd_environment_d_generator_SOURCES = \ + src/environment-d-generator/environment-d-generator.c + +30_systemd_environment_d_generator_LDADD = \ + libsystemd-shared.la + +# ------------------------------------------------------------------------------ if ENABLE_HIBERNATE systemgenerator_PROGRAMS += \ systemd-hibernate-resume-generator @@ -4011,19 +4067,19 @@ check_DATA += \ test/sys endif -# packed sysfs test tree -test/sys: test/sys.tar.xz - -rm -rf test/sys +# sysfs test tree +test/sys: test/sys-script.py + -rm -rf $@ $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)tar -C test/ -xJf $(top_srcdir)/test/sys.tar.xz - -touch test/sys + $(AM_V_GEN)$(top_srcdir)/test/sys-script.py $(dir $@) + -touch $@ test-sys-distclean: -rm -rf test/sys DISTCLEAN_LOCAL_HOOKS += test-sys-distclean EXTRA_DIST += \ - test/sys.tar.xz \ + test/sys-script.py \ test/udev-test.pl \ test/hwdb-test.sh \ test/rule-syntax-check.py \ @@ -5546,14 +5602,12 @@ dist_dbuspolicy_DATA += \ dist_dbussystemservice_DATA += \ src/resolve/org.freedesktop.resolve1.service -SYSTEM_UNIT_ALIASES += \ - systemd-resolved.service dbus-org.freedesktop.resolve1.service - BUSNAMES_TARGET_WANTS += \ org.freedesktop.resolve1.busname GENERAL_ALIASES += \ - $(systemunitdir)/systemd-resolved.service $(pkgsysconfdir)/system/multi-user.target.wants/systemd-resolved.service + $(systemunitdir)/systemd-resolved.service $(pkgsysconfdir)/system/multi-user.target.wants/systemd-resolved.service \ + $(systemunitdir)/systemd-resolved.service $(pkgsysconfdir)/system/dbus-org.freedesktop.resolve1.service nodist_pkgsysconf_DATA += \ src/resolve/resolved.conf @@ -5637,7 +5691,7 @@ test_dns_packet_SOURCES = \ test_dns_packet_CPPFLAGS = \ $(AM_CPPFLAGS) \ - -DRESOLVE_TEST_DIR=\"$(abs_top_srcdir)/src/resolve/test-data\" + -I $(top_srcdir)/src/test test_dns_packet_CFLAGS = \ $(AM_CFLAGS) \ @@ -5648,18 +5702,20 @@ test_dns_packet_LDADD = \ $(GCRYPT_LIBS) \ -lm -EXTRA_DIST += \ - src/resolve/test-data/_openpgpkey.fedoraproject.org.pkts \ - src/resolve/test-data/fedoraproject.org.pkts \ - src/resolve/test-data/gandi.net.pkts \ - src/resolve/test-data/google.com.pkts \ - src/resolve/test-data/root.pkts \ - src/resolve/test-data/sw1a1aa-sw1a2aa-sw1a2ab-sw1a2ac.find.me.uk.pkts \ - src/resolve/test-data/teamits.com.pkts \ - src/resolve/test-data/zbyszek@fedoraproject.org.pkts \ - src/resolve/test-data/_443._tcp.fedoraproject.org.pkts \ - src/resolve/test-data/kyhwana.org.pkts \ - src/resolve/test-data/fake-caa.pkts +TEST_DATA_FILES += \ + test/test-resolve/_openpgpkey.fedoraproject.org.pkts \ + test/test-resolve/fedoraproject.org.pkts \ + test/test-resolve/gandi.net.pkts \ + test/test-resolve/google.com.pkts \ + test/test-resolve/root.pkts \ + test/test-resolve/sw1a1aa-sw1a2aa-sw1a2ab-sw1a2ac.find.me.uk.pkts \ + test/test-resolve/teamits.com.pkts \ + test/test-resolve/zbyszek@fedoraproject.org.pkts \ + test/test-resolve/_443._tcp.fedoraproject.org.pkts \ + test/test-resolve/kyhwana.org.pkts \ + test/test-resolve/fake-caa.pkts + +EXTRA_DIST += $(TEST_DATA_FILES) test_dnssec_SOURCES = \ src/resolve/test-dnssec.c \ @@ -5756,6 +5812,8 @@ libnetworkd_core_la_SOURCES = \ src/network/networkd-link.c \ src/network/networkd-link-bus.c \ src/network/networkd-ipv4ll.c \ + src/network/networkd-ipv6-proxy-ndp.h \ + src/network/networkd-ipv6-proxy-ndp.c \ src/network/networkd-dhcp4.c \ src/network/networkd-dhcp6.c \ src/network/networkd-ndisc.h \ @@ -6201,6 +6259,8 @@ substitutions = \ '|sysctldir=$(sysctldir)|' \ '|systemgeneratordir=$(systemgeneratordir)|' \ '|usergeneratordir=$(usergeneratordir)|' \ + '|systemenvgeneratordir=$(systemenvgeneratordir)|' \ + '|userenvgeneratordir=$(userenvgeneratordir)|' \ '|CERTIFICATEROOT=$(CERTIFICATEROOT)|' \ '|PACKAGE_VERSION=$(PACKAGE_VERSION)|' \ '|PACKAGE_NAME=$(PACKAGE_NAME)|' \ @@ -6244,6 +6304,7 @@ substitutions = \ SED_PROCESS = \ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ $(SED) $(subst '|,-e 's|@,$(subst =,\@|,$(subst |',|g',$(substitutions)))) \ + -e '/^\#\# /d' \ < $< > $@ units/%: units/%.in @@ -6463,6 +6524,7 @@ INSTALL_DIRS += \ endif INSTALL_DIRS += \ + $(environmentdir) \ $(prefix)/lib/modules-load.d \ $(sysconfdir)/modules-load.d \ $(prefix)/lib/systemd/network \ @@ -6592,7 +6654,7 @@ valgrind-tests: $(TESTS) if $(LIBTOOL) --mode=execute file $$f | grep -q shell; then \ echo -e "$${x}Skipping non-binary $$f"; else \ echo -e "$${x}Running $$f"; \ - $(LIBTOOL) --mode=execute valgrind -q --leak-check=full --max-stackframe=5242880 --error-exitcode=55 $(builddir)/$$f ; fi; \ + $(AM_TESTS_ENVIRONMENT) $(LIBTOOL) --mode=execute valgrind -q --leak-check=full --max-stackframe=5242880 --error-exitcode=55 $(builddir)/$$f ; fi; \ x="\n\n"; \ done @@ -6690,6 +6752,20 @@ tests += \ test-libsystemd-sym \ test-libudev-sym +.PHONY: install-tests +install-tests: $(tests) $(TEST_DATA_FILES) + for f in $(tests); do \ + if [ -x $(top_builddir)/.libs/$$f ]; then \ + install -D -m 755 $(top_builddir)/.libs/$$f $(DESTDIR)/$(testsdir)/$$f; \ + else \ + install -D -m 755 $(top_builddir)/$$f $(DESTDIR)/$(testsdir)/$$f; \ + fi; \ + done + for f in $(TEST_DATA_FILES); do \ + install -D -m 644 $(top_srcdir)/$$f $(DESTDIR)/$(testsdir)/testdata/$${f#test/}; \ + done + + .PHONY: cppcheck cppcheck: cppcheck --enable=all -q $(top_srcdir) @@ -1,11 +1,64 @@ systemd System and Service Manager -CHANGES WITH 233 in spe +CHANGES WITH 233: + + * The "hybrid" control group mode has been modified to improve + compatibility with "legacy" cgroups-v1 setups. Specifically, the + "hybrid" setup of /sys/fs/cgroup is now pretty much identical to + "legacy" (including /sys/fs/cgroup/systemd as "name=systemd" named + cgroups-v1 hierarchy), the only externally visible change being that + the cgroups-v2 hierarchy is also mounted, to + /sys/fs/cgroup/unified. This should provide a large degree of + compatibility with "legacy" cgroups-v1, while taking benefit of the + better management capabilities of cgroups-v2. + + * The default control group setup mode may be selected both a boot-time + via a set of kernel command line parameters (specifically: + systemd.unified_cgroup_hierarchy= and + systemd.legacy_systemd_cgroup_controller=), as well as a compile-time + default selected on the configure command line + (--with-default-hierarchy=). The upstream default is "hybrid" + (i.e. the cgroups-v1 + cgroups-v2 mixture discussed above) now, but + this will change in a future systemd version to be "unified" (pure + cgroups-v2 mode). The third option for the compile time option is + "legacy", to enter pure cgroups-v1 mode. We recommend downstream + distributions to default to "hybrid" mode for release distributions, + starting with v233. We recommend "unified" for development + distributions (specifically: distributions such as Fedora's rawhide) + as that's where things are headed in the long run. Use "legacy" for + greatest stability and compatibility only. + + * Note one current limitation of "unified" and "hybrid" control group + setup modes: the kernel currently does not permit the systemd --user + instance (i.e. unprivileged code) to migrate processes between two + disconnected cgroup subtrees, even if both are managed and owned by + the user. This effectively means "systemd-run --user --scope" doesn't + work when invoked from outside of any "systemd --user" service or + scope. Specifically, it is not supported from session scopes. We are + working on fixing this in a future systemd version. (See #3388 for + further details about this.) * DBus policy files are now installed into /usr rather than /etc. Make sure your system has dbus >= 1.9.18 running before upgrading to this version, or override the install path with --with-dbuspolicydir= . + * All python scripts shipped with systemd (specifically: the various + tests written in Python) now require Python 3. + + * systemd unit tests can now run standalone (without the source or + build directories), and can be installed into /usr/lib/systemd/tests/ + with 'make install-tests'. + + * Note that from this version on, CONFIG_CRYPTO_USER_API_HASH, + CONFIG_CRYPTO_HMAC and CONFIG_CRYPTO_SHA256 need to be enabled in the + kernel. + + * Support for the %c, %r, %R specifiers in unit files has been + removed. Specifiers are not supposed to be dependent on configuration + in the unit file itself (so that they resolve the same regardless + where used in the unit files), but these specifiers were influenced + by the Slice= option. + * The shell invoked by debug-shell.service now defaults to /bin/sh in all cases. If distributions want to use a different shell for this purpose (for example Fedora's /sbin/sushell) they need to specify @@ -26,12 +79,349 @@ CHANGES WITH 233 in spe The 'n' choice for the confirmation spawn prompt has been removed, because its meaning was confusing. + The prompt may now also be redirected to an alternative console by + specifying the console as parameter to systemd.confirm_spawn=. + * Services of Type=notify require a READY=1 notification to be sent during startup. If no such message is sent, the service now fails, even if the main process exited with a successful exit code. + * Services that fail to start up correctly now always have their + ExecStopPost= commands executed. Previously, they'd enter "failed" + state directly, without executing these commands. + + * The option MulticastDNS= of network configuration files has acquired + an actual implementation. With MulticastDNS=yes a host can resolve + names of remote hosts and reply to mDNS A and AAAA requests. + + * When units are about to be started an additional check is now done to + ensure that all dependencies of type BindsTo= (when used in + combination with After=) have been started. + + * systemd-analyze gained a new verb "syscall-filter" which shows which + system call groups are defined for the SystemCallFilter= unit file + setting, and which system calls they contain. + + * A new system call filter group "@filesystem" has been added, + consisting of various file system related system calls. Group + "@reboot" has been added, covering reboot, kexec and shutdown related + calls. Finally, group "@swap" has been added covering swap + configuration related calls. + + * A new unit file option RestrictNamespaces= has been added that may be + used to restrict access to the various process namespace types the + Linux kernel provides. Specifically, it may be used to take away the + right for a service unit to create additional file system, network, + user, and other namespaces. This sandboxing option is particularly + relevant due to the high amount of recently discovered namespacing + related vulnerabilities in the kernel. + + * systemd-udev's .link files gained support for a new AutoNegotiation= + setting for configuring Ethernet auto-negotiation. + + * systemd-networkd's .network files gained support for a new + ListenPort= setting in the [DHCP] section to explicitly configure the + UDP client port the DHCP client shall listen on. + + * .network files gained a new Unmanaged= boolean setting for explicitly + excluding one or more interfaces from management by systemd-networkd. + + * The systemd-networkd ProxyARP= option has been renamed to + IPV4ProxyARP=. Similarly, VXLAN-specific option ARPProxy= has been + renamed to ReduceARPProxy=. The old names continue to be available + for compatibility. + + * systemd-networkd gained support for configuring IPv6 Proxy NDP + addresses via the new IPv6ProxyNDPAddress= .network file setting. + + * systemd-networkd's bonding device support gained support for two new + configuration options ActiveSlave= and PrimarySlave=. + + * The various options in the [Match] section of .network files gained + support for negative matching. + + * New systemd-specific mount options are now understood in /etc/fstab: + + x-systemd.mount-timeout= may be used to configure the maximum + permitted runtime of the mount command. + + x-systemd.device-bound may be set to bind a mount point to its + backing device unit, in order to automatically remove a mount point + if its backing device is unplugged. This option may also be + configured through the new SYSTEMD_MOUNT_DEVICE_BOUND udev property + on the block device, which is now automatically set for all CDROM + drives, so that mounted CDs are automatically unmounted when they are + removed from the drive. + + x-systemd.after= and x-systemd.before= may be used to explicitly + order a mount after or before another unit or mount point. + + * Enqueued start jobs for device units are now automatically garbage + collected if there are no jobs waiting for them anymore. + + * systemctl list-jobs gained two new switches: with --after, for every + queued job the jobs it's waiting for are shown; with --before the + jobs which it's blocking are shown. + + * systemd-nspawn gained support for ephemeral boots from disk images + (or in other words: --ephemeral and --image= may now be + combined). Moreover, ephemeral boots are now supported for normal + directories, even if the backing file system is not btrfs. Of course, + if the file system does not support file system snapshots or + reflinks, the initial copy operation will be relatively expensive, but + this should still be suitable for many use cases. + + * Calendar time specifications in .timer units now support + specifications relative to the end of a month by using "~" instead of + "-" as separator between month and day. For example, "*-02~03" means + "the third last day in February". In addition a new syntax for + repeated events has been added using the "/" character. For example, + "9..17/2:00" means "every two hours from 9am to 5pm". + + * systemd-socket-proxyd gained a new parameter --connections-max= for + configuring the maximum number of concurrent connections. + + * sd-id128 gained a new API for generating unique IDs for the host in a + way that does not leak the machine ID. Specifically, + sd_id128_get_machine_app_specific() derives an ID based on the + machine ID a in well-defined, non-reversible, stable way. This is + useful whenever an identifier for the host is needed but where the + identifier shall not be useful to identify the system beyond the + scope of the application itself. (Internally this uses HMAC-SHA256 as + keyed hash function using the machine ID as input.) + + * NotifyAccess= gained a new supported value "exec". When set + notifications are accepted from all processes systemd itself invoked, + including all control processes. + + * .nspawn files gained support for defining overlay mounts using the + Overlay= and OverlayReadOnly= options. Previously this functionality + was only available on the systemd-nspawn command line. + + * systemd-nspawn's --bind= and --overlay= options gained support for + bind/overlay mounts whose source lies within the container tree by + prefixing the source path with "+". + + * systemd-nspawn's --bind= and --overlay= options gained support for + automatically allocating a temporary source directory in /var/tmp + that is removed when the container dies. Specifically, if the source + directory is specified as empty string this mechanism is selected. An + example usage is --overlay=+/var::/var, which creates an overlay + mount based on the original /var contained in the image, overlayed + with a temporary directory in the host's /var/tmp. This way changes + to /var are automatically flushed when the container shuts down. + + * systemd-nspawn --image= option does now permit raw file system block + devices (in addition to images containing partition tables, as + before). + + * The disk image dissection logic in systemd-nspawn gained support for + automatically setting up LUKS encrypted as well as Verity protected + partitions. When a container is booted from an encrypted image the + passphrase is queried at start-up time. When a container with Verity + data is started, the root hash is search in a ".roothash" file + accompanying the disk image (alternatively, pass the root hash via + the new --root-hash= command line option). + + * A new tool /usr/lib/systemd/systemd-dissect has been added that may + be used to dissect disk images the same way as systemd-nspawn does + it, following the Bootable Partition Specification. It may even be + used to mount disk images with complex partition setups (including + LUKS and Verity partitions) to a local host directory, in order to + inspect them. This tool is not considered public API (yet), and is + thus not installed into /usr/bin. Please do not rely on its + existence, since it might go away or be changed in later systemd + versions. + + * A new generator "systemd-verity-generator" has been added, similar in + style to "systemd-cryptsetup-generator", permitting automatic setup of + Verity root partitions when systemd boots up. In order to make use of + this your partition setup should follow the Discoverable Partitions + Specification, and the GPT partition ID of the root file system + partition should be identical to the upper 128bit of the Verity root + hash. The GPT partition ID of the Verity partition protecting it + should be the lower 128bit of the Verity root hash. If the partition + image follows this model it is sufficient to specify a single + "roothash=" kernel command line argument to both configure which root + image and verity partition to use as well as the root hash for + it. Note that systemd-nspawn's Verity support follows the same + semantics, meaning that disk images with proper Verity data in place + may be booted in containers with systemd-nspawn as well as on + physical systems via the verity generator. Also note that the "mkosi" + tool available at https://github.com/systemd/mkosi has been updated + to generate Verity protected disk images following this scheme. In + fact, it has been updated to generate disk images that optionally + implement a complete UEFI SecureBoot trust chain, involving a signed + kernel and initrd image that incorporates such a root hash as well as + a Verity-enabled root partition. + + * The hardware database (hwdb) udev supports has been updated to carry + accelerometer quirks. + + * All system services are now run with a fresh kernel keyring set up + for them. The invocation ID is stored by default in it, thus + providing a safe, non-overridable way to determine the invocation + ID of each service. + + * Service unit files gained new BindPaths= and BindReadOnlyPaths= + options for bind mounting arbitrary paths in a service-specific + way. When these options are used, arbitrary host or service files and + directories may be mounted to arbitrary locations in the service's + view. + + * Documentation has been added that lists all of systemd's low-level + environment variables: + + https://github.com/systemd/systemd/blob/master/ENVIRONMENT.md + + * sd-daemon gained a new API sd_is_socket_sockaddr() for determining + whether a specific socket file descriptor matches a specified socket + address. + + * systemd-firstboot has been updated to check for the + systemd.firstboot= kernel command line option. It accepts a boolean + and when set to false the first boot questions are skipped. + + * systemd-fstab-generator has been updated to check for the + systemd.volatile= kernel command line option, which either takes an + optional boolean parameter or the special value "state". If used the + system may be booted in a "volatile" boot mode. Specifically, + "systemd.volatile" is used, the root directory will be mounted as + tmpfs, and only /usr is mounted from the actual root file system. If + "systemd.volatile=state" is used, the root directory will be mounted + as usual, but /var is mounted as tmpfs. This concept provides similar + functionality as systemd-nspawn's --volatile= option, but provides it + on physical boots. Use this option for implementing stateless + systems, or testing systems with all state and/or configuration reset + to the defaults. (Note though that many distributions are not + prepared to boot up without a populated /etc or /var, though.) + + * systemd-gpt-auto-generator gained support for LUKS encrypted root + partitions. Previously it only supported LUKS encrypted partitions + for all other uses, except for the root partition itself. + + * Socket units gained support for listening on AF_VSOCK sockets for + communication in virtualized QEMU environments. + + * The "configure" script gained a new option --with-fallback-hostname= + for specifying the fallback hostname to use if none is configured in + /etc/hostname. For example, by specifying + --with-fallback-hostname=fedora it is possible to default to a + hostname of "fedora" on pristine installations. + + * systemd-cgls gained support for a new --unit= switch for listing only + the control groups of a specific unit. Similar --user-unit= has been + added for listing only the control groups of a specific user unit. + + * systemd-mount gained a new --umount switch for unmounting a mount or + automount point (and all mount/automount points below it). + + * systemd will now refuse full configuration reloads (via systemctl + daemon-reload and related calls) unless at least 16MiB of free space + are available in /run. This is a safety precaution in order to ensure + that generators can safely operate after the reload completed. + + * A new unit file option RootImage= has been added, which has a similar + effect as RootDirectory= but mounts the service's root directory from + a disk image instead of plain directory. This logic reuses the same + image dissection and mount logic that systemd-nspawn already uses, + and hence supports any disk images systemd-nspawn supports, including + those following the Discoverable Partition Specification, as well as + Verity enabled images. This option enables systemd to run system + services directly off disk images acting as resource bundles, + possibly even including full integrity data. + + * A new MountAPIVFS= unit file option has been added, taking a boolean + argument. If enabled /proc, /sys and /dev (collectively called the + "API VFS") will be mounted for the service. This is only relevant if + RootDirectory= or RootImage= is used for the service, as these mounts + are of course in place in the host mount namespace anyway. + + * systemd-nspawn gained support for a new --pivot-root= switch. If + specified the root directory within the container image is pivoted to + the specified mount point, while the original root disk is moved to a + different place. This option enables booting of ostree images + directly with systemd-nspawn. + + * The systemd build scripts will no longer complain if the NTP server + addresses are not changed from the defaults. Google now supports + these NTP servers officially. We still recommend downstreams to + properly register an NTP pool with the NTP pool project though. + + * coredumpctl gained new new "--reverse" option for printing the list + of coredumps in reverse order. + + * coredumpctl will now show additional information about truncated and + inaccessible coredumps, as well as coredumps that are still being + processed. It also gained a new --quiet switch for suppressing + additional informational message in its output. + + * coredumpctl gained support for only showing coredumps newer and/or + older than specific timestamps, using the new --since= and --until= + options, reminiscent of journalctl's options by the same name. + + * The systemd-coredump logic has been improved so that it may be reused + to collect backtraces in non-compiled languages, for example in + scripting languages such as Python. + + * machinectl will now show the UID shift of local containers, if user + namespacing is enabled for them. + + * systemd will now optionally run "environment generator" binaries at + configuration load time. They may be used to add environment + variables to the environment block passed to services invoked. One + user environment generator is shipped by default that sets up + environment variables based on files dropped into /etc/environment.d + and ~/.config/environment.d/. + + * systemd-resolved now includes the new, recently published 2017 DNSSEC + root key (KSK). + + * hostnamed has been updated to report a new chassis type of + "convertible" to cover "foldable" laptops that can both act as a + tablet and as a laptop, such as various Lenovo Yoga devices. + + Contributions from: Adrián López, Alexander Galanin, Alexander + Kochetkov, Alexandros Frantzis, Andrey Ulanov, Antoine Eiche, Baruch + Siach, Bastien Nocera, Benjamin Robin, Björn, Brandon Philips, Cédric + Schieli, Charles (Chas) Williams, Christian Hesse, Daniele Medri, + Daniel Drake, Daniel Rusek, Daniel Wagner, Dan Streetman, Dave Reisner, + David Glasser, David Herrmann, David Michael, Djalal Harouni, Dmitry + Khlebnikov, Dmitry Rozhkov, Dongsu Park, Douglas Christman, Earnestly, + Emil Soleyman, Eric Cook, Evgeny Vereshchagin, Felipe Sateler, Fionn + Cleary, Florian Klink, Francesco Brozzu, Franck Bui, Gabriel Rauter, + Gianluca Boiano, Giedrius Statkevičius, Graeme Lawes, Hans de Goede, + Harald Hoyer, Ian Kelling, Ivan Shapovalov, Jakub Wilk, Janne Heß, Jan + Synacek, Jason Reeder, Jonathan Boulle, Jörg Thalheim, Jouke Witteveen, + Karl Kraus, Kees Cook, Keith Busch, Kieran Colford, kilian-k, Lennart + Poettering, Lubomir Rintel, Lucas Werkmeister, Lukas Rusak, Maarten de + Vries, Maks Naumov, Mantas Mikulėnas, Marc-Andre Lureau, Marcin Bachry, + Mark Stosberg, Martin Ejdestig, Martin Pitt, Mauricio Faria de + Oliveira, micah, Michael Biebl, Michael Shields, Michal Schmidt, Michal + Sekletar, Michel Kraus, Mike Gilbert, Mikko Ylinen, Mirza Krak, + Namhyung Kim, nikolaof, peoronoob, Peter Hutterer, Peter Körner, Philip + Withnall, Piotr Drąg, Ray Strode, Reverend Homer, Rike-Benjamin + Schuppner, Robert Kreuzer, Ronny Chevalier, Ruslan Bilovol, sammynx, + Sergey Ptashnick, Sergiusz Urbaniak, Stefan Berger, Stefan Hajnoczi, + Stefan Schweter, Stuart McLaren, Susant Sahani, Sylvain Plantefève, + Taylor Smock, Tejun Heo, Thomas Blume, Thomas H. P. Andersen, Tibor + Nagy, Tobias Stoeckmann, Tom Gundersen, Torstein Husebø, Viktar + Vaŭčkievič, Viktor Mihajlovski, Vitaly Sulimov, Waldemar Brodkorb, + Walter Garcia-Fontes, Wim de With, Yassine Imounachen, Yi EungJun, + YunQiang Su, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, Александр + Тихонов + + — Berlin, 2017-03-01 + CHANGES WITH 232: + * udev now runs with MemoryDenyWriteExecute=, RestrictRealtime= and + RestrictAddressFamilies= enabled. These sandboxing options should + generally be compatible with the various external udev call-out + binaries we are aware of, however there may be exceptions, in + particular when exotic languages for these call-outs are used. In + this case, consider turning off these settings locally. + * The new RemoveIPC= option can be used to remove IPC objects owned by the user or group of a service when that service exits. @@ -1883,7 +2273,7 @@ CHANGES WITH 220: gudev from the Gnome project instead. gudev is still included in systemd, for now. It will be removed soon, though. Please also see the announcement-thread on systemd-devel: - http://lists.freedesktop.org/archives/systemd-devel/2015-May/032070.html + https://lists.freedesktop.org/archives/systemd-devel/2015-May/032070.html * systemd now exposes a CPUUsageNSec= property for each service unit on the bus, that contains the overall consumed @@ -3786,7 +4176,7 @@ CHANGES WITH 211: also supports LUKS-encrypted partitions now. With this in place, automatic discovery of partitions to mount following the Discoverable Partitions Specification - (http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec) + (https://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec) is now a lot more complete. This allows booting without /etc/fstab and without root= on the kernel command line on systems prepared appropriately. @@ -5138,7 +5528,7 @@ CHANGES WITH 199: * A new libsystemd-bus module has been added that implements a pretty complete D-Bus client library. For details see: - http://lists.freedesktop.org/archives/systemd-devel/2013-March/009797.html + https://lists.freedesktop.org/archives/systemd-devel/2013-March/009797.html * journald will now explicitly flush the journal files to disk at the latest 5min after each write. The file will then also @@ -5288,7 +5678,7 @@ CHANGES WITH 198: only in conjunction with Gummiboot, but could be supported by other boot loaders too. For details see: - http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface + https://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface * A new generator has been added that automatically mounts the EFI System Partition (ESP) to /boot, if that directory @@ -5364,7 +5754,7 @@ CHANGES WITH 198: * A new tool kernel-install has been added that can install kernel images according to the Boot Loader Specification: - http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec + https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec * Boot time console output has been improved to provide animated boot time output for hanging jobs. @@ -5454,7 +5844,7 @@ CHANGES WITH 197: of these policies is now the default. Please see this wiki document for details: - http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames + https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames * Auke Kok's bootchart implementation has been added to the systemd tree. It is an optional component that can graph the @@ -5602,7 +5992,7 @@ CHANGES WITH 196: indexed database to link up additional information with journal entries. For further details please check: - http://www.freedesktop.org/wiki/Software/systemd/catalog + https://www.freedesktop.org/wiki/Software/systemd/catalog The indexed message catalog database also needs to be rebuilt after installation of message catalog files. Use @@ -6454,7 +6844,7 @@ CHANGES WITH 183: * A framework for implementing offline system updates is now integrated, for details see: - http://freedesktop.org/wiki/Software/systemd/SystemUpdates + https://www.freedesktop.org/wiki/Software/systemd/SystemUpdates * A new service type Type=idle is available now which helps us avoiding ugly interleaving of getty output and boot status @@ -6735,7 +7125,7 @@ CHANGES WITH 39: * New unit file option ControlGroupPersistent= to make cgroups persistent, following the mechanisms outlined in - http://www.freedesktop.org/wiki/Software/systemd/PaxControlGroups + https://www.freedesktop.org/wiki/Software/systemd/PaxControlGroups * Support multiple local RTCs in a sane way @@ -6822,7 +7212,7 @@ CHANGES WITH 38: * Processes with '@' in argv[0][0] are now excluded from the final shut-down killing spree, following the logic explained in: - http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons + https://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons * All processes remaining in a service cgroup when we enter the START or START_PRE states are now killed with @@ -4,7 +4,7 @@ DETAILS: http://0pointer.de/blog/projects/systemd.html WEB SITE: - http://www.freedesktop.org/wiki/Software/systemd + https://www.freedesktop.org/wiki/Software/systemd GIT: git@github.com:systemd/systemd.git @@ -14,7 +14,7 @@ GITWEB: https://github.com/systemd/systemd MAILING LIST: - http://lists.freedesktop.org/mailman/listinfo/systemd-devel + https://lists.freedesktop.org/mailman/listinfo/systemd-devel IRC: #systemd on irc.freenode.org @@ -50,6 +50,11 @@ REQUIREMENTS: CONFIG_PROC_FS CONFIG_FHANDLE (libudev, mount and bind mount handling) + Kernel crypto/hash API + CONFIG_CRYPTO_USER_API_HASH + CONFIG_CRYPTO_HMAC + CONFIG_CRYPTO_SHA256 + udev will fail to work with the legacy sysfs layout: CONFIG_SYSFS_DEPRECATED=n @@ -180,6 +185,7 @@ REQUIREMENTS: - python3-pyparsing - python3-evdev (used by hwdb parsing tests) - strace (used by test/test-functions) + - capsh (optional, used by test-execute) USERS AND GROUPS: Default udev rules use the following standard system group @@ -268,18 +274,13 @@ WARNINGS: requires that /var/run is a symlink to /run. For more information on this issue consult - http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken + https://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken To run systemd under valgrind, compile with VALGRIND defined (e.g. ./configure CPPFLAGS='... -DVALGRIND=1'). Otherwise, false positives will be triggered by code which violates some rules but is actually safe. - Currently, systemd-timesyncd defaults to use the Google NTP - servers if not specified otherwise at configure time. You - really should not ship an OS or device with this default - setting. See DISTRO_PORTING for details. - ENGINEERING AND CONSULTING SERVICES: Kinvolk (https://kinvolk.io) offers professional engineering and consulting services for systemd. Please contact Chris Kühl @@ -5,7 +5,7 @@ ## Details -General information about systemd can be found in the [systemd Wiki](http://www.freedesktop.org/wiki/Software/systemd). +General information about systemd can be found in the [systemd Wiki](https://www.freedesktop.org/wiki/Software/systemd). Information about build requirements are provided in the [README file](../master/README). @@ -17,4 +17,4 @@ Please see our [Contribution Guidelines](../master/.github/CONTRIBUTING.md) for When preparing patches for systemd, please follow our [Coding Style Guidelines](../master/CODING_STYLE). -If you are looking for support, please contact our [mailing list](http://lists.freedesktop.org/mailman/listinfo/systemd-devel) or join our [IRC channel](irc://irc.freenode.org/%23systemd). +If you are looking for support, please contact our [mailing list](https://lists.freedesktop.org/mailman/listinfo/systemd-devel) or join our [IRC channel](irc://irc.freenode.org/%23systemd). @@ -24,6 +24,10 @@ Janitorial Clean-ups: Features: +* sort generated hwdb files alphabetically when we import them, so that git + diffs remain minimal (in particular: the OUI databases we import are not + sorted, and not stable) + * set SystemCallArchitectures=native on all our services * maybe add call sd_journal_set_block_timeout() or so to set SO_SNDTIMEO for @@ -31,6 +35,9 @@ Features: O_NONBLOCK on it. That way people can control if and when to block for logging. +* tighten sd_notify() MAINPID= checks a bit: don't accept foreign PIDs (i.e. + PIDs not managed by the service manager) + * journald: when we recv a log datagram via the native or syslog transports, search for the PID in the active stream connections, and let's make sure to always process the datagrams before the streams. Then, cache client metadata @@ -38,6 +45,10 @@ Features: quickly exiting processes which log as long as they had their own stream connection... +* hostnamed: populate form factor data from a new hwdb database, so that old + yogas can be recognized as "convertible" too, even if they predate the DMI + "convertible" form factor + * Maybe add a small tool invoked early at boot, that adds in or resizes partitions automatically, to be used when the media used is actually larger than the image written onto it is. diff --git a/catalog/systemd.be.catalog.in b/catalog/systemd.be.catalog.in index 5b237f0558..5b1cdf2492 100644 --- a/catalog/systemd.be.catalog.in +++ b/catalog/systemd.be.catalog.in @@ -20,7 +20,7 @@ # Belarusian translation # Фармат каталога апісаны на старонцы -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # For an explanation why we do all this, see https://xkcd.com/1024/ @@ -94,7 +94,7 @@ Documentation: man:core(5) Subject: Новая сесія № @SESSION_ID@ створана для карыстальніка @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Новая сесія з № @SESSION_ID@ створана для карыстальніка @USER_ID@. @@ -104,7 +104,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Сесія № @SESSION_ID@ спынена Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Сесія № @SESSION_ID@ спынена. @@ -112,7 +112,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Даступна новае працоўнае месца № @SEAT_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Новае працоўнае месца № @SEAT_ID@ наладжана і даступна для выкарыстання. @@ -120,7 +120,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Працоўнае месца № @SEAT_ID@ выдалена Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Працоўнае месца № @SEAT_ID@ выдалена і больш не даступна. diff --git a/catalog/systemd.be@latin.catalog.in b/catalog/systemd.be@latin.catalog.in index fc9f7cad16..764432c0dc 100644 --- a/catalog/systemd.be@latin.catalog.in +++ b/catalog/systemd.be@latin.catalog.in @@ -20,7 +20,7 @@ # Belarusian Latin translation # Farmat kataloha apisany na staroncy -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # For an explanation why we do all this, see https://xkcd.com/1024/ @@ -95,7 +95,7 @@ Rekamiendujecca paviedamić ab hetym raspracoŭnikam. Subject: Novaja siesija № @SESSION_ID@ stvorana dlia karystaĺnika @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Novaja siesija z № @SESSION_ID@ stvorana dlia karystaĺnika @USER_ID@. @@ -105,7 +105,7 @@ Lidar hetaj siesii pad № @LEADER@. Subject: Siesija № @SESSION_ID@ spyniena Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Siesija № @SESSION_ID@ spyniena. @@ -113,7 +113,7 @@ Siesija № @SESSION_ID@ spyniena. Subject: Dastupna novaje pracoŭnaje miesca № @SEAT_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Novaje pracoŭnaje miesca № @SEAT_ID@ naladžana i dastupna dlia vykarystannia. @@ -122,7 +122,7 @@ vykarystannia. Subject: Pracoŭnaje miesca № @SEAT_ID@ vydaliena Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Pracoŭnaje miesca № @SEAT_ID@ vydaliena i boĺš nie dastupna. diff --git a/catalog/systemd.bg.catalog.in b/catalog/systemd.bg.catalog.in index 76b0ce8f17..4b6cf118be 100644 --- a/catalog/systemd.bg.catalog.in +++ b/catalog/systemd.bg.catalog.in @@ -19,7 +19,7 @@ # Message catalog for systemd's own messages # The catalog format is documented on -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # For an explanation why we do all this, see https://xkcd.com/1024/ @@ -95,7 +95,7 @@ Documentation: man:core(5) Subject: Създадена е нова сесия № @SESSION_ID@ за потребителя „@USER_ID@“ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat За потребителя „@USER_ID@“ е създадена нова сесия № @SESSION_ID@. @@ -105,7 +105,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Сесия № @SESSION_ID@ приключи Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Сесия № @SESSION_ID@ приключи работа. @@ -113,7 +113,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Налично е ново работно място № @SEAT_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Новото работно място № @SEAT_ID@ е настроено и готово за работа. @@ -121,7 +121,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Работното място № @SEAT_ID@ е премахнато Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Работното място № @SEAT_ID@ вече не е налично. diff --git a/catalog/systemd.catalog.in b/catalog/systemd.catalog.in index cb0ac0ca88..9cd3e6bac3 100644 --- a/catalog/systemd.catalog.in +++ b/catalog/systemd.catalog.in @@ -18,7 +18,7 @@ # Message catalog for systemd's own messages # The catalog format is documented on -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # For an explanation why we do all this, see https://xkcd.com/1024/ @@ -115,7 +115,7 @@ als Fehler dem jeweiligen Hersteller gemeldet werden. Subject: A new session @SESSION_ID@ has been created for user @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat A new session with the ID @SESSION_ID@ has been created for the user @USER_ID@. @@ -125,7 +125,7 @@ The leading process of the session is @LEADER@. Subject: Session @SESSION_ID@ has been terminated Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat A session with the ID @SESSION_ID@ has been terminated. @@ -133,7 +133,7 @@ A session with the ID @SESSION_ID@ has been terminated. Subject: A new seat @SEAT_ID@ is now available Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat A new seat @SEAT_ID@ has been configured and is now available. @@ -141,7 +141,7 @@ A new seat @SEAT_ID@ has been configured and is now available. Subject: Seat @SEAT_ID@ has now been removed Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat A seat @SEAT_ID@ has been removed and is no longer available. diff --git a/catalog/systemd.da.catalog.in b/catalog/systemd.da.catalog.in index bc7d94476f..a5570f47d5 100644 --- a/catalog/systemd.da.catalog.in +++ b/catalog/systemd.da.catalog.in @@ -19,7 +19,7 @@ # Danish translation # The catalog format is documented on -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # For an explanation why we do all this, see https://xkcd.com/1024/ @@ -79,7 +79,7 @@ og burde blive reporteret som en bug til folkene bag Subject: En ny session @SESSION_ID@ er blevet lavet for bruger @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat En ny session med ID @SESSION_ID@ er blevet lavet for brugeren @USER_ID@. @@ -89,7 +89,7 @@ Den ledende process for sessionen er @LEADER@. Subject: Session @SESSION_ID@ er blevet lukket ned Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat En session med ID @SESSION_ID@ er blevet lukket ned. @@ -97,7 +97,7 @@ En session med ID @SESSION_ID@ er blevet lukket ned. Subject: En ny arbejdsstation $SEAT_ID@ er nu tilgængelig Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat En ny arbejdsstation @SEAT_ID@ er blevet konfigureret og er nu tilgængelig. @@ -105,7 +105,7 @@ En ny arbejdsstation @SEAT_ID@ er blevet konfigureret og er nu tilgængelig. Subject: Arbejdsstation @SEAT_ID@ er nu blevet fjernet Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat En arbejdsstation @SEAT_ID@ er blevet fjernet og er ikke længere tilgængelig. diff --git a/catalog/systemd.fr.catalog.in b/catalog/systemd.fr.catalog.in index d69dd0a520..c4b1a81ceb 100644 --- a/catalog/systemd.fr.catalog.in +++ b/catalog/systemd.fr.catalog.in @@ -20,7 +20,7 @@ # French translation # Le format du catalogue de messages est décrit (en anglais) içi : -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog -- f77379a8490b408bbe5f6940505a777b Subject: Le journal a été démarré @@ -96,7 +96,7 @@ incriminé, et cela devrait être notifié à son concepteur comme un défaut (b Subject: Une nouvelle session @SESSION_ID@ a été créée pour l'utilisateur @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Une nouvelle session a été créée pour l'utilisateur @USER_ID@ avec l'identifiant (ID) @SESSION_ID@. @@ -107,7 +107,7 @@ Le processus maître de la session est @LEADER@. Subject: La session @SESSION_ID@ s'est terminée Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat La session d'identifiant (ID) @SESSION_ID@ s'est terminée. @@ -115,7 +115,7 @@ La session d'identifiant (ID) @SESSION_ID@ s'est terminée. Subject: Un nouveau poste (seat) @SEAT_ID@ est disponible Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Un nouveau poste (seat) @SEAT_ID@ a été configuré et est maintenant disponible. @@ -124,7 +124,7 @@ disponible. Subject: Le poste (seat) @SEAT_ID@ a été retiré Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Le poste (seat) @SEAT_ID@ a été retiré et n'est plus disponible. diff --git a/catalog/systemd.hr.catalog.in b/catalog/systemd.hr.catalog.in index 7502aed741..d30e955e28 100644 --- a/catalog/systemd.hr.catalog.in +++ b/catalog/systemd.hr.catalog.in @@ -19,7 +19,7 @@ # Croatian translation # Format kataloga je dokumentiran na -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # Za pojašnjenje zašto ovo radimo, posjetite https://xkcd.com/1024/ @@ -93,7 +93,7 @@ trebalo bi se prijaviti razvijatelju kao greška. Subject: Nova sesija @SESSION_ID@ je stvorena za korisnika @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Nova sesija sa ID @SESSION_ID@ je stvorena za korisnika @USER_ID@. @@ -103,7 +103,7 @@ Glavni proces sesije je @LEADER@. Subject: Sesija @SESSION_ID@ je prekinuta Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Sesija sa ID @SESSION_ID@ je prekinuta. @@ -111,7 +111,7 @@ Sesija sa ID @SESSION_ID@ je prekinuta. Subject: Novo sjedište @SEAT_ID@ je sada dostupno Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Novo sjedište @SEAT_ID@ je podešeno i sada je dostupno. @@ -119,7 +119,7 @@ Novo sjedište @SEAT_ID@ je podešeno i sada je dostupno. Subject: Sjedište @SEAT_ID@ je sada uklonjeno Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Sjedište @SEAT_ID@ je uklonjeno i više nije dostupno. diff --git a/catalog/systemd.hu.catalog.in b/catalog/systemd.hu.catalog.in index f538b7f958..23c1cd44db 100644 --- a/catalog/systemd.hu.catalog.in +++ b/catalog/systemd.hu.catalog.in @@ -19,7 +19,7 @@ # Message catalog for systemd's own messages # The catalog format is documented on -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # For an explanation why we do all this, see https://xkcd.com/1024/ @@ -78,7 +78,7 @@ a szállítója felé kell bejelenteni. Subject: Új munkamenet (@SESSION_ID@) létrehozva, felhasználója: @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Létrejött egy új munkamenet @SESSION_ID@ azonosítóval ezen felhasználóhoz: @USER_ID@. @@ -89,7 +89,7 @@ A munkamenet vezető folyamata: @LEADER@. Subject: Munkamenet (@SESSION_ID@) befejezve Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat A következő azonosítójú munkamenet befejeződött: @SESSION_ID@. @@ -97,7 +97,7 @@ A következő azonosítójú munkamenet befejeződött: @SESSION_ID@. Subject: Elérhető egy új munkaállomás: @SEAT_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Beállításra kerül és használható egy új munkaállomás: @SEAT_ID@. @@ -105,7 +105,7 @@ Beállításra kerül és használható egy új munkaállomás: @SEAT_ID@. Subject: A munkaállomás eltávolítva: @SEAT_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat A munkaállomás el lett távolítva, és már nem érhető el: @SEAT_ID@ diff --git a/catalog/systemd.it.catalog.in b/catalog/systemd.it.catalog.in index 02c35f1f69..208ac2bfdc 100644 --- a/catalog/systemd.it.catalog.in +++ b/catalog/systemd.it.catalog.in @@ -98,7 +98,7 @@ segnalare la troncatura. Subject: La nuova sessione @SESSION_ID@ è stata creata per l'utente @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Una nuova sessione con ID @SESSION_ID@ è stata creata per l'utente @USER_ID@. @@ -108,7 +108,7 @@ Il processo primario della sessione è @LEADER@. Subject: La sessione @SESSION_ID@ è terminata Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat La sessione con ID @SESSION_ID@ è terminata. @@ -116,7 +116,7 @@ La sessione con ID @SESSION_ID@ è terminata. Subject: La nuova postazione @SEAT_ID@ è ora disponibile Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat La nuova postazione @SEAT_ID@ è stata configurata ed è ora disponibile. @@ -124,7 +124,7 @@ La nuova postazione @SEAT_ID@ è stata configurata ed è ora disponibile. Subject: La postazione @SEAT_ID@ è stata rimossa Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat La postazione @SEAT_ID@ è stata rimossa e non è più disponibile. diff --git a/catalog/systemd.ko.catalog.in b/catalog/systemd.ko.catalog.in index 0249cba747..4e8d7008c3 100644 --- a/catalog/systemd.ko.catalog.in +++ b/catalog/systemd.ko.catalog.in @@ -19,7 +19,7 @@ # Korean translation # The catalog format is documented on -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # For an explanation why we do all this, see https://xkcd.com/1024/ # @@ -101,7 +101,7 @@ Documentation: man:core(5) Subject: @USER_ID@ 사용자의 새 @SESSION_ID@ 세션 만듦 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat @USER_ID@ 사용자의 새 @SESSION_ID@ 세션을 만들었습니다. @@ -111,7 +111,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: @SESSION_ID@ 세션 마침 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat @SESSION_ID@ 세션을 끝냈습니다. @@ -119,7 +119,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: 새 @SEAT_ID@ 시트 사용할 수 있음 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat 새 @SEAT_ID@ 시트를 설정했고 사용할 수 있습니다. @@ -127,7 +127,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: @SEAT_ID@ 시트 제거함 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat @SEAT_ID@ 시트를 제거했으며 더이상 사용할 수 없습니다. diff --git a/catalog/systemd.pl.catalog.in b/catalog/systemd.pl.catalog.in index a93c63d0f6..981fefb7b9 100644 --- a/catalog/systemd.pl.catalog.in +++ b/catalog/systemd.pl.catalog.in @@ -20,7 +20,7 @@ # Polish translation # The catalog format is documented on -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # For an explanation why we do all this, see https://xkcd.com/1024/ @@ -106,7 +106,7 @@ gdb(1) będą ostrzegały o skróceniu pliku. Subject: Utworzono nową sesję @SESSION_ID@ dla użytkownika @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Nowa sesja o identyfikatorze @SESSION_ID@ została utworzona dla użytkownika @USER_ID@. @@ -117,7 +117,7 @@ Proces prowadzący sesji: @LEADER@. Subject: Zakończono sesję @SESSION_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Sesja o identyfikatorze @SESSION_ID@ została zakończona. @@ -125,7 +125,7 @@ Sesja o identyfikatorze @SESSION_ID@ została zakończona. Subject: Dostępne jest nowe stanowisko @SEAT_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Nowe stanowisko @SEAT_ID@ zostało skonfigurowane i jest teraz dostępne. @@ -133,7 +133,7 @@ Nowe stanowisko @SEAT_ID@ zostało skonfigurowane i jest teraz dostępne. Subject: Usunięto stanowisko @SEAT_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Stanowisko @SEAT_ID@ zostało usunięte i nie jest już dostępne. diff --git a/catalog/systemd.pt_BR.catalog.in b/catalog/systemd.pt_BR.catalog.in index e461c2b2ba..192fd33c1c 100644 --- a/catalog/systemd.pt_BR.catalog.in +++ b/catalog/systemd.pt_BR.catalog.in @@ -19,7 +19,7 @@ # Catálogo de mensagens para as mensagens do próprio systemd # O formato do catálogo está documentado em -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # Para uma explicação do porquê de fazermos tudo isso, veja # https://xkcd.com/1024/ @@ -79,7 +79,7 @@ deveria ser relatado para seu fabricante como um erro. Subject: A nova sessão @SESSION_ID@ foi criada para usuário o @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Uma nova sessão com o ID @SESSION_ID@ foi criada para o usuário @USER_ID@. @@ -89,7 +89,7 @@ O processo originador da sessão é @LEADER@. Subject: Sessão @SESSION_ID@ foi terminada Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Um sessão com o ID @SESSION_ID@ foi terminada. @@ -97,7 +97,7 @@ Um sessão com o ID @SESSION_ID@ foi terminada. Subject: Um novo seat @SEAT_ID@ está disponível Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Um novo seat @SEAT_ID@ foi configurado e está disponível. @@ -105,7 +105,7 @@ Um novo seat @SEAT_ID@ foi configurado e está disponível. Subject: Seat @SEAT_ID@ foi removido agora Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Um seat @SEAT_ID@ foi removido e não está mais disponível. diff --git a/catalog/systemd.ru.catalog.in b/catalog/systemd.ru.catalog.in index 3ee1ed63c0..367ed89d96 100644 --- a/catalog/systemd.ru.catalog.in +++ b/catalog/systemd.ru.catalog.in @@ -20,7 +20,7 @@ # Russian translation # Формат каталога сообщений описан по ссылке -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # Перед каждым элементом в комментарии указан Subject исходного # сообщения (на английском). @@ -119,7 +119,7 @@ Documentation: man:coredump.conf(5) Subject: Для пользователя @USER_ID@ создан новый сеанс @SESSION_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Для пользователя @USER_ID@ создан новый сеанс с идентификатором @SESSION_ID@. @@ -130,7 +130,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Сеанс @SESSION_ID@ завершен Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Сеанс с идентификатором @SESSION_ID@ завершился. @@ -139,7 +139,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Добавлено новое рабочее место @SEAT_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Новое рабочее место (seat) @SEAT_ID@ полностью настроено и готово к использованию. @@ -149,7 +149,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Рабочее место @SEAT_ID@ отключено Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Рабочее место (seat) @SEAT_ID@ было отключено. diff --git a/catalog/systemd.sr.catalog.in b/catalog/systemd.sr.catalog.in index 06a0ff648c..674eb557b5 100644 --- a/catalog/systemd.sr.catalog.in +++ b/catalog/systemd.sr.catalog.in @@ -19,7 +19,7 @@ # Serbian translation # Формат каталога је документован на -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # Да бисте видели зашто ово радимо, погледајте https://xkcd.com/1024/ @@ -78,7 +78,7 @@ Documentation: man:core(5) Subject: Нова сесија @SESSION_ID@ је направљена за корисника @USER_ID@ Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Нова сесија са ИБ-ом @SESSION_ID@ је направљена за корисника @USER_ID@. @@ -88,7 +88,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Сесија @SESSION_ID@ је окончана Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Сесија са ИБ-ом @SESSION_ID@ је окончана. @@ -96,7 +96,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Ново седиште @SEAT_ID@ је сада доступно Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Ново седиште @SEAT_ID@ је исподешавано и сада је доступно. @@ -104,7 +104,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: Седиште @SEAT_ID@ је сада уклоњено Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat Седиште @SEAT_ID@ је сада уклоњено и више није доступно. diff --git a/catalog/systemd.zh_CN.catalog.in b/catalog/systemd.zh_CN.catalog.in index 13030e14dc..78a8a8ca62 100644 --- a/catalog/systemd.zh_CN.catalog.in +++ b/catalog/systemd.zh_CN.catalog.in @@ -20,7 +20,7 @@ # Simplified Chinese translation # 本 catalog 文档格式被记载在 -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # 如需了解我们为什么做这些工作,请见 https://xkcd.com/1024/ @@ -76,7 +76,7 @@ Documentation: man:core(5) Subject: 一个新会话 @SESSION_ID@ 已为用户 @USER_ID@ 建立 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat 一个 ID 为 @SESSION_ID@ 的新会话已为用户 @USER_ID@ 建立。 @@ -86,7 +86,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: 会话 @SESSION_ID@ 已终止 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat 一个 ID 为 @SESSION_ID@ 的会话已终止。 @@ -94,7 +94,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: 一个新的座位 @SEAT_ID@ 可用 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat 一个新的座位 @SEAT_ID@ 已被配置并已可用。 @@ -102,7 +102,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: 座位 @SEAT_ID@ 已被移除 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat 座位 @SEAT_ID@ 已被移除并不再可用。 diff --git a/catalog/systemd.zh_TW.catalog.in b/catalog/systemd.zh_TW.catalog.in index f7b42fa1c7..d262b88a01 100644 --- a/catalog/systemd.zh_TW.catalog.in +++ b/catalog/systemd.zh_TW.catalog.in @@ -20,7 +20,7 @@ # Traditional Chinese translation # Catalog 的格式記錄於 -# http://www.freedesktop.org/wiki/Software/systemd/catalog +# https://www.freedesktop.org/wiki/Software/systemd/catalog # For an explanation why we do all this, see https://xkcd.com/1024/ @@ -79,7 +79,7 @@ Documentation: man:core(5) Subject: 新的工作階段 @SESSION_ID@ 已為使用者 @USER_ID@ 建立 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat 一個新的工作階段,ID @SESSION_ID@ 已為使用者 @USER_ID@ 建立。 @@ -89,7 +89,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: 工作階段 @SESSION_ID@ 已結束 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat 一個工作階段,ID @SESSION_ID@ 已結束。 @@ -97,7 +97,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: 新的座位 @SEAT_ID@ 可用 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat 一個新的座位 @SEAT_ID@ 已被設定且現在可用。 @@ -105,7 +105,7 @@ Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat Subject: 座位 @SEAT_ID@ 已被移除 Defined-By: systemd Support: %SUPPORT_URL% -Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat +Documentation: https://www.freedesktop.org/wiki/Software/systemd/multiseat 座位 @SEAT_ID@ 已被移除且不再可用。 diff --git a/configure.ac b/configure.ac index ab1d17c531..3835413ad5 100644 --- a/configure.ac +++ b/configure.ac @@ -20,10 +20,10 @@ AC_PREREQ([2.64]) AC_INIT([systemd], - [232], - [http://github.com/systemd/systemd/issues], + [233], + [https://github.com/systemd/systemd/issues], [systemd], - [http://www.freedesktop.org/wiki/Software/systemd]) + [https://www.freedesktop.org/wiki/Software/systemd]) AC_CONFIG_SRCDIR([src/core/main.c]) AC_CONFIG_MACRO_DIR([m4]) @@ -167,6 +167,7 @@ CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ -Werror=implicit-function-declaration \ -Werror=missing-declarations \ -Werror=return-type \ + -Werror=incompatible-pointer-types \ -Werror=format=2 \ -Wstrict-prototypes \ -Wredundant-decls \ @@ -581,7 +582,7 @@ AC_ARG_WITH([support-url], AS_HELP_STRING([--with-support-url=URL], [specify the support URL to show in catalog entries included in systemd]), [SUPPORT_URL="$withval"], - [SUPPORT_URL=http://lists.freedesktop.org/mailman/listinfo/systemd-devel]) + [SUPPORT_URL=https://lists.freedesktop.org/mailman/listinfo/systemd-devel]) AC_SUBST(SUPPORT_URL) @@ -613,6 +614,23 @@ AC_SUBST(FALLBACK_HOSTNAME) AC_DEFINE_UNQUOTED(FALLBACK_HOSTNAME, ["$FALLBACK_HOSTNAME"], [The hostname used if none configured]) # ------------------------------------------------------------------------------ + +AC_ARG_WITH(default-hierarchy, + AS_HELP_STRING([--with-default-hierarchy=MODE], + [default cgroup hierarchy, defaults to "hybrid"]), + [DEFAULT_HIERARCHY="$withval"], + [DEFAULT_HIERARCHY="hybrid"]) + +AS_CASE("$DEFAULT_HIERARCHY", + [legacy], [mode=CGROUP_UNIFIED_NONE], + [hybrid], [mode=CGROUP_UNIFIED_SYSTEMD], + [unified], [mode=CGROUP_UNIFIED_ALL], + AC_MSG_ERROR(Bad default hierarchy mode ${DEFAULT_HIERARCHY})) +AC_DEFINE_UNQUOTED(DEFAULT_HIERARCHY, [$mode], [Default cgroup hierarchy]) +AC_DEFINE_UNQUOTED(DEFAULT_HIERARCHY_NAME, ["$DEFAULT_HIERARCHY"], + [Default cgroup hierarchy as string]) + +# ------------------------------------------------------------------------------ have_xz=no AC_ARG_ENABLE(xz, AS_HELP_STRING([--disable-xz], [disable optional XZ support])) AS_IF([test "x$enable_xz" != "xno"], [ @@ -1041,6 +1059,14 @@ fi AM_CONDITIONAL(ENABLE_TMPFILES, [test "$have_tmpfiles" = "yes"]) # ------------------------------------------------------------------------------ +have_environment_d=no +AC_ARG_ENABLE(environment-d, AS_HELP_STRING([--disable-environment-d], [disable environment.d support])) +if test "x$enable_environment_d" != "xno"; then + have_environment_d=yes +fi +AM_CONDITIONAL(ENABLE_ENVIRONMENT_D, [test "$have_environment_d" = "yes"]) + +# ------------------------------------------------------------------------------ have_sysusers=no AC_ARG_ENABLE(sysusers, AS_HELP_STRING([--disable-sysusers], [disable sysusers support])) if test "x$enable_sysusers" != "xno"; then @@ -1146,10 +1172,7 @@ AC_ARG_WITH(ntp-servers, AS_HELP_STRING([--with-ntp-servers=NTPSERVERS], [space-separated list of default NTP servers]), [NTP_SERVERS="$withval"], - [NTP_SERVERS="time1.google.com time2.google.com time3.google.com time4.google.com" - AC_MSG_WARN([*** Using Google NTP servers. - Do not ship OSes or devices with these default settings. - See DISTRO_PORTING for details!])]) + [NTP_SERVERS="time1.google.com time2.google.com time3.google.com time4.google.com"]) AC_DEFINE_UNQUOTED(NTP_SERVERS, ["$NTP_SERVERS"], [Default NTP Servers]) AC_SUBST(NTP_SERVERS) @@ -1655,25 +1678,27 @@ AC_MSG_RESULT([ vconsole: ${have_vconsole} quotacheck: ${have_quotacheck} tmpfiles: ${have_tmpfiles} + environment.d: ${have_environment_d} sysusers: ${have_sysusers} firstboot: ${have_firstboot} randomseed: ${have_randomseed} backlight: ${have_backlight} rfkill: ${have_rfkill} logind: ${have_logind} - Default KillUserProcesses setting: ${KILL_USER_PROCESSES} + default cgroup hierarchy: ${DEFAULT_HIERARCHY} + default KillUserProcesses setting: ${KILL_USER_PROCESSES} machined: ${have_machined} importd: ${have_importd} hostnamed: ${have_hostnamed} timedated: ${have_timedated} timesyncd: ${have_timesyncd} - Default NTP servers: ${NTP_SERVERS} + default NTP servers: ${NTP_SERVERS} time epoch: ${TIME_EPOCH} localed: ${have_localed} networkd: ${have_networkd} resolved: ${have_resolved} - Default DNS servers: ${DNS_SERVERS} - Default DNSSEC mode: ${DEFAULT_DNSSEC_MODE} + default DNS servers: ${DNS_SERVERS} + default DNSSEC mode: ${DEFAULT_DNSSEC_MODE} coredump: ${have_coredump} polkit: ${have_polkit} efi: ${have_efi} @@ -1712,27 +1737,27 @@ AC_MSG_RESULT([ rootlib dir: ${with_rootlibdir} SysV init scripts: ${SYSTEM_SYSVINIT_PATH} SysV rc?.d directories: ${SYSTEM_SYSVRCND_PATH} - Build Python: ${PYTHON} + build Python: ${PYTHON} PAM modules dir: ${with_pamlibdir} PAM configuration dir: ${with_pamconfdir} D-Bus policy dir: ${with_dbuspolicydir} D-Bus session dir: ${with_dbussessionservicedir} D-Bus system dir: ${with_dbussystemservicedir} - Bash completions dir: ${with_bashcompletiondir} - Zsh completions dir: ${with_zshcompletiondir} - Extra start script: ${RC_LOCAL_SCRIPT_PATH_START} - Extra stop script: ${RC_LOCAL_SCRIPT_PATH_STOP} - Adm group: ${have_adm_group} - Wheel group: ${have_wheel_group} - Debug shell: ${SUSHELL} @ ${DEBUGTTY} + bash completions dir: ${with_bashcompletiondir} + zsh completions dir: ${with_zshcompletiondir} + extra start script: ${RC_LOCAL_SCRIPT_PATH_START} + extra stop script: ${RC_LOCAL_SCRIPT_PATH_STOP} + adm group: ${have_adm_group} + wheel group: ${have_wheel_group} + debug shell: ${SUSHELL} @ ${DEBUGTTY} TTY GID: ${TTY_GID} - Maximum system UID: ${SYSTEM_UID_MAX} - Maximum system GID: ${SYSTEM_GID_MAX} - Certificate root: ${CERTIFICATEROOT} - Support URL: ${SUPPORT_URL} + maximum system UID: ${SYSTEM_UID_MAX} + maximum system GID: ${SYSTEM_GID_MAX} + certificate root: ${CERTIFICATEROOT} + support URL: ${SUPPORT_URL} nobody user name: ${NOBODY_USER_NAME} nobody group name: ${NOBODY_GROUP_NAME} - Fallback hostname: ${FALLBACK_HOSTNAME} + fallback hostname: ${FALLBACK_HOSTNAME} CFLAGS: ${OUR_CFLAGS} ${CFLAGS} CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS} diff --git a/docs/sysvinit/README.in b/docs/sysvinit/README.in index 996402d06b..de5d80d902 100644 --- a/docs/sysvinit/README.in +++ b/docs/sysvinit/README.in @@ -24,4 +24,4 @@ Further reading: man:systemctl(1) man:systemd(1) http://0pointer.de/blog/projects/systemd-for-admins-3.html - http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities + https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index 6bce57305d..2f0dbc9e74 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -356,9 +356,6 @@ OUI:70B3D5660* OUI:70B3D5EFE* ID_OUI_FROM_DATABASE=MEIDEN SYSTEM SOLUTIONS -OUI:70B3D5C60* - ID_OUI_FROM_DATABASE=Aircell Inc - OUI:70B3D5C03* ID_OUI_FROM_DATABASE=XAVi Technologies Corp. @@ -1100,6 +1097,114 @@ OUI:70B3D55D3* OUI:70B3D52AD* ID_OUI_FROM_DATABASE=Opgal Optronic Industries +OUI:70B3D58EC* + ID_OUI_FROM_DATABASE=Rudy Tellert + +OUI:70B3D5CF5* + ID_OUI_FROM_DATABASE=Petring Energietechnik GmbH + +OUI:70B3D5FF7* + ID_OUI_FROM_DATABASE=Cybercom AB + +OUI:70B3D5DCC* + ID_OUI_FROM_DATABASE=Eutron SPA + +OUI:70B3D5269* + ID_OUI_FROM_DATABASE=Gilbarco Veeder-Root + +OUI:70B3D5173* + ID_OUI_FROM_DATABASE=National TeleConsultants LLC + +OUI:70B3D515C* + ID_OUI_FROM_DATABASE=Woods Hole Oceanographic Institution + +OUI:70B3D5CAE* + ID_OUI_FROM_DATABASE=THEMA + +OUI:70B3D55BC* + ID_OUI_FROM_DATABASE=LAMTEC Meß- und Regeltechnik für Feuerungen GmbH & Co. KG + +OUI:70B3D51B8* + ID_OUI_FROM_DATABASE=OES Inc. + +OUI:70B3D585A* + ID_OUI_FROM_DATABASE=BRUSHIES + +OUI:70B3D5FAF* + ID_OUI_FROM_DATABASE=Radig Hard & Software + +OUI:70B3D57A2* + ID_OUI_FROM_DATABASE=Alpha ESS Co., Ltd. + +OUI:70B3D50BC* + ID_OUI_FROM_DATABASE=Practical Software Studio LLC + +OUI:70B3D5724* + ID_OUI_FROM_DATABASE=Quan International Co., Ltd. + +OUI:70B3D553B* + ID_OUI_FROM_DATABASE=Mr.Loop + +OUI:70B3D5EBE* + ID_OUI_FROM_DATABASE=Sierra Pacific Innovations Corp + +OUI:70B3D5103* + ID_OUI_FROM_DATABASE=HANYOUNG NUX CO.,LTD + +OUI:70B3D504A* + ID_OUI_FROM_DATABASE=Gecko Robotics Inc + +OUI:70B3D5040* + ID_OUI_FROM_DATABASE=Savari Inc + +OUI:70B3D592A* + ID_OUI_FROM_DATABASE=Miravue + +OUI:70B3D5063* + ID_OUI_FROM_DATABASE=PoolDigital GmbH & Co. KG + +OUI:70B3D5209* + ID_OUI_FROM_DATABASE=SmartNodes + +OUI:70B3D514C* + ID_OUI_FROM_DATABASE=CRDE + +OUI:70B3D5AB8* + ID_OUI_FROM_DATABASE=HORIBA MEDICAL + +OUI:70B3D5F9E* + ID_OUI_FROM_DATABASE=International Center for Elementary Particle Physics, The University of Tokyo + +OUI:70B3D59C6* + ID_OUI_FROM_DATABASE=Overspeed SARL + +OUI:70B3D507A* + ID_OUI_FROM_DATABASE=ZAO ZEO + +OUI:70B3D506B* + ID_OUI_FROM_DATABASE=U-Tech + +OUI:70B3D5F77* + ID_OUI_FROM_DATABASE=Satcube AB + +OUI:70B3D57A1* + ID_OUI_FROM_DATABASE=Excelfore Corporation + +OUI:70B3D590D* + ID_OUI_FROM_DATABASE=Modtronix Engineering + +OUI:70B3D5C60* + ID_OUI_FROM_DATABASE=Gogo BA + +OUI:70B3D5A73* + ID_OUI_FROM_DATABASE=MobiPromo + +OUI:70B3D5585* + ID_OUI_FROM_DATABASE=Nefteavtomatika + +OUI:70B3D5495* + ID_OUI_FROM_DATABASE=Fiem Industries Ltd. + OUI:70B3D5D60* ID_OUI_FROM_DATABASE=Flintab AB @@ -2153,6 +2258,126 @@ OUI:70B3D57F4* OUI:70B3D5122* ID_OUI_FROM_DATABASE=Henri Systems Holland bv +OUI:70B3D5767* + ID_OUI_FROM_DATABASE=FRANKLIN FRANCE + +OUI:70B3D5465* + ID_OUI_FROM_DATABASE=ENERGISME + +OUI:70B3D5E09* + ID_OUI_FROM_DATABASE=L-3 communications ComCept Division + +OUI:70B3D5A07* + ID_OUI_FROM_DATABASE=IoTrek Technology Private Limited + +OUI:70B3D521D* + ID_OUI_FROM_DATABASE=iRF - Intelligent RF Solutions, LLC + +OUI:70B3D5E9C* + ID_OUI_FROM_DATABASE=ATG UV Technology + +OUI:70B3D539E* + ID_OUI_FROM_DATABASE=Lanmark Controls Inc. + +OUI:70B3D5267* + ID_OUI_FROM_DATABASE=Zehntner Testing Instruments + +OUI:70B3D5C2E* + ID_OUI_FROM_DATABASE=Triax A/S + +OUI:70B3D50EF* + ID_OUI_FROM_DATABASE=Dextera Labs + +OUI:70B3D54C2* + ID_OUI_FROM_DATABASE=hera Laborsysteme GmbH + +OUI:70B3D50A1* + ID_OUI_FROM_DATABASE=PTN Electronics Limited + +OUI:70B3D5AA4* + ID_OUI_FROM_DATABASE=Pullnet Technology,S.L. + +OUI:70B3D5C68* + ID_OUI_FROM_DATABASE=Mini Solution Co. Ltd. + +OUI:70B3D581A* + ID_OUI_FROM_DATABASE=Joehl & Koeferli AG + +OUI:70B3D586E* + ID_OUI_FROM_DATABASE=Profcon AB + +OUI:70B3D50E8* + ID_OUI_FROM_DATABASE=Grossenbacher Systeme AG + +OUI:70B3D59D9* + ID_OUI_FROM_DATABASE=ATX Networks Corp + +OUI:70B3D5348* + ID_OUI_FROM_DATABASE=BÄR Bahnsicherung AG + +OUI:70B3D5A30* + ID_OUI_FROM_DATABASE=SHEN ZHEN HUAWANG TECHNOLOGY CO; LTD + +OUI:70B3D5DFD* + ID_OUI_FROM_DATABASE=Contiweb + +OUI:70B3D5B30* + ID_OUI_FROM_DATABASE=Systolé Hardware B.V. + +OUI:70B3D53BF* + ID_OUI_FROM_DATABASE=Star Electronics GmbH & Co. KG + +OUI:70B3D5745* + ID_OUI_FROM_DATABASE=TMSI LLC + +OUI:70B3D5D1C* + ID_OUI_FROM_DATABASE=Specialised Imaging Limited + +OUI:70B3D5E8E* + ID_OUI_FROM_DATABASE=Macnica Technology + +OUI:70B3D5ADF* + ID_OUI_FROM_DATABASE=Seraphim Optronics Ltd + +OUI:70B3D522C* + ID_OUI_FROM_DATABASE=Hiquel Elektronik- und Anlagenbau GmbH + +OUI:70B3D5DCE* + ID_OUI_FROM_DATABASE=Stahl GmbH + +OUI:70B3D52A2* + ID_OUI_FROM_DATABASE=Visualware, Inc. + +OUI:70B3D5D08* + ID_OUI_FROM_DATABASE=Veeco Instruments + +OUI:70B3D5630* + ID_OUI_FROM_DATABASE=LGE + +OUI:70B3D5873* + ID_OUI_FROM_DATABASE=Vishay Nobel AB + +OUI:70B3D5653* + ID_OUI_FROM_DATABASE=Luxar Tech, Inc. + +OUI:70B3D5F1F* + ID_OUI_FROM_DATABASE=HKC Limited + +OUI:70B3D5AF6* + ID_OUI_FROM_DATABASE=S.C.E. srl + +OUI:70B3D5F37* + ID_OUI_FROM_DATABASE=Mitsubishi Electric Micro-Computer Application Software Co.,Ltd. + +OUI:70B3D58C3* + ID_OUI_FROM_DATABASE=Wyebot, Inc. + +OUI:70B3D542D* + ID_OUI_FROM_DATABASE=RCH Italia SpA + +OUI:70B3D5332* + ID_OUI_FROM_DATABASE=InnoSenT + OUI:70B3D5494* ID_OUI_FROM_DATABASE=Schildknecht AG @@ -2225,9 +2450,6 @@ OUI:70B3D5061* OUI:70B3D5383* ID_OUI_FROM_DATABASE=LPA Excil Electronics -OUI:70B3D59F6* - ID_OUI_FROM_DATABASE=Edgeware AB - OUI:70B3D5504* ID_OUI_FROM_DATABASE=Xsight Systems Ltd. @@ -3209,15 +3431,108 @@ OUI:70B3D516F* OUI:70B3D59C0* ID_OUI_FROM_DATABASE=Schneider Displaytechnik GmbH -OUI:70B3D5149* - ID_OUI_FROM_DATABASE=eleven-x - OUI:70B3D5E98* ID_OUI_FROM_DATABASE=JSC Kaluga Astral OUI:70B3D5443* ID_OUI_FROM_DATABASE=Slot3 GmbH +OUI:70B3D5149* + ID_OUI_FROM_DATABASE=eleven-x + +OUI:70B3D5952* + ID_OUI_FROM_DATABASE=REQUEA + +OUI:70B3D5BAA* + ID_OUI_FROM_DATABASE=Device Solutions Ltd + +OUI:70B3D5C5C* + ID_OUI_FROM_DATABASE=Layer Logic Inc + +OUI:70B3D5F3B* + ID_OUI_FROM_DATABASE=Epdm Pty Ltd + +OUI:70B3D536F* + ID_OUI_FROM_DATABASE=BuddyGuard GmbH + +OUI:70B3D59F6* + ID_OUI_FROM_DATABASE=Edgeware AB + +OUI:70B3D5222* + ID_OUI_FROM_DATABASE=Marioff Corporation Oy + +OUI:70B3D50E3* + ID_OUI_FROM_DATABASE=SinTau SrL + +OUI:70B3D52E5* + ID_OUI_FROM_DATABASE=Fläkt Woods AB + +OUI:70B3D588D* + ID_OUI_FROM_DATABASE=LG Electronics + +OUI:70B3D5A8B* + ID_OUI_FROM_DATABASE=Giant Power Technology Biomedical Corporation + +OUI:70B3D50F1* + ID_OUI_FROM_DATABASE=Beijing One City Science & Technology Co., LTD + +OUI:70B3D5F70* + ID_OUI_FROM_DATABASE=Honeywell + +OUI:70B3D59CE* + ID_OUI_FROM_DATABASE=Terragene S.A + +OUI:70B3D5CEA* + ID_OUI_FROM_DATABASE=Computerwise, Inc. + +OUI:70B3D5F1D* + ID_OUI_FROM_DATABASE=Critical Link LLC + +OUI:70B3D5F05* + ID_OUI_FROM_DATABASE=Motomuto Aps + +OUI:70B3D5FFC* + ID_OUI_FROM_DATABASE=Symetrics Industries d.b.a. Extant Aerospace + +OUI:70B3D530E* + ID_OUI_FROM_DATABASE=Private + +OUI:70B3D54F8* + ID_OUI_FROM_DATABASE=Private + +OUI:70B3D55E0* + ID_OUI_FROM_DATABASE=Hexagon Metrology SAS + +OUI:70B3D5B2B* + ID_OUI_FROM_DATABASE=Vtron Pty Ltd + +OUI:70B3D59D0* + ID_OUI_FROM_DATABASE=RJ45 Technologies + +OUI:70B3D5672* + ID_OUI_FROM_DATABASE=KLEIBER Infrared GmbH + +OUI:70B3D5572* + ID_OUI_FROM_DATABASE=CRDE + +OUI:70B3D5927* + ID_OUI_FROM_DATABASE=LG Electronics + +OUI:70B3D5489* + ID_OUI_FROM_DATABASE=ard sa + +OUI:70B3D52B1* + ID_OUI_FROM_DATABASE=WIXCON Co., Ltd + +OUI:70B3D5B6A* + ID_OUI_FROM_DATABASE=YUYAMA MFG Co.,Ltd + +OUI:70B3D5579* + ID_OUI_FROM_DATABASE=Chelsea Technologies Group Ltd + +OUI:70B3D59B2* + ID_OUI_FROM_DATABASE=CONTINENT, Ltd + OUI:70B3D566B* ID_OUI_FROM_DATABASE=Innitive B.V. @@ -3629,9 +3944,6 @@ OUI:70B3D5010* OUI:70B3D586D* ID_OUI_FROM_DATABASE=Census Digital Incorporated -OUI:70B3D560B* - ID_OUI_FROM_DATABASE=Edgeware AB - OUI:70B3D5ADD* ID_OUI_FROM_DATABASE=GHL Systems Berhad @@ -4253,6 +4565,153 @@ OUI:70B3D5542* OUI:70B3D568E* ID_OUI_FROM_DATABASE=CEA Technologies Pty Ltd +OUI:70B3D51E4* + ID_OUI_FROM_DATABASE=Tecnologix s.r.l. + +OUI:70B3D51C5* + ID_OUI_FROM_DATABASE=ELSAG + +OUI:70B3D5635* + ID_OUI_FROM_DATABASE=Cosylab d.d. + +OUI:70B3D5D84* + ID_OUI_FROM_DATABASE=Sentry360 + +OUI:70B3D575A* + ID_OUI_FROM_DATABASE=Standard Backhaul Communications + +OUI:70B3D5482* + ID_OUI_FROM_DATABASE=Aeryon Labs Inc + +OUI:70B3D5FBF* + ID_OUI_FROM_DATABASE=SenSys (Design Electronics Ltd) + +OUI:70B3D5825* + ID_OUI_FROM_DATABASE=TATTILE SRL + +OUI:70B3D5039* + ID_OUI_FROM_DATABASE=DoWoo Digitech + +OUI:70B3D527E* + ID_OUI_FROM_DATABASE=Mettler Toledo Hi Speed + +OUI:70B3D5D37* + ID_OUI_FROM_DATABASE=Sicon srl + +OUI:70B3D5F83* + ID_OUI_FROM_DATABASE=Tata Communications Ltd. + +OUI:70B3D560B* + ID_OUI_FROM_DATABASE=Edgeware AB + +OUI:70B3D50D9* + ID_OUI_FROM_DATABASE=Brechbuehler AG + +OUI:70B3D537C* + ID_OUI_FROM_DATABASE=Merus Power Dynamics Ltd. + +OUI:70B3D54CF* + ID_OUI_FROM_DATABASE=GREEN HOUSE CO., LTD. + +OUI:70B3D5EF8* + ID_OUI_FROM_DATABASE=DKS Dienstl.ges. f. Komm.anl. d. Stadt- u. Reg.verk. mbH + +OUI:70B3D5D58* + ID_OUI_FROM_DATABASE=Idyllic Engineering Pte Ltd + +OUI:70B3D5954* + ID_OUI_FROM_DATABASE=Dot System S.r.l. + +OUI:70B3D5880* + ID_OUI_FROM_DATABASE=Skopei B.V. + +OUI:70B3D5D40* + ID_OUI_FROM_DATABASE=CRDE + +OUI:70B3D551C* + ID_OUI_FROM_DATABASE=ATX Networks Corp + +OUI:70B3D5511* + ID_OUI_FROM_DATABASE=Next Sight srl + +OUI:70B3D5FBD* + ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme + +OUI:70B3D5FA7* + ID_OUI_FROM_DATABASE=Nordson Corporation + +OUI:70B3D585E* + ID_OUI_FROM_DATABASE=XLOGIC srl + +OUI:70B3D531C* + ID_OUI_FROM_DATABASE=FINANCIERE DE L'OMBREE (eolane) + +OUI:70B3D5C41* + ID_OUI_FROM_DATABASE=Merlin CSI + +OUI:70B3D5902* + ID_OUI_FROM_DATABASE=Unlimiterhear co.,ltd. taiwan branch + +OUI:70B3D5AD1* + ID_OUI_FROM_DATABASE=Sensile Technologies SA + +OUI:70B3D5637* + ID_OUI_FROM_DATABASE=INEO-SENSE + +OUI:70B3D5397* + ID_OUI_FROM_DATABASE=Guangxi Hunter Information Industry Co.,Ltd + +OUI:70B3D5378* + ID_OUI_FROM_DATABASE=synchrotron SOLEIL + +OUI:70B3D57B2* + ID_OUI_FROM_DATABASE=Rail Power Systems GmbH + +OUI:70B3D5F12* + ID_OUI_FROM_DATABASE=Incoil Induktion AB + +OUI:70B3D5997* + ID_OUI_FROM_DATABASE=ProTom International + +OUI:70B3D5288* + ID_OUI_FROM_DATABASE=Bresslergroup + +OUI:70B3D54BE* + ID_OUI_FROM_DATABASE=GY-FX SAS + +OUI:70B3D510F* + ID_OUI_FROM_DATABASE=neQis + +OUI:70B3D598C* + ID_OUI_FROM_DATABASE=University of Wisconsin Madison - Department of High Energy Physics + +OUI:70B3D5E04* + ID_OUI_FROM_DATABASE=Combilent + +OUI:70B3D5022* + ID_OUI_FROM_DATABASE=Ravelin Ltd + +OUI:70B3D5135* + ID_OUI_FROM_DATABASE=DORLET SAU + +OUI:70B3D5FF1* + ID_OUI_FROM_DATABASE=Data Strategy Limited + +OUI:70B3D5002* + ID_OUI_FROM_DATABASE=Gogo BA + +OUI:70B3D50B0* + ID_OUI_FROM_DATABASE=Raven Systems Design, Inc + +OUI:70B3D5596* + ID_OUI_FROM_DATABASE=Mencom Corporation + +OUI:70B3D5138* + ID_OUI_FROM_DATABASE=SMITEC S.p.A. + +OUI:70B3D517A* + ID_OUI_FROM_DATABASE=Gencoa Ltd + OUI:70B3D58AB* ID_OUI_FROM_DATABASE=EMAC, Inc. @@ -5258,6 +5717,141 @@ OUI:70B3D5FF4* OUI:70B3D5760* ID_OUI_FROM_DATABASE=QUALITTEQ LLC +OUI:70B3D5272* + ID_OUI_FROM_DATABASE=TELECOM SANTE + +OUI:70B3D520D* + ID_OUI_FROM_DATABASE=Engage Technologies + +OUI:70B3D5D55* + ID_OUI_FROM_DATABASE=WM Design s.r.o + +OUI:70B3D5523* + ID_OUI_FROM_DATABASE=Tibit Communications + +OUI:70B3D5E67* + ID_OUI_FROM_DATABASE=APPLIED PROCESSING + +OUI:70B3D5241* + ID_OUI_FROM_DATABASE=Bolide Technology Group, Inc. + +OUI:70B3D5D25* + ID_OUI_FROM_DATABASE=ENGenesis + +OUI:70B3D54A9* + ID_OUI_FROM_DATABASE=WARECUBE,INC + +OUI:70B3D52F8* + ID_OUI_FROM_DATABASE=Tunstall A/S + +OUI:70B3D50A3* + ID_OUI_FROM_DATABASE=Solace Systems Inc. + +OUI:70B3D5FC2* + ID_OUI_FROM_DATABASE=HUNTER LIBERTY CORPORATION + +OUI:70B3D561C* + ID_OUI_FROM_DATABASE=Earth Works + +OUI:70B3D56EA* + ID_OUI_FROM_DATABASE=Edgeware AB + +OUI:70B3D5A05* + ID_OUI_FROM_DATABASE=Transas Marine Limited + +OUI:70B3D5AA6* + ID_OUI_FROM_DATABASE=Proximus + +OUI:70B3D55E5* + ID_OUI_FROM_DATABASE=HAIYANG OLIX CO.,LTD. + +OUI:70B3D5E2C* + ID_OUI_FROM_DATABASE=Fourth Frontier Technologies Private Limited + +OUI:70B3D51D4* + ID_OUI_FROM_DATABASE=Brinkmann Audio GmbH + +OUI:70B3D55CA* + ID_OUI_FROM_DATABASE=ACD Elekronik GmbH + +OUI:70B3D5427* + ID_OUI_FROM_DATABASE=Key Chemical & Equipment Company + +OUI:70B3D5753* + ID_OUI_FROM_DATABASE=HCH. Kündig & CIE. AG + +OUI:70B3D5A18* + ID_OUI_FROM_DATABASE=Embedded Systems Lukasz Panasiuk + +OUI:70B3D50C2* + ID_OUI_FROM_DATABASE=LOOK EASY INTERNATIONAL LIMITED + +OUI:70B3D51DE* + ID_OUI_FROM_DATABASE=DYCEC, S.A. + +OUI:70B3D516C* + ID_OUI_FROM_DATABASE=OCEAN + +OUI:70B3D5778* + ID_OUI_FROM_DATABASE=Lumacron Technology Ltd. + +OUI:70B3D505D* + ID_OUI_FROM_DATABASE=KOMS Co.,Ltd. + +OUI:70B3D5EC8* + ID_OUI_FROM_DATABASE=Viko Elektrik-Elektronik A.Ş. + +OUI:70B3D53F0* + ID_OUI_FROM_DATABASE=Intervala + +OUI:70B3D5B1A* + ID_OUI_FROM_DATABASE=Aaronia AG + +OUI:70B3D5BD1* + ID_OUI_FROM_DATABASE=CableLabs + +OUI:70B3D5F0D* + ID_OUI_FROM_DATABASE=MeQ Inc. + +OUI:70B3D5215* + ID_OUI_FROM_DATABASE=Dataspeed Inc + +OUI:70B3D5115* + ID_OUI_FROM_DATABASE=Welltec Corp. + +OUI:70B3D5C45* + ID_OUI_FROM_DATABASE=Stiebel Eltron GmbH + +OUI:70B3D5B56* + ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L. + +OUI:70B3D5911* + ID_OUI_FROM_DATABASE=Equatel + +OUI:70B3D5661* + ID_OUI_FROM_DATABASE=DesignA Electronics Limited + +OUI:70B3D5011* + ID_OUI_FROM_DATABASE=Sumer Data S.L + +OUI:70B3D52C2* + ID_OUI_FROM_DATABASE=Quantum Detectors + +OUI:70B3D5BF3* + ID_OUI_FROM_DATABASE=CG-WIRELESS + +OUI:70B3D59A1* + ID_OUI_FROM_DATABASE=ITS Industrial Turbine Services GmbH + +OUI:70B3D5861* + ID_OUI_FROM_DATABASE=KST technology + +OUI:70B3D5442* + ID_OUI_FROM_DATABASE=Blair Companies + +OUI:70B3D5C74* + ID_OUI_FROM_DATABASE=Qtechnology A/S + OUI:1C8776D* ID_OUI_FROM_DATABASE=Qivivo @@ -5690,9 +6284,6 @@ OUI:78CA83E* OUI:38B8EBB* ID_OUI_FROM_DATABASE=ExaScaler Inc. -OUI:38FDFEC* - ID_OUI_FROM_DATABASE=New Garden Co., Ltd. - OUI:38FDFE5* ID_OUI_FROM_DATABASE=CaptiveAire Systems Inc. @@ -6014,6 +6605,96 @@ OUI:8CC8F4C* OUI:40F385D* ID_OUI_FROM_DATABASE=Digital Bros S.p.A. +OUI:40F3854* + ID_OUI_FROM_DATABASE=Embedded IQ + +OUI:40F3859* + ID_OUI_FROM_DATABASE=Fast Precision Technologies Co. Ltd. + +OUI:1CA0D32* + ID_OUI_FROM_DATABASE=NovTech, Inc. + +OUI:40F3850* + ID_OUI_FROM_DATABASE=SubPac + +OUI:38FDFEC* + ID_OUI_FROM_DATABASE=New Garden Co., Ltd. + +OUI:1CA0D3E* + ID_OUI_FROM_DATABASE=Exicom Tele-Systems Ltd. + +OUI:A411630* + ID_OUI_FROM_DATABASE=Adetel Equipment + +OUI:A411637* + ID_OUI_FROM_DATABASE=SHENZHEN YIWANJIA INFORMATION TECHNOLOGY CO.,LTD + +OUI:144FD72* + ID_OUI_FROM_DATABASE=FedEx Services OTI + +OUI:144FD79* + ID_OUI_FROM_DATABASE=Emerson Network Power (India) Pvt. Ltd. + +OUI:144FD7D* + ID_OUI_FROM_DATABASE=Shanghai B&A Technology Co., Ltd + +OUI:144FD73* + ID_OUI_FROM_DATABASE=Qingdao Wodatong Electronics Co., Ltd. + +OUI:98AAFC0* + ID_OUI_FROM_DATABASE=Dalian Eastern Display Co., Ltd. + +OUI:98AAFC9* + ID_OUI_FROM_DATABASE=BEAM Authentic + +OUI:98AAFCE* + ID_OUI_FROM_DATABASE=Comarch S.A. + +OUI:98AAFC8* + ID_OUI_FROM_DATABASE=Beijing Tiandi-Marco Electro-Hydraulic Control System Company Ltd. + +OUI:98AAFCC* + ID_OUI_FROM_DATABASE=dots Inc. + +OUI:08ED026* + ID_OUI_FROM_DATABASE=SANGO ELECTRONICS CO + +OUI:08ED023* + ID_OUI_FROM_DATABASE=Jiangsu Logread Network Technology Co., LTD. + +OUI:08ED024* + ID_OUI_FROM_DATABASE=Fio Corporation + +OUI:60D7E3D* + ID_OUI_FROM_DATABASE=Quantronix, Inc. + +OUI:60D7E36* + ID_OUI_FROM_DATABASE=Ameli s.r.l. + +OUI:60D7E3B* + ID_OUI_FROM_DATABASE=Nextivity + +OUI:60D7E30* + ID_OUI_FROM_DATABASE=Avalun + +OUI:F023B98* + ID_OUI_FROM_DATABASE=G3 TECHNOLOGIES< INC + +OUI:F023B9E* + ID_OUI_FROM_DATABASE=Domotz Ltd + +OUI:F023B92* + ID_OUI_FROM_DATABASE=Raysgem Electronics and Technology Co.Ltd + +OUI:F023B95* + ID_OUI_FROM_DATABASE=Audeara Pty. Ltd. + +OUI:8C147DC* + ID_OUI_FROM_DATABASE=Reynaers Aluminium + +OUI:8C147D0* + ID_OUI_FROM_DATABASE=Nio + OUI:1C8776C* ID_OUI_FROM_DATABASE=Strone Technology @@ -6785,6 +7466,78 @@ OUI:8CC8F4A* OUI:40F3856* ID_OUI_FROM_DATABASE=Lennox International Incorporated +OUI:40F3855* + ID_OUI_FROM_DATABASE=KATO ENGINEERING INC. + +OUI:1CA0D35* + ID_OUI_FROM_DATABASE=Dynamic Connect (Suzhou) Hi-Tech Electronic Co.,Ltd. + +OUI:1CA0D33* + ID_OUI_FROM_DATABASE=SAVELEC + +OUI:1CA0D37* + ID_OUI_FROM_DATABASE=Private + +OUI:A411634* + ID_OUI_FROM_DATABASE=AlterG, Inc. + +OUI:A411631* + ID_OUI_FROM_DATABASE=INTER CONTROL Hermann Köhler Elektrik GmbH & Co.KG + +OUI:144FD77* + ID_OUI_FROM_DATABASE=Shenzhen V-Streaming Technology Co., Ltd. + +OUI:144FD7A* + ID_OUI_FROM_DATABASE=Unirobot Corporation + +OUI:98AAFC1* + ID_OUI_FROM_DATABASE=SURTEC + +OUI:08ED028* + ID_OUI_FROM_DATABASE=HANTAS CO., LTD. + +OUI:08ED027* + ID_OUI_FROM_DATABASE=Eleven Engineering Incorporated + +OUI:08ED022* + ID_OUI_FROM_DATABASE=TES Touch Embedded Solutions Inc. + +OUI:08ED02E* + ID_OUI_FROM_DATABASE=Telstra Corporation Limited + +OUI:60D7E3C* + ID_OUI_FROM_DATABASE=Zhejiang Send Intelligent Technology,Ltd + +OUI:60D7E38* + ID_OUI_FROM_DATABASE=HindlePower, Inc + +OUI:60D7E3A* + ID_OUI_FROM_DATABASE=Wilderness Labs Inc. + +OUI:60D7E31* + ID_OUI_FROM_DATABASE=Elap s.r.l. + +OUI:04714B1* + ID_OUI_FROM_DATABASE=uAvionix Corporation + +OUI:04714B2* + ID_OUI_FROM_DATABASE=Shenzhen WayOS Technology Crop., Ltd. + +OUI:04714B8* + ID_OUI_FROM_DATABASE=Energport Inc + +OUI:8C147D5* + ID_OUI_FROM_DATABASE=Unwired Networks + +OUI:F023B94* + ID_OUI_FROM_DATABASE=EZVIS LIMITED + +OUI:F023B9A* + ID_OUI_FROM_DATABASE=annapurnalabs + +OUI:8C147D2* + ID_OUI_FROM_DATABASE=Agilent S.p.A + OUI:1C87765* ID_OUI_FROM_DATABASE=Zhuhai MYZR Technology Co.,Ltd @@ -7505,9 +8258,6 @@ OUI:AC64DDD* OUI:AC64DD0* ID_OUI_FROM_DATABASE=Jia-Teng -OUI:4CE1731* - ID_OUI_FROM_DATABASE=Datastorm Technologies Inc. - OUI:4CE1733* ID_OUI_FROM_DATABASE=outpaceIO @@ -7580,6 +8330,93 @@ OUI:8CC8F48* OUI:8CC8F4E* ID_OUI_FROM_DATABASE=Evaporcool Solutions +OUI:40F385B* + ID_OUI_FROM_DATABASE=URMET Home & Building Solutions Pty Ltd + +OUI:40F3858* + ID_OUI_FROM_DATABASE=Teleepoch Ltd + +OUI:1CA0D3B* + ID_OUI_FROM_DATABASE=Guang Dong He Zheng Network Technology Co.,Ltd + +OUI:1CA0D3D* + ID_OUI_FROM_DATABASE=ERATO (HK) Corporation Limited + +OUI:1CA0D3A* + ID_OUI_FROM_DATABASE=DSM Messtechnik GmbH + +OUI:1CA0D38* + ID_OUI_FROM_DATABASE=Desarrollos y Soluciones Guinea I+D S.L. + +OUI:A411638* + ID_OUI_FROM_DATABASE=Dspread Technology (Beijing) Inc. + +OUI:A411639* + ID_OUI_FROM_DATABASE=accesso Technology Group + +OUI:A41163A* + ID_OUI_FROM_DATABASE=ISE GmbH + +OUI:A411635* + ID_OUI_FROM_DATABASE=Carbon, Inc. + +OUI:4CE1731* + ID_OUI_FROM_DATABASE=Nexoforge Inc. + +OUI:144FD70* + ID_OUI_FROM_DATABASE=annapurnalabs + +OUI:144FD75* + ID_OUI_FROM_DATABASE=FLS FINLAND OY + +OUI:144FD74* + ID_OUI_FROM_DATABASE=Red Technology Limited + +OUI:98AAFCD* + ID_OUI_FROM_DATABASE=MCS Micronic Computer Systeme GmbH + +OUI:98AAFC7* + ID_OUI_FROM_DATABASE=Shenzhen Hubsan Technology Co.,LTD. + +OUI:08ED02C* + ID_OUI_FROM_DATABASE=Guard RFID Solutions + +OUI:08ED021* + ID_OUI_FROM_DATABASE=Imperx, Inc + +OUI:60D7E34* + ID_OUI_FROM_DATABASE=Hemisphere GNSS + +OUI:60D7E37* + ID_OUI_FROM_DATABASE=Phase One A/S + +OUI:60D7E33* + ID_OUI_FROM_DATABASE=SKS Automaatio oy + +OUI:60D7E3E* + ID_OUI_FROM_DATABASE=HuBDIC CO.,LTD + +OUI:04714BB* + ID_OUI_FROM_DATABASE=DIGIBEST TECHNOLOGY CO., LTD. + +OUI:04714B6* + ID_OUI_FROM_DATABASE=Armstrong Fluid Technology + +OUI:04714B4* + ID_OUI_FROM_DATABASE=Apparatebau Gauting GmbH + +OUI:04714BE* + ID_OUI_FROM_DATABASE=Gimso Mobile Ltd + +OUI:F023B90* + ID_OUI_FROM_DATABASE=Aquametro AG + +OUI:F023B99* + ID_OUI_FROM_DATABASE=Emu Technology + +OUI:F023B91* + ID_OUI_FROM_DATABASE=Ubiant + OUI:1C8776B* ID_OUI_FROM_DATABASE=Hekatron Vertriebs GmbH @@ -8420,6 +9257,87 @@ OUI:8CC8F45* OUI:8CC8F43* ID_OUI_FROM_DATABASE=TOHO DENKI IND.CO.,LTD +OUI:40F385A* + ID_OUI_FROM_DATABASE=Creanord + +OUI:40F3857* + ID_OUI_FROM_DATABASE=PALAZZETTI LELIO SPA + +OUI:1CA0D34* + ID_OUI_FROM_DATABASE=NPO TELECOM JSC + +OUI:1CA0D30* + ID_OUI_FROM_DATABASE=OOO Tekhnotronika + +OUI:1CA0D3C* + ID_OUI_FROM_DATABASE=LYT inc. + +OUI:1CA0D39* + ID_OUI_FROM_DATABASE=Cirque Audio Technology Co., Ltd + +OUI:1CA0D31* + ID_OUI_FROM_DATABASE=Jabil circuit italia srl + +OUI:A41163B* + ID_OUI_FROM_DATABASE=Moog Music Inc. + +OUI:A41163D* + ID_OUI_FROM_DATABASE=SHENZHEN ZHISHI TECHNOLOGY CO., LTD. + +OUI:A411632* + ID_OUI_FROM_DATABASE=Allgo Tech. (Beijing) Co.,Ltd + +OUI:144FD7C* + ID_OUI_FROM_DATABASE=D&S Cable Industries (HK) Limited + +OUI:144FD7B* + ID_OUI_FROM_DATABASE=Arkus-ST Ltd + +OUI:98AAFCA* + ID_OUI_FROM_DATABASE=SENKO Co.,Ltd. + +OUI:98AAFC6* + ID_OUI_FROM_DATABASE=Mekotronics Co., Ltd + +OUI:08ED029* + ID_OUI_FROM_DATABASE=Savox Communications + +OUI:08ED02B* + ID_OUI_FROM_DATABASE=Szok Energy and Communication Co., Ltd. + +OUI:60D7E39* + ID_OUI_FROM_DATABASE=LongSung Technology (Shanghai) Co.,Ltd. + +OUI:04714BC* + ID_OUI_FROM_DATABASE=KittyHawk Corporation + +OUI:04714B7* + ID_OUI_FROM_DATABASE=Omylis Pte Ltd + +OUI:04714B5* + ID_OUI_FROM_DATABASE=Bureau Electronique Appliquee + +OUI:04714B0* + ID_OUI_FROM_DATABASE=Neurio Technology Inc. + +OUI:F023B9B* + ID_OUI_FROM_DATABASE=Q Core Medical Ltd + +OUI:F023B9D* + ID_OUI_FROM_DATABASE=Private + +OUI:F023B96* + ID_OUI_FROM_DATABASE=Xiamen Jinhaode Electronic Co.,Ltd + +OUI:F023B9C* + ID_OUI_FROM_DATABASE=Shenzhen Lachesis Mhealth Co., Ltd. + +OUI:8C147DA* + ID_OUI_FROM_DATABASE=Bluemega Document & Print Services + +OUI:8C147D1* + ID_OUI_FROM_DATABASE=Private + OUI:1C87740* ID_OUI_FROM_DATABASE=Philips Personal Health Solutions @@ -8861,9 +9779,6 @@ OUI:38FDFEB* OUI:38FDFE4* ID_OUI_FROM_DATABASE=New Telecom Solutions LLC -OUI:38FDFE9* - ID_OUI_FROM_DATABASE=OOO Group of Industrial Technologies - OUI:5CF2860* ID_OUI_FROM_DATABASE=Hangzhou Signwei Electronics Technology Co., Ltd @@ -9122,6 +10037,108 @@ OUI:8CC8F44* OUI:40F3852* ID_OUI_FROM_DATABASE=Beijing Zongheng Electro-Mechanical Technology Development Co. +OUI:40F3853* + ID_OUI_FROM_DATABASE=IntelliDesign Pty Ltd + +OUI:40F3851* + ID_OUI_FROM_DATABASE=Johnson Matthey + +OUI:40F385C* + ID_OUI_FROM_DATABASE=Clixxo Broadband Private Limited + +OUI:40F385E* + ID_OUI_FROM_DATABASE=BBB Inc. + +OUI:1CA0D36* + ID_OUI_FROM_DATABASE=Intertecno SRL NISUTA + +OUI:A411636* + ID_OUI_FROM_DATABASE=Beijing XiaoRui Technology Co., Ltd + +OUI:A411633* + ID_OUI_FROM_DATABASE=Pax + +OUI:A41163C* + ID_OUI_FROM_DATABASE=Viloc + +OUI:A41163E* + ID_OUI_FROM_DATABASE=tinylogics + +OUI:144FD78* + ID_OUI_FROM_DATABASE=NPort Networks Inc., + +OUI:144FD76* + ID_OUI_FROM_DATABASE=i-SENS, Inc. + +OUI:144FD71* + ID_OUI_FROM_DATABASE=Zehnder Group AG + +OUI:144FD7E* + ID_OUI_FROM_DATABASE=Edan Instruments, Inc. + +OUI:98AAFC5* + ID_OUI_FROM_DATABASE=SPM Instrument AB + +OUI:98AAFC2* + ID_OUI_FROM_DATABASE=Shenzhen UniStrong Science & Technology Co., Ltd + +OUI:38FDFE9* + ID_OUI_FROM_DATABASE=OOO Group of Industrial Technologies + +OUI:98AAFC4* + ID_OUI_FROM_DATABASE=RPE RADICO + +OUI:98AAFC3* + ID_OUI_FROM_DATABASE=Nexus Electrical(Jiaxing) Limited + +OUI:98AAFCB* + ID_OUI_FROM_DATABASE=Resonant Systems Inc. + +OUI:08ED025* + ID_OUI_FROM_DATABASE=Vigitron Inc. + +OUI:08ED02D* + ID_OUI_FROM_DATABASE=Origami Energy Ltd + +OUI:08ED020* + ID_OUI_FROM_DATABASE=D2SLink Systems + +OUI:08ED02A* + ID_OUI_FROM_DATABASE=Victiana SRL + +OUI:60D7E35* + ID_OUI_FROM_DATABASE=Revol Technologies inc + +OUI:60D7E32* + ID_OUI_FROM_DATABASE=Novo innovations Ltd + +OUI:04714B3* + ID_OUI_FROM_DATABASE=Griesser Electronic AG + +OUI:04714B9* + ID_OUI_FROM_DATABASE=Lighthouse AI, Inc + +OUI:04714BD* + ID_OUI_FROM_DATABASE=Shenzhen BoClouds Technology Co.,Ltd. + +OUI:04714BA* + ID_OUI_FROM_DATABASE=Observables, Inc. + +OUI:F023B97* + ID_OUI_FROM_DATABASE=Transcend Building Automation control network corporation + +OUI:F023B93* + ID_OUI_FROM_DATABASE=BSP RUS Ltd. + +OUI:8C147DD* + ID_OUI_FROM_DATABASE=Shenzhen Lanxus technology Co. Ltd. + +OUI:8C147D3* + ID_OUI_FROM_DATABASE=Remotec Technology Limited + +OUI:8C147D4* + ID_OUI_FROM_DATABASE=Nanjing bilian information Technology Co.,Ltd. + OUI:E043DB* ID_OUI_FROM_DATABASE=Shenzhen ViewAt Technology Co.,Ltd. @@ -9371,12 +10388,6 @@ OUI:BC7670* OUI:24DBAC* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:BC3AEA* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - -OUI:E8BBA8* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:0021E8* ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. @@ -9629,30 +10640,6 @@ OUI:781DBA* OUI:001E10* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:B0ADAA* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:10CDAE* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:50CD22* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:FCA841* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:3CB15B* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:C8F406* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:2CF4C5* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:7038EE* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:88F031* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -10577,9 +11564,6 @@ OUI:3C46D8* OUI:6C0273* ID_OUI_FROM_DATABASE=Shenzhen Jin Yun Video Equipment Co., Ltd. -OUI:2CFAA2* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:F0761C* ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD. @@ -11369,9 +12353,6 @@ OUI:48F230* OUI:B0C95B* ID_OUI_FROM_DATABASE=Beijing Symtech CO.,LTD -OUI:881544* - ID_OUI_FROM_DATABASE=Meraki, Inc. - OUI:DCA989* ID_OUI_FROM_DATABASE=MACANDC @@ -17159,9 +18140,6 @@ OUI:00089D* OUI:000890* ID_OUI_FROM_DATABASE=AVILINKS SA -OUI:000889* - ID_OUI_FROM_DATABASE=Echostar Technologies Corp - OUI:000884* ID_OUI_FROM_DATABASE=Index Braille AB @@ -18509,9 +19487,6 @@ OUI:00D00E* OUI:00D055* ID_OUI_FROM_DATABASE=KATHREIN-WERKE KG -OUI:00D095* - ID_OUI_FROM_DATABASE=Alcatel-Lucent, Enterprise Business Group - OUI:00D000* ID_OUI_FROM_DATABASE=FERRAN SCIENTIFIC, INC. @@ -20363,9 +21338,6 @@ OUI:000FB0* OUI:1C7508* ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD. -OUI:8C0EE3* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:3829DD* ID_OUI_FROM_DATABASE=ONvocal Inc @@ -20630,9 +21602,6 @@ OUI:6487D7* OUI:00E098* ID_OUI_FROM_DATABASE=AboCom -OUI:F0A225* - ID_OUI_FROM_DATABASE=Private - OUI:0000B1* ID_OUI_FROM_DATABASE=Alpha Micro @@ -20804,18 +21773,6 @@ OUI:E0CBEE* OUI:64B853* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:988389* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:244B03* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:FC8F90* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:1816C9* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:F4428F* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -20864,9 +21821,6 @@ OUI:D059E4* OUI:64B310* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:78ABBB* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:000B3B* ID_OUI_FROM_DATABASE=devolo AG @@ -20990,9 +21944,6 @@ OUI:246968* OUI:8CA2FD* ID_OUI_FROM_DATABASE=Starry, Inc. -OUI:14BB6E* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:AC61EA* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -21065,9 +22016,6 @@ OUI:D8803C* OUI:703C03* ID_OUI_FROM_DATABASE=RadiAnt Co.,Ltd -OUI:F0D2F1* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:583277* ID_OUI_FROM_DATABASE=Reliance Communications LLC @@ -21137,9 +22085,6 @@ OUI:001706* OUI:30F6B9* ID_OUI_FROM_DATABASE=Ecocentric Energy -OUI:1C3ADE* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:004268* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -21713,9 +22658,6 @@ OUI:00B0B3* OUI:14825B* ID_OUI_FROM_DATABASE=Hefei Radio Communication Technology Co., Ltd -OUI:00549F* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:00562B* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -21839,156 +22781,9 @@ OUI:24E43F* OUI:A00460* ID_OUI_FROM_DATABASE=NETGEAR -OUI:946269* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:D40598* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:78719C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:E0B70A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:C83FB4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:207355* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:900DCB* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:14CFE2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0015D0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:E86D52* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:3C438E* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:90B134* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:20E564* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:40B7F3* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:94CCB9* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00ACE0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:3C36E4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0000C5* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:D039B3* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:8C7F3B* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:903EAB* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:CCA462* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DCD* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DD4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DCE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0050E3* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00080E* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00159A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00192C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:D40AA9* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:384C90* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:44AAF5* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:7085C6* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:D0E54D* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:B4F2E8* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:FC8E7E* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:005094* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002143* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0023EE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:64ED57* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0023A3* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:F87B7A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0025F1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001A66* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0018C0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001E46* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001ADE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0023AF* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:240AC4* ID_OUI_FROM_DATABASE=Espressif Inc. -OUI:5856E8* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:E4C1F1* ID_OUI_FROM_DATABASE=SHENZHEN SPOTMAU INFORMATION TECHNOLIGY CO., Ltd @@ -22382,9 +23177,6 @@ OUI:A4D9A4* OUI:484D7E* ID_OUI_FROM_DATABASE=Dell Inc. -OUI:8871E5* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:F4B549* ID_OUI_FROM_DATABASE=Xiamen Yeastar Information Technology Co., Ltd. @@ -22427,9 +23219,6 @@ OUI:C413E2* OUI:F09CE9* ID_OUI_FROM_DATABASE=Aerohive Networks Inc. -OUI:48D343* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:CCC5EF* ID_OUI_FROM_DATABASE=Co-Comm Servicios Telecomunicaciones S.L. @@ -22493,12 +23282,6 @@ OUI:1CEEC9* OUI:4CB81C* ID_OUI_FROM_DATABASE=SAM Electronics GmbH -OUI:F83F51* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:6C5C14* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:2CDCAD* ID_OUI_FROM_DATABASE=Wistron Neweb Corporation @@ -22568,9 +23351,6 @@ OUI:F015B9* OUI:70700D* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:E02202* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:24A7DC* ID_OUI_FROM_DATABASE=BSkyB Ltd @@ -22634,9 +23414,6 @@ OUI:089E08* OUI:00014F* ID_OUI_FROM_DATABASE=Adtran Inc -OUI:D8E0E1* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:045D4B* ID_OUI_FROM_DATABASE=Sony Corporation @@ -22685,9 +23462,6 @@ OUI:A49B13* OUI:542F8A* ID_OUI_FROM_DATABASE=TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO -OUI:6049C1* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:DCC64B* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD @@ -22703,6 +23477,540 @@ OUI:6854C1* OUI:887873* ID_OUI_FROM_DATABASE=Intel Corporate +OUI:6C750D* + ID_OUI_FROM_DATABASE=WiFiSONG + +OUI:E45D51* + ID_OUI_FROM_DATABASE=SFR + +OUI:346E9D* + ID_OUI_FROM_DATABASE=Ericsson AB + +OUI:B816DB* + ID_OUI_FROM_DATABASE=CHANT SINCERE CO.,LTD + +OUI:D461FE* + ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited + +OUI:54E1AD* + ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd + +OUI:94F551* + ID_OUI_FROM_DATABASE=Cadi Scientific Pte Ltd + +OUI:BC452E* + ID_OUI_FROM_DATABASE=Knowledge Development for POF S.L. + +OUI:E8D11B* + ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP + +OUI:44032C* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:14987D* + ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. + +OUI:D4CF37* + ID_OUI_FROM_DATABASE=Symbolic IO + +OUI:283F69* + ID_OUI_FROM_DATABASE=Sony Mobile Communications AB + +OUI:F0D2F1* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:8871E5* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:7C5049* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:F0A225* + ID_OUI_FROM_DATABASE=Private + +OUI:E048AF* + ID_OUI_FROM_DATABASE=Premietech Limited + +OUI:2C3311* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:503A7D* + ID_OUI_FROM_DATABASE=AlphaTech PLC Int’l Co., Ltd. + +OUI:BC024A* + ID_OUI_FROM_DATABASE=HMD Global Oy + +OUI:9CFCD1* + ID_OUI_FROM_DATABASE=Aetheris Technology (Shanghai) Co., Ltd. + +OUI:949901* + ID_OUI_FROM_DATABASE=Shenzhen YITOA Digital Appliance CO.,LTD + +OUI:E89E0C* + ID_OUI_FROM_DATABASE=Private + +OUI:D8A105* + ID_OUI_FROM_DATABASE=Syslane, Co., Ltd. + +OUI:C4B9CD* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:10954B* + ID_OUI_FROM_DATABASE=Megabyte Ltd. + +OUI:900628* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:C4700B* + ID_OUI_FROM_DATABASE=GUANGZHOU CHIP TECHNOLOGIES CO.,LTD + +OUI:D4AE05* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:3C0518* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:04946B* + ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED + +OUI:A04C5B* + ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp. + +OUI:98DDEA* + ID_OUI_FROM_DATABASE=Infinix mobility limited + +OUI:D4619D* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:B0481A* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:989E63* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:DCA904* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:48A195* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:6CAB31* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:503237* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:000889* + ID_OUI_FROM_DATABASE=Echostar Technologies Corp + +OUI:2C029F* + ID_OUI_FROM_DATABASE=3ALogics + +OUI:58D9D5* + ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch + +OUI:60E78A* + ID_OUI_FROM_DATABASE=UNISEM + +OUI:6C5976* + ID_OUI_FROM_DATABASE=Shanghai Tricheer Technology Co.,Ltd. + +OUI:F4A739* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:2CFAA2* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise + +OUI:00D095* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise + +OUI:4095BD* + ID_OUI_FROM_DATABASE=NTmore.Co.,Ltd + +OUI:2CABEB* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:BC66DE* + ID_OUI_FROM_DATABASE=Shadow Creator Information Technology Co.,Ltd. + +OUI:A0086F* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:C4FF1F* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:7C7B8B* + ID_OUI_FROM_DATABASE=Control Concepts, Inc. + +OUI:C40BCB* + ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd + +OUI:D8C06A* + ID_OUI_FROM_DATABASE=Hunantv.com Interactive Entertainment Media Co.,Ltd. + +OUI:9C32A9* + ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD + +OUI:601466* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:30D386* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:900E83* + ID_OUI_FROM_DATABASE=Monico Monitoring, Inc. + +OUI:E8BBA8* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:BC3AEA* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:8C0EE3* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:6C5C14* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:F894C2* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:7CB960* + ID_OUI_FROM_DATABASE=Shanghai X-Cheng telecom LTD + +OUI:A8D579* + ID_OUI_FROM_DATABASE=Beijing Chushang Science and Technology Co.,Ltd + +OUI:28C63F* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:600837* + ID_OUI_FROM_DATABASE=ivvi Scientific(Nanchang)Co.Ltd + +OUI:D860B3* + ID_OUI_FROM_DATABASE=Guangdong Global Electronic Technology CO.,LTD + +OUI:3C9509* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + +OUI:44B412* + ID_OUI_FROM_DATABASE=SIUS AG + +OUI:3CA308* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:00F82C* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:00C1B1* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:D0F88C* + ID_OUI_FROM_DATABASE=Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. + +OUI:2CB115* + ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd. + +OUI:78ABBB* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:1816C9* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:FC8F90* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:244B03* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:988389* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:14BB6E* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:1C3ADE* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:F83F51* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:D8E0E1* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:50FF20* + ID_OUI_FROM_DATABASE=Keenetic Limited + +OUI:ECF342* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:D4C1C8* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:EC237B* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:881544* + ID_OUI_FROM_DATABASE=Cisco Meraki + +OUI:F44156* + ID_OUI_FROM_DATABASE=Arrikto Inc. + +OUI:D4258B* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:B4F2E8* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:D0E54D* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:7085C6* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:44AAF5* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:005094* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:FC8E7E* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00E18C* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:903EAB* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:14CFE2* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:900DCB* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:207355* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:C83FB4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E0B70A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:78719C* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:D40598* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:946269* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:8C7F3B* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:40B7F3* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:20E564* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:90B134* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:3C438E* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E86D52* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0015D0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DCE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DD4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DCD* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:CCA462* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:D039B3* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0000C5* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:3C36E4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00ACE0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:384C90* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:D40AA9* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:48D343* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E02202* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:2C1DB8* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E45740* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0023A3* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:64ED57* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0023EE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002143* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0023AF* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001ADE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00159A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00080E* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0050E3* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:94CCB9* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001E46* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0018C0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001A66* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00192C* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0025F1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:F87B7A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:5856E8* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:145E45* + ID_OUI_FROM_DATABASE=Kaleao Limited + +OUI:88D7F6* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. + +OUI:1C1FD4* + ID_OUI_FROM_DATABASE=LifeBEAM Technologies LTD + +OUI:88BD78* + ID_OUI_FROM_DATABASE=Flaircomm Microelectronics,Inc. + +OUI:5092B9* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:B4BFF6* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:C8D7B0* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:60720B* + ID_OUI_FROM_DATABASE=BLU Products Inc + +OUI:F4A997* + ID_OUI_FROM_DATABASE=CANON INC. + +OUI:3C4CD0* + ID_OUI_FROM_DATABASE=CERAGON NETWORKS + +OUI:B04E26* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:FC06ED* + ID_OUI_FROM_DATABASE=M2Motive Technology Inc. + +OUI:54C9DF* + ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED + +OUI:30C3D9* + ID_OUI_FROM_DATABASE=ALPS ELECTRIC CO.,LTD. + +OUI:FC4D8C* + ID_OUI_FROM_DATABASE=SHENZHEN PANTE ELECTRONICS TECHNOLOGY CO., LTD + +OUI:B01F29* + ID_OUI_FROM_DATABASE=Helvetia INC. + +OUI:CC0677* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:28070D* + ID_OUI_FROM_DATABASE=GUANGZHOU WINSOUND INFORMATION TECHNOLOGY CO.,LTD. + +OUI:7038EE* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:2CF4C5* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:C8F406* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:3CB15B* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:FCA841* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:50CD22* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:10CDAE* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:B0ADAA* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:00549F* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:6049C1* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:E0D848* + ID_OUI_FROM_DATABASE=Dell Inc. + +OUI:145BE1* + ID_OUI_FROM_DATABASE=nyantec UG (haftungsbeschränkt) + OUI:0C6F9C* ID_OUI_FROM_DATABASE=Shaw Communications Inc. @@ -22964,21 +24272,6 @@ OUI:0019C6* OUI:0015EB* ID_OUI_FROM_DATABASE=zte corporation -OUI:A051C6* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:24D921* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:848371* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:7052C5* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:001B4F* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:F0EBD0* ID_OUI_FROM_DATABASE=Shanghai Feixun Communication Co.,Ltd. @@ -23021,12 +24314,6 @@ OUI:80717A* OUI:F49FF3* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:2C5BB8* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - -OUI:B0AA36* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:784B87* ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. @@ -23120,15 +24407,6 @@ OUI:00259E* OUI:001882* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:D4EA0E* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:B4475E* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:90FB5B* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:00906F* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -23582,9 +24860,6 @@ OUI:84100D* OUI:D88B4C* ID_OUI_FROM_DATABASE=KingTing Tech. -OUI:E81363* - ID_OUI_FROM_DATABASE=Comstock RD, Inc. - OUI:6C9354* ID_OUI_FROM_DATABASE=Yaojin Technology (Shenzhen) Co., LTD. @@ -23852,9 +25127,6 @@ OUI:E03560* OUI:0CB5DE* ID_OUI_FROM_DATABASE=Alcatel Lucent -OUI:04C9D9* - ID_OUI_FROM_DATABASE=EchoStar Technologies Corp - OUI:E4CE70* ID_OUI_FROM_DATABASE=Health & Life co., Ltd. @@ -24086,9 +25358,6 @@ OUI:68F06D* OUI:54F876* ID_OUI_FROM_DATABASE=ABB AG -OUI:4857DD* - ID_OUI_FROM_DATABASE=Facebook - OUI:84930C* ID_OUI_FROM_DATABASE=InCoax Networks Europe AB @@ -24215,9 +25484,6 @@ OUI:18D5B6* OUI:C8FF77* ID_OUI_FROM_DATABASE=Dyson Limited -OUI:C03D46* - ID_OUI_FROM_DATABASE=Shanghai Mochui Network Technology Co., Ltd - OUI:DCF110* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -24521,9 +25787,6 @@ OUI:284430* OUI:9843DA* ID_OUI_FROM_DATABASE=INTERTECH -OUI:285767* - ID_OUI_FROM_DATABASE=Echostar Technologies Corp - OUI:B07908* ID_OUI_FROM_DATABASE=Cummings Engineering @@ -24803,9 +26066,6 @@ OUI:148692* OUI:1832A2* ID_OUI_FROM_DATABASE=LAON TECHNOLOGY CO., LTD. -OUI:6854ED* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - Nuage - OUI:985C93* ID_OUI_FROM_DATABASE=SBG Systems SAS @@ -25358,9 +26618,6 @@ OUI:BC811F* OUI:34E0CF* ID_OUI_FROM_DATABASE=zte corporation -OUI:801DAA* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:6C40C6* ID_OUI_FROM_DATABASE=Nimbus Data Systems, Inc. @@ -26342,9 +27599,6 @@ OUI:948D50* OUI:94E226* ID_OUI_FROM_DATABASE=D. ORtiz Consulting, LLC -OUI:E8E732* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:386E21* ID_OUI_FROM_DATABASE=Wasion Group Ltd. @@ -27323,9 +28577,6 @@ OUI:0023D2* OUI:0024B4* ID_OUI_FROM_DATABASE=ESCATRONIC GmbH -OUI:0024AF* - ID_OUI_FROM_DATABASE=EchoStar Technologies - OUI:0024AD* ID_OUI_FROM_DATABASE=Adolf Thies Gmbh & Co. KG @@ -29618,9 +30869,6 @@ OUI:00118C* OUI:001191* ID_OUI_FROM_DATABASE=CTS-Clima Temperatur Systeme GmbH -OUI:00118B* - ID_OUI_FROM_DATABASE=Alcatel-Lucent, Enterprise Business Group - OUI:001196* ID_OUI_FROM_DATABASE=Actuality Systems, Inc. @@ -31667,9 +32915,6 @@ OUI:00049B* OUI:00049C* ID_OUI_FROM_DATABASE=Surgient Networks, Inc. -OUI:000496* - ID_OUI_FROM_DATABASE=Extreme Networks - OUI:00048F* ID_OUI_FROM_DATABASE=TD Systems Corporation @@ -32741,9 +33986,6 @@ OUI:00E0AD* OUI:00E025* ID_OUI_FROM_DATABASE=dit Co., Ltd. -OUI:00E0B1* - ID_OUI_FROM_DATABASE=Alcatel-Lucent, Enterprise Business Group - OUI:00E0E4* ID_OUI_FROM_DATABASE=FANUC ROBOTICS NORTH AMERICA, Inc. @@ -32897,9 +34139,6 @@ OUI:00A05B* OUI:00A08D* ID_OUI_FROM_DATABASE=JACOMO CORPORATION -OUI:00A06F* - ID_OUI_FROM_DATABASE=THE APPCON GROUP, INC. - OUI:00A08E* ID_OUI_FROM_DATABASE=Check Point Software Technologies @@ -33488,9 +34727,6 @@ OUI:004020* OUI:00406E* ID_OUI_FROM_DATABASE=COROLLARY, INC. -OUI:004066* - ID_OUI_FROM_DATABASE=Hitachi Metals, Ltd. - OUI:004016* ID_OUI_FROM_DATABASE=ADC - Global Connectivity Solutions Division @@ -33578,9 +34814,6 @@ OUI:008002* OUI:00805C* ID_OUI_FROM_DATABASE=AGILIS CORPORATION -OUI:0080E7* - ID_OUI_FROM_DATABASE=LYNWOOD SCIENTIFIC DEV. LTD. - OUI:008070* ID_OUI_FROM_DATABASE=COMPUTADORAS MICRON @@ -34223,12 +35456,6 @@ OUI:001802* OUI:ECCD6D* ID_OUI_FROM_DATABASE=Allied Telesis, Inc. -OUI:74C246* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -OUI:F0272D* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:00225F* ID_OUI_FROM_DATABASE=Liteon Technology Corporation @@ -34388,9 +35615,6 @@ OUI:B0EC71* OUI:3CBBFD* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:24F5AA* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:2CAE2B* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -34421,9 +35645,6 @@ OUI:680571* OUI:6C2F2C* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:5056BF* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:000136* ID_OUI_FROM_DATABASE=CyberTAN Technology Inc. @@ -34634,9 +35855,6 @@ OUI:0090F9* OUI:04C103* ID_OUI_FROM_DATABASE=Clover Network, Inc. -OUI:F877B8* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:1C553A* ID_OUI_FROM_DATABASE=QianGua Corp. @@ -35000,9 +36218,6 @@ OUI:B824F0* OUI:B456B9* ID_OUI_FROM_DATABASE=Teraspek Technologies Co.,Ltd -OUI:A009ED* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:68B35E* ID_OUI_FROM_DATABASE=Shenzhen Neostra Technology Co.Ltd @@ -35258,162 +36473,6 @@ OUI:84C7EA* OUI:8C6102* ID_OUI_FROM_DATABASE=Beijing Baofengmojing Technologies Co., Ltd -OUI:1005B1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:10868C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:1C1B68* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:44E137* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:E83381* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:8461A0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0CF893* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:14ABF0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:ACB313* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0026D9* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:28C87A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:54E2E0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:A055DE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:A0C562* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:FC6FB7* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001A1B* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00149A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001371* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DBE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001E5A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001D6B* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001CC1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001C11* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001F7E* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002495* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:2C9E5F* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:C8AA21* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:341FE4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:400D10* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001596* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0015A2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001311* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0015CE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002040* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0011AE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:000F9F* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:306023* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DD6* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DD1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:601971* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0000CA* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001ADB* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002375* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0024A1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:A4ED4E* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002642* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:000B06* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00152F* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00111A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001626* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0018A4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00D037* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:FC9114* ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. @@ -35570,9 +36629,6 @@ OUI:9CFBD5* OUI:583112* ID_OUI_FROM_DATABASE=DRUST -OUI:7C2634* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:58696C* ID_OUI_FROM_DATABASE=Ruijie Networks Co.,LTD @@ -36143,9 +37199,6 @@ OUI:00234A* OUI:88C626* ID_OUI_FROM_DATABASE=Logitech, Inc -OUI:B85001* - ID_OUI_FROM_DATABASE=Zebra Technologies Inc. - OUI:28E31F* ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd @@ -36209,9 +37262,6 @@ OUI:78FC14* OUI:1062EB* ID_OUI_FROM_DATABASE=D-Link International -OUI:1C48CE* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:E0A700* ID_OUI_FROM_DATABASE=Verkada Inc @@ -36269,9 +37319,6 @@ OUI:0C3CCD* OUI:B04089* ID_OUI_FROM_DATABASE=Senient Systems LTD -OUI:682737* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:002445* ID_OUI_FROM_DATABASE=Adtran Inc @@ -36350,6 +37397,480 @@ OUI:143004* OUI:D481D7* ID_OUI_FROM_DATABASE=Dell Inc. +OUI:7C4685* + ID_OUI_FROM_DATABASE=Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. + +OUI:E05163* + ID_OUI_FROM_DATABASE=Arcadyan Corporation + +OUI:00A06F* + ID_OUI_FROM_DATABASE=Color Sentinel Systems, LLC + +OUI:0C5F35* + ID_OUI_FROM_DATABASE=Niagara Video Corporation + +OUI:7C3866* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:50F14A* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:9C1D58* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:B85001* + ID_OUI_FROM_DATABASE=Extreme Networks + +OUI:000496* + ID_OUI_FROM_DATABASE=Extreme Networks + +OUI:500FF5* + ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch + +OUI:1C1EE3* + ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD + +OUI:F0272D* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:74C246* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:08B258* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:F4C4D6* + ID_OUI_FROM_DATABASE=Shenzhen Xinfa Electronic Co.,ltd + +OUI:C03D46* + ID_OUI_FROM_DATABASE=Shanghai Sango Network Technology Co.,Ltd + +OUI:E89FEC* + ID_OUI_FROM_DATABASE=CHENGDU KT ELECTRONIC HI-TECH CO.,LTD + +OUI:D47DFC* + ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED + +OUI:BCA042* + ID_OUI_FROM_DATABASE=SHANGHAI FLYCO ELECTRICAL APPLIANCE CO.,LTD + +OUI:14568E* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:6837E9* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:8058F8* + ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company + +OUI:443708* + ID_OUI_FROM_DATABASE=MRV Comunications + +OUI:F0D7AA* + ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company + +OUI:28FF3E* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:70F087* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:886B6E* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:4C74BF* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:285767* + ID_OUI_FROM_DATABASE=Echostar Technologies Corp + +OUI:0024AF* + ID_OUI_FROM_DATABASE=Echostar Technologies Corp + +OUI:04C9D9* + ID_OUI_FROM_DATABASE=Echostar Technologies Corp + +OUI:C49DED* + ID_OUI_FROM_DATABASE=Microsoft Corporation + +OUI:98A40E* + ID_OUI_FROM_DATABASE=Snap, Inc. + +OUI:D0498B* + ID_OUI_FROM_DATABASE=ZOOM SERVER + +OUI:AC7409* + ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited + +OUI:2C5A0F* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:4C8120* + ID_OUI_FROM_DATABASE=Taicang T&W Electronics + +OUI:E8E732* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise + +OUI:00118B* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise + +OUI:00E0B1* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise + +OUI:E037BF* + ID_OUI_FROM_DATABASE=Wistron Neweb Corporation + +OUI:6854ED* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:E8DE8E* + ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd. + +OUI:B42A0E* + ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. + +OUI:40C8CB* + ID_OUI_FROM_DATABASE=AM Telecom co., Ltd. + +OUI:14A0F8* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:28B448* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:E442A6* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:6045CB* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. + +OUI:74C9A3* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:84AFEC* + ID_OUI_FROM_DATABASE=BUFFALO.INC + +OUI:AC202E* + ID_OUI_FROM_DATABASE=Hitron Technologies. Inc + +OUI:3C5282* + ID_OUI_FROM_DATABASE=Hewlett Packard + +OUI:48A74E* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:004066* + ID_OUI_FROM_DATABASE=APRESIA Systems Ltd + +OUI:B0AA36* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:2C5BB8* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:1C48CE* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:9CAC6D* + ID_OUI_FROM_DATABASE=Universal Electronics, Inc. + +OUI:B03D96* + ID_OUI_FROM_DATABASE=Vision Valley FZ LLC + +OUI:B02628* + ID_OUI_FROM_DATABASE=Broadcom Limited + +OUI:24792A* + ID_OUI_FROM_DATABASE=Ruckus Wireless + +OUI:0080E7* + ID_OUI_FROM_DATABASE=Leonardo Tactical Systems. + +OUI:44AA50* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:E81363* + ID_OUI_FROM_DATABASE=Comstock RD, Inc. + +OUI:688DB6* + ID_OUI_FROM_DATABASE=AETEK INC. + +OUI:481063* + ID_OUI_FROM_DATABASE=NTT Innovation Institute, Inc. + +OUI:24F5AA* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:F877B8* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:5056BF* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:682737* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:D428D5* + ID_OUI_FROM_DATABASE=TCT mobile ltd + +OUI:405CFD* + ID_OUI_FROM_DATABASE=Dell Inc. + +OUI:041B6D* + ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) + +OUI:FC6FB7* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:A0C562* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:A055DE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:54E2E0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:28C87A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0026D9* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:C8AA21* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:2C9E5F* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002495* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002642* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:A4ED4E* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0024A1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001D6B* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001E5A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DBE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001371* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00149A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001A1B* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0018A4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002375* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001ADB* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001F7E* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001C11* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001CC1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:400D10* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:341FE4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00D037* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DD6* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:306023* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:ACB313* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:14ABF0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0CF893* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:8461A0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E83381* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:44E137* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0015CE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001311* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0015A2* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001596* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0000CA* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:601971* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DD1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001626* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00111A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00152F* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:000B06* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:000F9F* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0011AE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002040* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:1C1B68* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:10868C* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:1005B1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:7C2634* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:A0094C* + ID_OUI_FROM_DATABASE=CenturyLink + +OUI:00A38E* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:DCC8F5* + ID_OUI_FROM_DATABASE=Shanghai UMEinfo CO.,LTD. + +OUI:64DFE9* + ID_OUI_FROM_DATABASE=ATEME + +OUI:9097F3* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:58C5CB* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:ACAFB9* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:308976* + ID_OUI_FROM_DATABASE=DALIAN LAMBA TECHNOLOGY CO.,LTD + +OUI:447BBB* + ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd + +OUI:A4F4C2* + ID_OUI_FROM_DATABASE=VNPT TECHNOLOGY + +OUI:C0A5DD* + ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. + +OUI:1835D1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:4C38D8* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:DCBE7A* + ID_OUI_FROM_DATABASE=Zhejiang Nurotron Biotechnology Co. + +OUI:206BE7* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:4857DD* + ID_OUI_FROM_DATABASE=Facebook Inc + +OUI:30074D* + ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND) + +OUI:681DEF* + ID_OUI_FROM_DATABASE=Shenzhen CYX Technology Co., Ltd. + +OUI:AC203E* + ID_OUI_FROM_DATABASE=Wuhan Tianyu Information Industry Co., Ltd. + +OUI:00A3D1* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:801DAA* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:001B4F* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:7052C5* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:848371* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:24D921* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:A051C6* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:90EC50* + ID_OUI_FROM_DATABASE=C.O.B.O. SPA + +OUI:B4475E* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:D4EA0E* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:A009ED* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:90FB5B* + ID_OUI_FROM_DATABASE=Avaya Inc + OUI:5846E1* ID_OUI_FROM_DATABASE=Baxter International Inc @@ -36365,9 +37886,6 @@ OUI:D084B0* OUI:00FEC8* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:0030C5* - ID_OUI_FROM_DATABASE=CADENCE DESIGN SYSTEMS, INC. - OUI:EC2280* ID_OUI_FROM_DATABASE=D-Link International @@ -36449,9 +37967,6 @@ OUI:984BE1* OUI:68B599* ID_OUI_FROM_DATABASE=Hewlett Packard -OUI:0C47C9* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:14D64D* ID_OUI_FROM_DATABASE=D-Link International @@ -36659,9 +38174,6 @@ OUI:808917* OUI:5C899A* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -OUI:A81B5A* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:E422A5* ID_OUI_FROM_DATABASE=PLANTRONICS, INC. @@ -36680,18 +38192,6 @@ OUI:005053* OUI:00500F* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:048A15* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:44322A* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:FC8399* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:00040D* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:D842AC* ID_OUI_FROM_DATABASE=Shanghai Feixun Communication Co.,Ltd. @@ -36797,24 +38297,6 @@ OUI:308730* OUI:002568* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:D47856* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:C057BC* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:38BB3C* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:E45D52* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:A4251B* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:6CA849* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:30D17E* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD @@ -37265,9 +38747,6 @@ OUI:54A3FA* OUI:9023EC* ID_OUI_FROM_DATABASE=Availink, Inc. -OUI:7467F7* - ID_OUI_FROM_DATABASE=Zebra Technologoes - OUI:3891D5* ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited @@ -37805,9 +39284,6 @@ OUI:FCD5D9* OUI:007532* ID_OUI_FROM_DATABASE=INID BV -OUI:A002DC* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:907EBA* ID_OUI_FROM_DATABASE=UTEK TECHNOLOGY (SHENZHEN) CO.,LTD @@ -38486,9 +39962,6 @@ OUI:BC261D* OUI:888964* ID_OUI_FROM_DATABASE=GSI Electronics Inc. -OUI:4C82CF* - ID_OUI_FROM_DATABASE=Echostar Technologies - OUI:9CA577* ID_OUI_FROM_DATABASE=Osorno Enterprises Inc. @@ -38693,9 +40166,6 @@ OUI:48B8DE* OUI:1065CF* ID_OUI_FROM_DATABASE=IQSIM -OUI:B877C3* - ID_OUI_FROM_DATABASE=Decagon Devices, Inc. - OUI:849DC5* ID_OUI_FROM_DATABASE=Centera Photonics Inc. @@ -39455,9 +40925,6 @@ OUI:FC2E2D* OUI:E84E06* ID_OUI_FROM_DATABASE=EDUP INTERNATIONAL (HK) CO., LTD -OUI:B4C799* - ID_OUI_FROM_DATABASE=Zebra Technologies Inc - OUI:70B921* ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD @@ -40073,9 +41540,6 @@ OUI:58570D* OUI:0C826A* ID_OUI_FROM_DATABASE=Wuhan Huagong Genuine Optics Technology Co., Ltd -OUI:5C0E8B* - ID_OUI_FROM_DATABASE=Zebra Technologies Inc - OUI:38C7BA* ID_OUI_FROM_DATABASE=CS Services Co.,Ltd. @@ -40430,9 +41894,6 @@ OUI:00268F* OUI:6C8CDB* ID_OUI_FROM_DATABASE=Otus Technologies Ltd -OUI:B4417A* - ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd - OUI:401597* ID_OUI_FROM_DATABASE=Protect America, Inc. @@ -44078,9 +45539,6 @@ OUI:000940* OUI:00093F* ID_OUI_FROM_DATABASE=Double-Win Enterpirse CO., LTD -OUI:00093A* - ID_OUI_FROM_DATABASE=Molex Fiber Optics - OUI:000933* ID_OUI_FROM_DATABASE=Ophit Co.Ltd. @@ -46070,9 +47528,6 @@ OUI:00E0CE* OUI:00E05F* ID_OUI_FROM_DATABASE=e-Net, Inc. -OUI:00E02B* - ID_OUI_FROM_DATABASE=EXTREME NETWORKS - OUI:00E0C7* ID_OUI_FROM_DATABASE=EUROTECH SRL @@ -47306,9 +48761,6 @@ OUI:001B38* OUI:E46F13* ID_OUI_FROM_DATABASE=D-Link International -OUI:DC6DCD* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:94C150* ID_OUI_FROM_DATABASE=2Wire Inc @@ -47516,18 +48968,12 @@ OUI:18FE34* OUI:54F6C5* ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD -OUI:28EF01* - ID_OUI_FROM_DATABASE=Private - OUI:5C338E* ID_OUI_FROM_DATABASE=Alpha Networks Inc. OUI:001AEB* ID_OUI_FROM_DATABASE=Allied Telesis R&D Center K.K. -OUI:747548* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:A43111* ID_OUI_FROM_DATABASE=ZIV @@ -47714,21 +49160,6 @@ OUI:0CB319* OUI:08EE8B* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:84A466* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:981DFA* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:FCF136* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:0C8910* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:54FA3E* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:A89FBA* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -47801,9 +49232,6 @@ OUI:A4EBD3* OUI:28987B* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:1867B0* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:F40E22* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -48086,9 +49514,6 @@ OUI:1866DA* OUI:981FB1* ID_OUI_FROM_DATABASE=Shenzhen Lemon Network Technology Co.,Ltd -OUI:CCB11A* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:40476A* ID_OUI_FROM_DATABASE=AG Acquisition Corp. d.b.a. ASTRO Gaming @@ -48371,12 +49796,6 @@ OUI:C09727* OUI:2C5A8D* ID_OUI_FROM_DATABASE=SYSTRONIK Elektronik u. Systemtechnik GmbH -OUI:B8BBAF* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:60C5AD* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:8C897A* ID_OUI_FROM_DATABASE=AUGTEK @@ -48836,9 +50255,6 @@ OUI:70FF76* OUI:507224* ID_OUI_FROM_DATABASE=Texas Instruments -OUI:440444* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:506583* ID_OUI_FROM_DATABASE=Texas Instruments @@ -48872,138 +50288,6 @@ OUI:981E0F* OUI:548CA0* ID_OUI_FROM_DATABASE=Liteon Technology Corporation -OUI:001AAD* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00195E* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001404* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001BDD* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0023A2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001E8D* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0003E0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:707E43* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:1C1448* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:A47AA4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:E83EFC* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:E8892C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DD3* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0015D1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:203D66* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:6455B1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:C005C2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:3CDFA9* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:8C09F4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:083E0C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001225* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00128A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:D404CD* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002493* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:E46449* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:745612* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:74EAE8* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:A811FC* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:044E5A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:94E8C5* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:F8A097* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00230B* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001B52* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0023ED* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002395* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0022B4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002136* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0024C1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:3C754A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:40FC89* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:BC644B* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:347A60* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:84E058* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:003676* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:001CA8* ID_OUI_FROM_DATABASE=AirTies Wireless Networks @@ -49232,12 +50516,6 @@ OUI:B072BF* OUI:600B03* ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited -OUI:C09F05* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - -OUI:AC63BE* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:A41437* ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. @@ -49340,9 +50618,6 @@ OUI:9C8BA0* OUI:9840BB* ID_OUI_FROM_DATABASE=Dell Inc. -OUI:CC2D83* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:E04FBD* ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO.,LTD @@ -49406,9 +50681,6 @@ OUI:407183* OUI:0059DC* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:14612F* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:ACF85C* ID_OUI_FROM_DATABASE=Private @@ -49430,9 +50702,6 @@ OUI:701CE7* OUI:CC9470* ID_OUI_FROM_DATABASE=Kinestral Technologies, Inc. -OUI:446AB7* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:F0219D* ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd. @@ -49451,9 +50720,6 @@ OUI:506B8D* OUI:0038DF* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:2C9924* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:006BF1* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -49535,9 +50801,6 @@ OUI:0060BD* OUI:AC83F3* ID_OUI_FROM_DATABASE=AMPAK Technology, Inc. -OUI:707C69* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:18DBF2* ID_OUI_FROM_DATABASE=Dell Inc. @@ -49712,9 +50975,6 @@ OUI:B0F1EC* OUI:B0C46C* ID_OUI_FROM_DATABASE=Senseit -OUI:105611* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:148951* ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd @@ -49733,6 +50993,507 @@ OUI:04DEF2* OUI:00D071* ID_OUI_FROM_DATABASE=ECHELON CORP. +OUI:0030C5* + ID_OUI_FROM_DATABASE=CADENCE DESIGN SYSTEMS, INC. + +OUI:504061* + ID_OUI_FROM_DATABASE=Nokia + +OUI:7467F7* + ID_OUI_FROM_DATABASE=Extreme Networks + +OUI:B4C799* + ID_OUI_FROM_DATABASE=Extreme Networks + +OUI:54E3F6* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:5C0E8B* + ID_OUI_FROM_DATABASE=Extreme Networks + +OUI:00E02B* + ID_OUI_FROM_DATABASE=Extreme Networks + +OUI:B0C205* + ID_OUI_FROM_DATABASE=BIONIME + +OUI:0C61CF* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:7C2664* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + +OUI:E47DEB* + ID_OUI_FROM_DATABASE=Shanghai Notion Information Technology CO.,LTD. + +OUI:A002DC* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:0C47C9* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:28EF01* + ID_OUI_FROM_DATABASE=Private + +OUI:747548* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:AC63BE* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:DCA4CA* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:8C8FE9* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:40FA7F* + ID_OUI_FROM_DATABASE=Preh Car Connect GmbH + +OUI:F8AB05* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + +OUI:C0028D* + ID_OUI_FROM_DATABASE=WINSTAR Display CO.,Ltd + +OUI:D83214* + ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch + +OUI:7C787E* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:C0D3C0* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:F097E5* + ID_OUI_FROM_DATABASE=TAMIO, INC + +OUI:F4E4AD* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:F85971* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:9810E8* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:B49CDF* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:4C82CF* + ID_OUI_FROM_DATABASE=Echostar Technologies Corp + +OUI:F49634* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:F470AB* + ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. + +OUI:341A35* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:6C4B90* + ID_OUI_FROM_DATABASE=LiteON + +OUI:08028E* + ID_OUI_FROM_DATABASE=NETGEAR + +OUI:F8FF0B* + ID_OUI_FROM_DATABASE=Electronic Technology Inc. + +OUI:38F135* + ID_OUI_FROM_DATABASE=SensorTec-Canada + +OUI:90F305* + ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. + +OUI:00093A* + ID_OUI_FROM_DATABASE=Molex + +OUI:B8D50B* + ID_OUI_FROM_DATABASE=Sunitec Enterprise Co.,Ltd + +OUI:28A6DB* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:C8F86D* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd + +OUI:D45F25* + ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd + +OUI:9CE951* + ID_OUI_FROM_DATABASE=Shenzhen Sang Fei Consumer Communications Ltd., Co. + +OUI:DC0856* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise + +OUI:E8FDE8* + ID_OUI_FROM_DATABASE=CeLa Link Corporation + +OUI:181212* + ID_OUI_FROM_DATABASE=Cepton Technologies + +OUI:B4417A* + ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT + +OUI:F4DE0C* + ID_OUI_FROM_DATABASE=ESPOD Ltd. + +OUI:BC8AE8* + ID_OUI_FROM_DATABASE=QING DAO HAIER TELECOM CO.,LTD. + +OUI:440444* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:C09F05* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:CC2D83* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:38295A* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:4C1A3D* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:A81B5A* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:DC6DCD* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:70D379* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:7C4F7D* + ID_OUI_FROM_DATABASE=Sawwave + +OUI:185207* + ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD + +OUI:9874DA* + ID_OUI_FROM_DATABASE=Infinix mobility limited + +OUI:143F27* + ID_OUI_FROM_DATABASE=Noccela Oy + +OUI:64351C* + ID_OUI_FROM_DATABASE=e-CON SYSTEMS INDIA PVT LTD + +OUI:5C6A80* + ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation + +OUI:A8B86E* + ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) + +OUI:0CB912* + ID_OUI_FROM_DATABASE=JM-DATA GmbH + +OUI:1893D7* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:EC363F* + ID_OUI_FROM_DATABASE=Markov Corporation + +OUI:54FA3E* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:0C8910* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:FCF136* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:981DFA* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:84A466* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:1867B0* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:CCB11A* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:B8BBAF* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:60C5AD* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:28395E* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:C4AE12* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:10D07A* + ID_OUI_FROM_DATABASE=AMPAK Technology, Inc. + +OUI:80B234* + ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. + +OUI:B877C3* + ID_OUI_FROM_DATABASE=METER Group + +OUI:003676* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:84E058* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:F07485* + ID_OUI_FROM_DATABASE=NGD Systems, Inc. + +OUI:347A60* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:BC644B* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:F8A097* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:94E8C5* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:044E5A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:74EAE8* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:A811FC* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:745612* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E46449* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:C005C2* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:6455B1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:203D66* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:D404CD* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:446AB7* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:2C9924* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001BDD* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001404* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00195E* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001AAD* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:A47AA4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:1C1448* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002493* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:40FC89* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:3C754A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0024C1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002136* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0022B4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002395* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0023ED* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001B52* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00230B* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001E8D* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0023A2* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0015D1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DD3* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E8892C* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E83EFC* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:707E43* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0003E0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00128A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001225* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:083E0C* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:8C09F4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:3CDFA9* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:105611* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:2C3AE8* + ID_OUI_FROM_DATABASE=Espressif Inc. + +OUI:DC74A8* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:C087EB* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:E8B6C2* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:B0DAF9* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:74F61C* + ID_OUI_FROM_DATABASE=HTC Corporation + +OUI:3438B7* + ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. + +OUI:5C1A6F* + ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd. + +OUI:B089C2* + ID_OUI_FROM_DATABASE=Zyptonite + +OUI:F0D4F6* + ID_OUI_FROM_DATABASE=Lars Thrane A/S + +OUI:487D2E* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:0403D6* + ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd + +OUI:A0AFBD* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:34D954* + ID_OUI_FROM_DATABASE=WiBotic Inc. + +OUI:6C60EB* + ID_OUI_FROM_DATABASE=ZHI YUAN ELECTRONICS CO., LIMITED + +OUI:AC4E2E* + ID_OUI_FROM_DATABASE=Shenzhen JingHanDa Electronics Co.Ltd + +OUI:B40016* + ID_OUI_FROM_DATABASE=INGENICO TERMINALS SAS + +OUI:0027E3* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:A0341B* + ID_OUI_FROM_DATABASE=TrackR, Inc + +OUI:FCA667* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:784501* + ID_OUI_FROM_DATABASE=Biamp Systems + +OUI:488D36* + ID_OUI_FROM_DATABASE=Arcadyan Corporation + +OUI:986F60* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:4C189A* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:E45D52* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:38BB3C* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:C057BC* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:D47856* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:14612F* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:707C69* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:A47886* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:44322A* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:048A15* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:6CA849* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:A4251B* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:00040D* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:FC8399* + ID_OUI_FROM_DATABASE=Avaya Inc + OUI:D86CE9* ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS @@ -50099,24 +51860,6 @@ OUI:F4C714* OUI:286ED4* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:A01290* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:F81547* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:506184* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:BCADAB* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:B4A95A* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:3C3A73* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:04F938* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD @@ -50825,9 +52568,6 @@ OUI:F46A92* OUI:14AEDB* ID_OUI_FROM_DATABASE=VTech Telecommunications Ltd. -OUI:EC4F82* - ID_OUI_FROM_DATABASE=Calix Inc. - OUI:B8C3BF* ID_OUI_FROM_DATABASE=Henan Chengshi NetWork Technology Co.,Ltd @@ -51245,9 +52985,6 @@ OUI:90DA6A* OUI:A45DA1* ID_OUI_FROM_DATABASE=ADB Broadband Italia -OUI:A43D78* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:E8EF89* ID_OUI_FROM_DATABASE=OPMEX Tech. @@ -51956,9 +53693,6 @@ OUI:D81EDE* OUI:6897E8* ID_OUI_FROM_DATABASE=Society of Motion Picture & Television Engineers -OUI:24EA40* - ID_OUI_FROM_DATABASE=Systeme Helmholz GmbH - OUI:FC58FA* ID_OUI_FROM_DATABASE=Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd. @@ -52013,9 +53747,6 @@ OUI:7CD844* OUI:F4C6D7* ID_OUI_FROM_DATABASE=blackned GmbH -OUI:68A40E* - ID_OUI_FROM_DATABASE=BSH Bosch and Siemens Home Appliances GmbH - OUI:4CCA53* ID_OUI_FROM_DATABASE=Skyera, Inc. @@ -52868,9 +54599,6 @@ OUI:B826D4* OUI:14E4EC* ID_OUI_FROM_DATABASE=mLogic LLC -OUI:FC0A81* - ID_OUI_FROM_DATABASE=Zebra Technologies Inc - OUI:AC0DFE* ID_OUI_FROM_DATABASE=Ekon GmbH - myGEKKO @@ -54089,9 +55817,6 @@ OUI:6CAC60* OUI:DC0265* ID_OUI_FROM_DATABASE=Meditech Kft -OUI:986DC8* - ID_OUI_FROM_DATABASE=TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION - OUI:68A1B7* ID_OUI_FROM_DATABASE=Honghao Mingchuan Technology (Beijing) CO.,Ltd. @@ -55616,9 +57341,6 @@ OUI:0018FB* OUI:0019EE* ID_OUI_FROM_DATABASE=CARLO GAVAZZI CONTROLS SPA-Controls Division -OUI:0019F0* - ID_OUI_FROM_DATABASE=UNIONMAN TECHNOLOGY CO.,LTD - OUI:0019F5* ID_OUI_FROM_DATABASE=Imagination Technologies Ltd @@ -56246,9 +57968,6 @@ OUI:0014B3* OUI:00149B* ID_OUI_FROM_DATABASE=Nokota Communications, LLC -OUI:00143F* - ID_OUI_FROM_DATABASE=Hotway Technology Corporation - OUI:001431* ID_OUI_FROM_DATABASE=PDL Electronics Ltd @@ -56891,9 +58610,6 @@ OUI:000FFD* OUI:000FEE* ID_OUI_FROM_DATABASE=XTec, Incorporated -OUI:000FF4* - ID_OUI_FROM_DATABASE=Guntermann & Drunck GmbH - OUI:001275* ID_OUI_FROM_DATABASE=Sentilla Corporation @@ -58373,9 +60089,6 @@ OUI:000641* OUI:00063D* ID_OUI_FROM_DATABASE=Microwave Data Systems Inc. -OUI:000631* - ID_OUI_FROM_DATABASE=Calix - OUI:000630* ID_OUI_FROM_DATABASE=Adtranz Sweden @@ -59651,9 +61364,6 @@ OUI:00E019* OUI:00E0D7* ID_OUI_FROM_DATABASE=SUNSHINE ELECTRONICS, INC. -OUI:00E0DA* - ID_OUI_FROM_DATABASE=Alcatel North America ESD - OUI:00E068* ID_OUI_FROM_DATABASE=MERRIMAC SYSTEMS INC. @@ -60335,9 +62045,6 @@ OUI:004000* OUI:0040C5* ID_OUI_FROM_DATABASE=MICOM COMMUNICATIONS INC. -OUI:0040AA* - ID_OUI_FROM_DATABASE=Metso Automation - OUI:004023* ID_OUI_FROM_DATABASE=LOGIC CORPORATION @@ -60980,9 +62687,6 @@ OUI:5464D9* OUI:00023F* ID_OUI_FROM_DATABASE=COMPAL ELECTRONICS, INC. -OUI:0080C2* - ID_OUI_FROM_DATABASE=IEEE 802.1 - OUI:C46699* ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. @@ -61241,12 +62945,6 @@ OUI:001D6A* OUI:0000F4* ID_OUI_FROM_DATABASE=Allied Telesis, Inc. -OUI:10AE60* - ID_OUI_FROM_DATABASE=Private - -OUI:F04F7C* - ID_OUI_FROM_DATABASE=Private - OUI:70F1A1* ID_OUI_FROM_DATABASE=Liteon Technology Corporation @@ -61496,15 +63194,6 @@ OUI:A80600* OUI:6CF373* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:90F1AA* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:C4576E* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:78BDBC* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:3872C0* ID_OUI_FROM_DATABASE=Comtrend Corporation @@ -61757,9 +63446,6 @@ OUI:1CABC0* OUI:84E323* ID_OUI_FROM_DATABASE=Green Wave Telecommunication SDN BHD -OUI:44650D* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:D897BA* ID_OUI_FROM_DATABASE=PEGATRON CORPORATION @@ -61985,9 +63671,6 @@ OUI:749D8F* OUI:346AC2* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:50F5DA* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:8CD2E9* ID_OUI_FROM_DATABASE=NIPPON SMT Co.Ltd @@ -62318,141 +64001,9 @@ OUI:343DC4* OUI:6CEFC6* ID_OUI_FROM_DATABASE=SHENZHEN TWOWING TECHNOLOGIES CO.,LTD. -OUI:986B3D* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:CC65AD* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:789684* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:90C792* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0015CF* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:386BBB* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00E06F* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0004BD* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:5C571A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DD0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DD5* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DCF* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:E8ED05* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:901ACA* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:002A10* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:74E7C6* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:74F612* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:DC4517* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:F80BBE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:6CC1D2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:145BD1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:B077AC* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:B81619* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:A41588* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:38700C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:FC51A4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:287AEE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:641269* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001CC3* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:14D4FE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:70B14E* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:D82522* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:707630* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:000CE5* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:000E5C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0015A8* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001700* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0019A6* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0014E8* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002180* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0026BA* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002641* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002374* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0025F2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0019C0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:886AB1* ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. @@ -63107,12 +64658,6 @@ OUI:7C95B1* OUI:206C8A* ID_OUI_FROM_DATABASE=Aerohive Networks Inc. -OUI:5CE30E* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:7823AE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:E49E12* ID_OUI_FROM_DATABASE=FREEBOX SAS @@ -63281,9 +64826,6 @@ OUI:C4836F* OUI:C87324* ID_OUI_FROM_DATABASE=Sow Cheng Technology Co. Ltd. -OUI:6854FD* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:3CF862* ID_OUI_FROM_DATABASE=Intel Corporate @@ -63317,9 +64859,6 @@ OUI:00238A* OUI:34E70B* ID_OUI_FROM_DATABASE=HAN Networks Co., Ltd -OUI:D47AE2* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:903809* ID_OUI_FROM_DATABASE=Ericsson AB @@ -63329,12 +64868,6 @@ OUI:542B57* OUI:00111B* ID_OUI_FROM_DATABASE=Targa Systems Div L-3 Communications -OUI:2C7E81* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:EC01EE* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:B8224F* ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD @@ -63356,6 +64889,465 @@ OUI:98D3D2* OUI:F4DC41* ID_OUI_FROM_DATABASE=YOUNGZONE CULTURE (SHANGHAI) CORP +OUI:9800C1* + ID_OUI_FROM_DATABASE=GuangZhou CREATOR Technology Co.,Ltd.(CHINA) + +OUI:3034D2* + ID_OUI_FROM_DATABASE=Availink, Inc. + +OUI:CCCE1E* + ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH + +OUI:501E2D* + ID_OUI_FROM_DATABASE=StreamUnlimited Engineering GmbH + +OUI:40B034* + ID_OUI_FROM_DATABASE=Hewlett Packard + +OUI:FC0A81* + ID_OUI_FROM_DATABASE=Extreme Networks + +OUI:C8B5AD* + ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise + +OUI:88E628* + ID_OUI_FROM_DATABASE=Shenzhen Kezhonglong Optoelectronic Technology Co.,Ltd + +OUI:6091F3* + ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. + +OUI:9CDA3E* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:3CA067* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + +OUI:D8325A* + ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd + +OUI:44650D* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:50F5DA* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:6854FD* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:40B4CD* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:2C86D2* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:F04F7C* + ID_OUI_FROM_DATABASE=Private + +OUI:10AE60* + ID_OUI_FROM_DATABASE=Private + +OUI:802689* + ID_OUI_FROM_DATABASE=D-Link International + +OUI:BC2F3D* + ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. + +OUI:409F38* + ID_OUI_FROM_DATABASE=AzureWave Technology Inc. + +OUI:C4D197* + ID_OUI_FROM_DATABASE=Ventia Utility Services + +OUI:58821D* + ID_OUI_FROM_DATABASE=H. Schomäcker GmbH + +OUI:CCBE59* + ID_OUI_FROM_DATABASE=Calix Inc. + +OUI:EC4F82* + ID_OUI_FROM_DATABASE=Calix Inc. + +OUI:000631* + ID_OUI_FROM_DATABASE=Calix Inc. + +OUI:B8D7AF* + ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. + +OUI:3096FB* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:F0EE10* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:A8A198* + ID_OUI_FROM_DATABASE=TCT mobile ltd + +OUI:107D1A* + ID_OUI_FROM_DATABASE=Dell Inc. + +OUI:C0D012* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:D4DCCD* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:484BAA* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:F80377* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:14BD61* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:0827CE* + ID_OUI_FROM_DATABASE=NAGANO KEIKI CO., LTD. + +OUI:00D318* + ID_OUI_FROM_DATABASE=SPG Controls + +OUI:2C3124* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:F40343* + ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise + +OUI:00143F* + ID_OUI_FROM_DATABASE=Hotway Technology Corporation + +OUI:F8BE0D* + ID_OUI_FROM_DATABASE=A2UICT Co.,Ltd. + +OUI:08EA40* + ID_OUI_FROM_DATABASE=SHENZHEN BILIAN ELECTRONIC CO.,LTD + +OUI:00E0DA* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise + +OUI:5CC6E9* + ID_OUI_FROM_DATABASE=Edifier International + +OUI:E8C1D7* + ID_OUI_FROM_DATABASE=Philips + +OUI:1868CB* + ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. + +OUI:F80BCB* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:9CC8AE* + ID_OUI_FROM_DATABASE=Becton, Dickinson and Company + +OUI:B0359F* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:24EA40* + ID_OUI_FROM_DATABASE=Helmholz GmbH & Co. KG + +OUI:84A9C4* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:A0F479* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:100501* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:046E02* + ID_OUI_FROM_DATABASE=OpenRTLS Group + +OUI:000FF4* + ID_OUI_FROM_DATABASE=Guntermann & Drunck GmbH + +OUI:70DB98* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:A43D78* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:EC01EE* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:B83765* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:4448C1* + ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise + +OUI:FC539E* + ID_OUI_FROM_DATABASE=Shanghai Wind Technologies Co.,Ltd + +OUI:9CAF6F* + ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED + +OUI:105887* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:9C061B* + ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited + +OUI:907065* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:C4ABB2* + ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. + +OUI:B8FFB3* + ID_OUI_FROM_DATABASE=MitraStar Technology Corp. + +OUI:A08E78* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + +OUI:E0D55E* + ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. + +OUI:C4576E* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:90F1AA* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:78BDBC* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:20F452* + ID_OUI_FROM_DATABASE=Shanghai IUV Software Development Co. Ltd + +OUI:D47AE2* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:88D274* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:986DC8* + ID_OUI_FROM_DATABASE=TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION + +OUI:982DBA* + ID_OUI_FROM_DATABASE=Fibergate Inc. + +OUI:0040AA* + ID_OUI_FROM_DATABASE=Valmet Automation + +OUI:0080C2* + ID_OUI_FROM_DATABASE=IEEE 802.1 Working Group + +OUI:68A40E* + ID_OUI_FROM_DATABASE=BSH Hausgeräte GmbH + +OUI:847933* + ID_OUI_FROM_DATABASE=profichip GmbH + +OUI:A0C9A0* + ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. + +OUI:001CC3* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:641269* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:287AEE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:FC51A4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:38700C* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:A41588* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:B81619* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:B077AC* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:145BD1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:6CC1D2* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:F80BBE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:DC4517* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:74F612* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:74E7C6* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0025F2* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0015A8* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:000E5C* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:000CE5* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0004BD* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00E06F* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:386BBB* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0015CF* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DCF* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DD5* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DD0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:5C571A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:D82522* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:70B14E* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:14D4FE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002374* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002641* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0026BA* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002180* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0019C0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0014E8* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0019A6* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001700* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:901ACA* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E8ED05* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:707630* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:90C792* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:789684* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:CC65AD* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:986B3D* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:5CE30E* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:7823AE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:447F77* + ID_OUI_FROM_DATABASE=Connected Home + +OUI:2C7E81* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:009AD2* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:84C0EF* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:7C1C68* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:745427* + ID_OUI_FROM_DATABASE=SHENZHEN FAST TECHNOLOGIES CO.,LTD + +OUI:F40E83* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:7C8BCA* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:88B111* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:54D751* + ID_OUI_FROM_DATABASE=Proximus + +OUI:D8F1F0* + ID_OUI_FROM_DATABASE=Pepxim International Limited + +OUI:0019F0* + ID_OUI_FROM_DATABASE=UNIONMAN TECHNOLOGY CO.,LTD + +OUI:506E92* + ID_OUI_FROM_DATABASE=Innocent Technology Co., Ltd. + +OUI:CC4B73* + ID_OUI_FROM_DATABASE=AMPAK Technology, Inc. + +OUI:900A1A* + ID_OUI_FROM_DATABASE=Taicang T&W Electronics + +OUI:CC03D9* + ID_OUI_FROM_DATABASE=Cisco Meraki + +OUI:506184* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:F81547* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:A01290* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:B4A95A* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:BCADAB* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:3C3A73* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:60271C* + ID_OUI_FROM_DATABASE=VIDEOR E. Hartig GmbH + OUI:2C3996* ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS @@ -63626,9 +65618,6 @@ OUI:9060F1* OUI:EC26CA* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -OUI:A09347* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:2C088C* ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. @@ -63686,12 +65675,6 @@ OUI:08181A* OUI:002512* ID_OUI_FROM_DATABASE=zte corporation -OUI:CCF954* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:703018* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:B0A37E* ID_OUI_FROM_DATABASE=Qingdao Haier Telecom Co.,Ltd @@ -63755,30 +65738,6 @@ OUI:84A8E4* OUI:202BC1* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:3475C7* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:6CFA58* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:64A7DD* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:646A52* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:F873A2* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:64C354* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:B4B017* - ID_OUI_FROM_DATABASE=Avaya Inc - -OUI:581626* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:741BB2* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -64958,9 +66917,6 @@ OUI:E85D6B* OUI:8C3357* ID_OUI_FROM_DATABASE=HiteVision Digital Media Technology Co.,Ltd. -OUI:506787* - ID_OUI_FROM_DATABASE=iTellus - OUI:F4D261* ID_OUI_FROM_DATABASE=SEMOCON Co., Ltd @@ -65153,9 +67109,6 @@ OUI:90DFB7* OUI:B843E4* ID_OUI_FROM_DATABASE=Vlatacom -OUI:8425A4* - ID_OUI_FROM_DATABASE=Tariox Limited - OUI:E07F53* ID_OUI_FROM_DATABASE=TECHBOARD SRL @@ -65987,9 +67940,6 @@ OUI:2CEDEB* OUI:381C4A* ID_OUI_FROM_DATABASE=SIMCom Wireless Solutions Co.,Ltd. -OUI:C8DE51* - ID_OUI_FROM_DATABASE=Integra Networks, Inc. - OUI:901EDD* ID_OUI_FROM_DATABASE=GREAT COMPUTER CORPORATION @@ -66929,9 +68879,6 @@ OUI:C4D489* OUI:1C7C11* ID_OUI_FROM_DATABASE=EID -OUI:F43E61* - ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co., Ltd - OUI:B0B32B* ID_OUI_FROM_DATABASE=Slican Sp. z o.o. @@ -67157,9 +69104,6 @@ OUI:9C4563* OUI:E42771* ID_OUI_FROM_DATABASE=Smartlabs -OUI:C4EEF5* - ID_OUI_FROM_DATABASE=Oclaro, Inc. - OUI:0876FF* ID_OUI_FROM_DATABASE=Thomson Telecom Belgium @@ -68624,9 +70568,6 @@ OUI:001FAA* OUI:001FA5* ID_OUI_FROM_DATABASE=Blue-White Industries -OUI:001FA4* - ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd - OUI:001FA0* ID_OUI_FROM_DATABASE=A10 Networks @@ -68840,9 +70781,6 @@ OUI:001D4D* OUI:001D49* ID_OUI_FROM_DATABASE=Innovation Wireless Inc. -OUI:001D44* - ID_OUI_FROM_DATABASE=KROHNE Messtechnik GmbH - OUI:001D3D* ID_OUI_FROM_DATABASE=Avidyne Corporation @@ -69623,9 +71561,6 @@ OUI:00181D* OUI:001811* ID_OUI_FROM_DATABASE=Neuros Technology International, LLC. -OUI:00180A* - ID_OUI_FROM_DATABASE=Meraki, Inc. - OUI:001801* ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc @@ -70691,9 +72626,6 @@ OUI:000F1D* OUI:000F10* ID_OUI_FROM_DATABASE=RDM Corporation -OUI:000F17* - ID_OUI_FROM_DATABASE=Insta Elektro GmbH - OUI:000F1E* ID_OUI_FROM_DATABASE=Chengdu KT Electric Co.of High & New Technology @@ -71054,9 +72986,6 @@ OUI:000C03* OUI:000CA4* ID_OUI_FROM_DATABASE=Prompttec Product Management GmbH -OUI:000CAB* - ID_OUI_FROM_DATABASE=COMMEND International - OUI:000C98* ID_OUI_FROM_DATABASE=LETEK Communications Inc. @@ -72665,9 +74594,6 @@ OUI:000232* OUI:00012A* ID_OUI_FROM_DATABASE=Telematica Sistems Inteligente -OUI:000130* - ID_OUI_FROM_DATABASE=Extreme Networks - OUI:000137* ID_OUI_FROM_DATABASE=IT Farm Corporation @@ -73832,9 +75758,6 @@ OUI:002054* OUI:0020A7* ID_OUI_FROM_DATABASE=PAIRGAIN TECHNOLOGIES, INC. -OUI:0020DA* - ID_OUI_FROM_DATABASE=Alcatel North America ESD - OUI:002005* ID_OUI_FROM_DATABASE=SIMPLE TECHNOLOGY @@ -74735,9 +76658,6 @@ OUI:88AE1D* OUI:5C353B* ID_OUI_FROM_DATABASE=Compal Broadband Networks, Inc. -OUI:C8F230* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:1C4419* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. @@ -74978,21 +76898,12 @@ OUI:DC0B1A* OUI:74888B* ID_OUI_FROM_DATABASE=ADB Broadband Italia -OUI:84D6D0* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -OUI:E0CB1D* - ID_OUI_FROM_DATABASE=Private - OUI:ACD074* ID_OUI_FROM_DATABASE=Espressif Inc. OUI:D05349* ID_OUI_FROM_DATABASE=Liteon Technology Corporation -OUI:00BB3A* - ID_OUI_FROM_DATABASE=Private - OUI:000941* ID_OUI_FROM_DATABASE=Allied Telesis R&D Center K.K. @@ -75203,24 +77114,9 @@ OUI:18227E* OUI:00F46F* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:BC1485* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:9CE6E7* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:380195* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:5CF6DC* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:1077B1* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:508569* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:0090A2* ID_OUI_FROM_DATABASE=CyberTAN Technology Inc. @@ -75461,9 +77357,6 @@ OUI:0C5A9E* OUI:00C164* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:C4BED4* - ID_OUI_FROM_DATABASE=Avaya Inc - OUI:98E7F5* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD @@ -75521,9 +77414,6 @@ OUI:E0071B* OUI:A86AC1* ID_OUI_FROM_DATABASE=HanbitEDS Co., Ltd. -OUI:40163B* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:88B1E1* ID_OUI_FROM_DATABASE=Mojo Networks, Inc. @@ -75800,9 +77690,6 @@ OUI:E811CA* OUI:ECD68A* ID_OUI_FROM_DATABASE=Shenzhen JMicron Intelligent Technology Developmen -OUI:1C77F6* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:08D0B7* ID_OUI_FROM_DATABASE=Qingdao Hisense Communications Co.,Ltd. @@ -76019,135 +77906,9 @@ OUI:BC8AA3* OUI:70A84C* ID_OUI_FROM_DATABASE=MONAD., Inc. -OUI:00D088* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001675* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0016B5* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001784* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0017E2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:CC7D37* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001A77* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:984B4A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0015A4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0015A3* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:7CBFB1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:8096B1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00909C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001180* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0017EE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:407009* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:94877C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001DD2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:9C3426* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:5C8FE0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:6CCA08* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:5465DE* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:F8EDA5* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:00A289* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:ACEC80* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:3C7A8A* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:000FCC* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:BCCAB5* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:80F503* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:8496D8* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:D42C0F* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:E0B7B1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0024A0* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:C0C522* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:5CB066* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002210* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:00211E* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:E48399* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:002636* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:0012C9* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001CFB* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001C12* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001FC4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:6C1E90* ID_OUI_FROM_DATABASE=Hansol Technics Co., Ltd. @@ -76754,9 +78515,6 @@ OUI:FCFAF7* OUI:C8E776* ID_OUI_FROM_DATABASE=PTCOM Technology -OUI:5C497D* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:949AA9* ID_OUI_FROM_DATABASE=Microsoft Corporation @@ -76889,9 +78647,6 @@ OUI:9C5D12* OUI:001F82* ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd. -OUI:E47DBD* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - OUI:0C0227* ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. @@ -76910,9 +78665,6 @@ OUI:B49691* OUI:9CD9CB* ID_OUI_FROM_DATABASE=Lesira Manufacturing Pty Ltd -OUI:34D270* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - OUI:002590* ID_OUI_FROM_DATABASE=Super Micro Computer, Inc. @@ -76970,18 +78722,12 @@ OUI:20780B* OUI:24D51C* ID_OUI_FROM_DATABASE=Zhongtian broadband technology co., LTD -OUI:E44790* - ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD - OUI:28FECD* ID_OUI_FROM_DATABASE=Lemobile Information Technology (Beijing) Co., Ltd. OUI:001992* ID_OUI_FROM_DATABASE=Adtran Inc -OUI:002365* - ID_OUI_FROM_DATABASE=Insta Elektro GmbH - OUI:4C1694* ID_OUI_FROM_DATABASE=shenzhen sibituo Technology Co., Ltd @@ -77026,3 +78772,495 @@ OUI:B81DAA* OUI:407D0F* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:3805AC* + ID_OUI_FROM_DATABASE=Piller Group GmbH + +OUI:F8BBBF* + ID_OUI_FROM_DATABASE=eero inc. + +OUI:0CF4D5* + ID_OUI_FROM_DATABASE=Ruckus Wireless + +OUI:000130* + ID_OUI_FROM_DATABASE=Extreme Networks + +OUI:706DEC* + ID_OUI_FROM_DATABASE=Wifi-soft LLC + +OUI:AC6B0F* + ID_OUI_FROM_DATABASE=CADENCE DESIGN SYSTEMS INC + +OUI:00BB3A* + ID_OUI_FROM_DATABASE=Private + +OUI:E0CB1D* + ID_OUI_FROM_DATABASE=Private + +OUI:84D6D0* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:34D270* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:CC82EB* + ID_OUI_FROM_DATABASE=KYOCERA CORPORATION + +OUI:5082D5* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:9C84BF* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:7894B4* + ID_OUI_FROM_DATABASE=Sercomm Corporation. + +OUI:000F17* + ID_OUI_FROM_DATABASE=Insta Elektro GmbH + +OUI:002365* + ID_OUI_FROM_DATABASE=Insta Elektro GmbH + +OUI:C4EEF5* + ID_OUI_FROM_DATABASE=II-VI Incorporated + +OUI:002CC8* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:70AF24* + ID_OUI_FROM_DATABASE=TP Vision Belgium NV + +OUI:7CE97C* + ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED + +OUI:285F2F* + ID_OUI_FROM_DATABASE=RNware Co.,Ltd. + +OUI:E0C0D1* + ID_OUI_FROM_DATABASE=CK Telecom (Shenzhen) Limited + +OUI:948BC1* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:4827EA* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:049573* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:001D44* + ID_OUI_FROM_DATABASE=Krohne + +OUI:48BF6B* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:245BA7* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:BCA920* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:D055B2* + ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd. + +OUI:A49BF5* + ID_OUI_FROM_DATABASE=Hybridserver Tec GmbH + +OUI:B436E3* + ID_OUI_FROM_DATABASE=KBVISION GROUP + +OUI:488803* + ID_OUI_FROM_DATABASE=ManTechnology Inc. + +OUI:7C6BF7* + ID_OUI_FROM_DATABASE=NTI co., ltd. + +OUI:54E061* + ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD + +OUI:B47C9C* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:E81367* + ID_OUI_FROM_DATABASE=AIRSOUND Inc. + +OUI:64D154* + ID_OUI_FROM_DATABASE=Routerboard.com + +OUI:0020DA* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise + +OUI:1CDA27* + ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. + +OUI:345BBB* + ID_OUI_FROM_DATABASE=GD Midea Air-Conditioning Equipment Co.,Ltd. + +OUI:34CE00* + ID_OUI_FROM_DATABASE=XIAOMI Electronics,CO.,LTD + +OUI:F82F08* + ID_OUI_FROM_DATABASE=Molex + +OUI:68262A* + ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD + +OUI:680235* + ID_OUI_FROM_DATABASE=Konten Networks Inc. + +OUI:3C678C* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:D06F82* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:844765* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:A0C4A5* + ID_OUI_FROM_DATABASE=SYGN HOUSE CO.,LTD + +OUI:506787* + ID_OUI_FROM_DATABASE=Planet Networks + +OUI:C83A6B* + ID_OUI_FROM_DATABASE=Roku, Inc + +OUI:B4C6F8* + ID_OUI_FROM_DATABASE=Axilspot Communication + +OUI:70D923* + ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. + +OUI:B83A08* + ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch + +OUI:388C50* + ID_OUI_FROM_DATABASE=LG Electronics + +OUI:50D37F* + ID_OUI_FROM_DATABASE=Yu Fly Mikly Way Science and Technology Co., Ltd. + +OUI:D8D866* + ID_OUI_FROM_DATABASE=SHENZHEN TOZED TECHNOLOGIES CO.,LTD. + +OUI:F43E61* + ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT + +OUI:001FA4* + ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT + +OUI:1C5A0B* + ID_OUI_FROM_DATABASE=Tegile Systems + +OUI:38AC3D* + ID_OUI_FROM_DATABASE=Nephos Inc + +OUI:A09347* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:C8F230* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:1C77F6* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:E44790* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:D4503F* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:8425A4* + ID_OUI_FROM_DATABASE=Tariox Limited + +OUI:D8C8E9* + ID_OUI_FROM_DATABASE=Phicomm (Shanghai) Co., Ltd. + +OUI:CC90E8* + ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd + +OUI:88CC45* + ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd + +OUI:605317* + ID_OUI_FROM_DATABASE=Sandstone Technologies + +OUI:50338B* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:986C5C* + ID_OUI_FROM_DATABASE=Jiangxi Gosun Guard Security Co.,Ltd + +OUI:F4FCB1* + ID_OUI_FROM_DATABASE=JJ Corp + +OUI:543B30* + ID_OUI_FROM_DATABASE=duagon AG + +OUI:60BA18* + ID_OUI_FROM_DATABASE=nextLAP GmbH + +OUI:704CA5* + ID_OUI_FROM_DATABASE=Fortinet, Inc. + +OUI:40163B* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:5C497D* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:E47DBD* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:503DA1* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:A040A0* + ID_OUI_FROM_DATABASE=NETGEAR + +OUI:508569* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:1077B1* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:5CF6DC* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:380195* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:BC1485* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:88D50C* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD + +OUI:509A4C* + ID_OUI_FROM_DATABASE=Dell Inc. + +OUI:00180A* + ID_OUI_FROM_DATABASE=Cisco Meraki + +OUI:AC2205* + ID_OUI_FROM_DATABASE=Compal Broadband Networks, Inc. + +OUI:80A036* + ID_OUI_FROM_DATABASE=Shanghai MXCHIP Information Technology Co., Ltd. + +OUI:0012C9* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:984B4A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001A77* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:CC7D37* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0017E2* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001784* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0016B5* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001675* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00D088* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0017EE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001180* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00909C* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:8096B1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:7CBFB1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0015A3* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0015A4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:9C3426* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DD2* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:00211E* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002210* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001FC4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001C12* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001CFB* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:D42C0F* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:8496D8* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:80F503* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:5CB066* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:C0C522* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:0024A0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:002636* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E48399* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E0B7B1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:94877C* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:407009* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:F8EDA5* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:5465DE* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:6CCA08* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:5C8FE0* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:8C395C* + ID_OUI_FROM_DATABASE=Bit4id Srl + +OUI:BCCAB5* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:000FCC* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:3C7A8A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:ACEC80* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:2CA17D* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:309C23* + ID_OUI_FROM_DATABASE=Micro-Star INTL CO., LTD. + +OUI:947BE7* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:2C2617* + ID_OUI_FROM_DATABASE=Oculus VR, LLC + +OUI:98F7D7* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:2C41A1* + ID_OUI_FROM_DATABASE=Bose Corporation + +OUI:C8DE51* + ID_OUI_FROM_DATABASE=IntegraOptics + +OUI:182CB4* + ID_OUI_FROM_DATABASE=Nectarsoft Co., Ltd. + +OUI:14780B* + ID_OUI_FROM_DATABASE=PerkinElmer Technologies GmbH & Co. KG + +OUI:74DADA* + ID_OUI_FROM_DATABASE=D-Link International + +OUI:4C910C* + ID_OUI_FROM_DATABASE=Corporativo Lanix S.A. de C.V. + +OUI:BCD713* + ID_OUI_FROM_DATABASE=Owl Labs + +OUI:E8E1E1* + ID_OUI_FROM_DATABASE=Gemtek Technology Co., Ltd. + +OUI:98F2B3* + ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise + +OUI:BC1C81* + ID_OUI_FROM_DATABASE=Sichuan iLink Technology Co., Ltd. + +OUI:CCF954* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:581626* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:B4B017* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:64C354* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:F873A2* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:646A52* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:64A7DD* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:6CFA58* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:3475C7* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:C4BED4* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:30FE31* + ID_OUI_FROM_DATABASE=Nokia + +OUI:703018* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:78B28D* + ID_OUI_FROM_DATABASE=Beijing Tengling Technology CO.Ltd + +OUI:000CAB* + ID_OUI_FROM_DATABASE=Commend International GmbH diff --git a/hwdb/20-acpi-vendor.hwdb b/hwdb/20-acpi-vendor.hwdb index c0fe421c11..886e61aa38 100644 --- a/hwdb/20-acpi-vendor.hwdb +++ b/hwdb/20-acpi-vendor.hwdb @@ -6,6 +6,9 @@ # # With various additions from other sources +acpi:3GVR*: + ID_VENDOR_FROM_DATABASE=VR Technology Holdings Limited + acpi:3NOD*: ID_VENDOR_FROM_DATABASE=Shenzhen three Connaught Information Technology Co., Ltd. (3nod Group) @@ -1947,6 +1950,9 @@ acpi:DPL*: acpi:DPM*: ID_VENDOR_FROM_DATABASE=ADPM Synthesis sas +acpi:DPN*: + ID_VENDOR_FROM_DATABASE=Shanghai Lexiang Technology Limited + acpi:DPS*: ID_VENDOR_FROM_DATABASE=Digital Processing Systems @@ -1983,6 +1989,9 @@ acpi:DSD*: acpi:DSI*: ID_VENDOR_FROM_DATABASE=Digitan Systems Inc +acpi:DSJ*: + ID_VENDOR_FROM_DATABASE=VR Technology Holdings Limited + acpi:DSM*: ID_VENDOR_FROM_DATABASE=DSM Digital Services GmbH @@ -3489,6 +3498,9 @@ acpi:IVI*: acpi:IVM*: ID_VENDOR_FROM_DATABASE=Iiyama North America +acpi:IVR*: + ID_VENDOR_FROM_DATABASE=Inlife-Handnet Co., Ltd. + acpi:IVS*: ID_VENDOR_FROM_DATABASE=Intevac Photonics Inc. @@ -5367,6 +5379,9 @@ acpi:PVN*: acpi:PVP*: ID_VENDOR_FROM_DATABASE=Klos Technologies, Inc. +acpi:PVR*: + ID_VENDOR_FROM_DATABASE=Pimax Tech. CO., LTD + acpi:PXC*: ID_VENDOR_FROM_DATABASE=Phoenix Contact @@ -6780,6 +6795,9 @@ acpi:TVD*: acpi:TVI*: ID_VENDOR_FROM_DATABASE=Truevision +acpi:TVL*: + ID_VENDOR_FROM_DATABASE=Total Vision LTD + acpi:TVM*: ID_VENDOR_FROM_DATABASE=Taiwan Video & Monitor Corporation diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb index ea190ff7ca..83ff9f3668 100644 --- a/hwdb/20-pci-vendor-model.hwdb +++ b/hwdb/20-pci-vendor-model.hwdb @@ -68,12 +68,18 @@ pci:v0000021Bd00008139* pci:v00000270* ID_VENDOR_FROM_DATABASE=Hauppauge computer works Inc. (Wrong ID) +pci:v00000291* + ID_VENDOR_FROM_DATABASE=Davicom Semiconductor, Inc. (Wrong ID) + pci:v000002AC* ID_VENDOR_FROM_DATABASE=SpeedStream pci:v000002ACd00001012* ID_MODEL_FROM_DATABASE=1012 PCMCIA 10/100 Ethernet Card [RTL81xx] +pci:v000002E0* + ID_VENDOR_FROM_DATABASE=XFX Pine Group Inc. (Wrong ID) + pci:v00000303* ID_VENDOR_FROM_DATABASE=Hewlett-Packard Company (Wrong ID) @@ -653,6 +659,9 @@ pci:v00001000d00000014sv00001028sd00001FD4* pci:v00001000d00000014sv00001D49sd00000602* ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3516 (ThinkSystem RAID 930-16i 4GB Flash PCIe 12Gb Adapter) +pci:v00001000d00000015* + ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3416 + pci:v00001000d00000016* ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3508 @@ -1547,6 +1556,9 @@ pci:v00001000d00000097sv00001028sd00001FD2* pci:v00001000d00000097sv00001028sd00001FD3* ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (HBA330 MMZ) +pci:v00001000d00000097sv00001BD4sd00000011* + ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (Inspur 12Gb 8i-3008 IT SAS HBA) + pci:v00001000d000000AB* ID_MODEL_FROM_DATABASE=SAS3516 Fusion-MPT Tri-Mode RAID On Chip (ROC) @@ -1554,10 +1566,10 @@ pci:v00001000d000000AC* ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) pci:v00001000d000000ACsv00001D49sd00000201* - ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 9400-16i PCIe 12Gb HBA) + ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 430-16i SAS/SATA 12Gb HBA) pci:v00001000d000000ACsv00001D49sd00000203* - ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 9400-16e PCIe 12Gb HBA) + ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 430-16e SAS/SATA 12Gb HBA) pci:v00001000d000000AE* ID_MODEL_FROM_DATABASE=SAS3508 Fusion-MPT Tri-Mode RAID On Chip (ROC) @@ -1566,10 +1578,10 @@ pci:v00001000d000000AF* ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) pci:v00001000d000000AFsv00001D49sd00000200* - ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 9400-8i PCIe 12Gb HBA) + ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 430-8i SAS/SATA 12Gb HBA) pci:v00001000d000000AFsv00001D49sd00000202* - ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 9400-8e PCIe 12Gb HBA) + ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 430-8e SAS/SATA 12Gb HBA) pci:v00001000d000000BE* ID_MODEL_FROM_DATABASE=SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC) @@ -6476,6 +6488,21 @@ pci:v00001002d000067BE* pci:v00001002d000067C0* ID_MODEL_FROM_DATABASE=Ellesmere [Polaris10] +pci:v00001002d000067C4* + ID_MODEL_FROM_DATABASE=Ellesmere [Radeon Pro WX 7100] + +pci:v00001002d000067C7* + ID_MODEL_FROM_DATABASE=Ellesmere [Radeon Pro WX 5100] + +pci:v00001002d000067CA* + ID_MODEL_FROM_DATABASE=Ellesmere [Polaris10] + +pci:v00001002d000067CC* + ID_MODEL_FROM_DATABASE=Ellesmere [Polaris10] + +pci:v00001002d000067CF* + ID_MODEL_FROM_DATABASE=Ellesmere [Polaris10] + pci:v00001002d000067DF* ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] @@ -6527,6 +6554,9 @@ pci:v00001002d000067E0* pci:v00001002d000067E1* ID_MODEL_FROM_DATABASE=Baffin [Polaris11] +pci:v00001002d000067E3* + ID_MODEL_FROM_DATABASE=Baffin [Radeon Pro WX 4100] + pci:v00001002d000067E8* ID_MODEL_FROM_DATABASE=Baffin [Polaris11] @@ -6611,6 +6641,9 @@ pci:v00001002d00006811sv00001458sd00002016* pci:v00001002d00006811sv00001462sd00002016* ID_MODEL_FROM_DATABASE=Curacao PRO [Radeon R7 370 / R9 270/370 OEM] (Trinidad PRO [Radeon R9 370 OEM]) +pci:v00001002d00006811sv00001462sd00003050* + ID_MODEL_FROM_DATABASE=Curacao PRO [Radeon R7 370 / R9 270/370 OEM] (R9 270 Gaming OC) + pci:v00001002d00006811sv0000148Csd00002016* ID_MODEL_FROM_DATABASE=Curacao PRO [Radeon R7 370 / R9 270/370 OEM] (Trinidad PRO [Radeon R9 370 OEM]) @@ -8636,6 +8669,24 @@ pci:v00001002d00006939sv0000148Csd00009380* pci:v00001002d00006939sv0000174Bsd0000E308* ID_MODEL_FROM_DATABASE=Tonga PRO [Radeon R9 285/380] (Radeon R9 380 Nitro 4G D5) +pci:v00001002d00006980* + ID_MODEL_FROM_DATABASE=Polaris12 + +pci:v00001002d00006981* + ID_MODEL_FROM_DATABASE=Polaris12 + +pci:v00001002d00006985* + ID_MODEL_FROM_DATABASE=Polaris12 + +pci:v00001002d00006986* + ID_MODEL_FROM_DATABASE=Polaris12 + +pci:v00001002d00006987* + ID_MODEL_FROM_DATABASE=Polaris12 + +pci:v00001002d0000699F* + ID_MODEL_FROM_DATABASE=Polaris12 + pci:v00001002d0000700F* ID_MODEL_FROM_DATABASE=RS100 AGP Bridge @@ -15086,6 +15137,9 @@ pci:v00001043d00000675sv00000675sd00001707* pci:v00001043d00000675sv000010CFsd0000105E* ID_MODEL_FROM_DATABASE=ISDNLink P-IN100-ST-D (ISDN Adapter (PCI Bus, DV, W)) +pci:v00001043d000013A0* + ID_MODEL_FROM_DATABASE=Transformer Book T101HA-GR030R + pci:v00001043d00009602* ID_MODEL_FROM_DATABASE=AMD RS780/RS880 PCI to PCI bridge (int gfx) @@ -16304,6 +16358,12 @@ pci:v0000104Dd0000808A* pci:v0000104Dd000081CE* ID_MODEL_FROM_DATABASE=SxS Pro memory card +pci:v0000104Dd0000905C* + ID_MODEL_FROM_DATABASE=SxS Pro memory card + +pci:v0000104Dd0000907F* + ID_MODEL_FROM_DATABASE=SxS Pro+ memory card + pci:v0000104Dd0000908F* ID_MODEL_FROM_DATABASE=Aeolia ACPI @@ -16328,6 +16388,9 @@ pci:v0000104Dd000090A3* pci:v0000104Dd000090A4* ID_MODEL_FROM_DATABASE=Aeolia USB 3.0 xHCI Host Controller +pci:v0000104Dd000090BC* + ID_MODEL_FROM_DATABASE=SxS Pro+ memory card + pci:v0000104E* ID_VENDOR_FROM_DATABASE=Oak Technology, Inc @@ -18017,6 +18080,48 @@ pci:v00001077d00008031* pci:v00001077d00008032* ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (iSCSI) +pci:v00001077d00008070* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller + +pci:v00001077d00008070sv00001077sd00000011* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FastLinQ QL41212H 25GbE Adapter) + +pci:v00001077d00008070sv00001077sd00000012* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FastLinQ QL41112H 10GbE Adapter) + +pci:v00001077d00008080* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE) + +pci:v00001077d00008080sv00001077sd0000000D* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE) (FastLinQ QL41262H 25GbE FCoE Adapter) + +pci:v00001077d00008080sv00001077sd0000000E* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE) (FastLinQ QL41162H 10GbE FCoE Adapter) + +pci:v00001077d00008084* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (iSCSI) + +pci:v00001077d00008084sv00001077sd0000000D* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (iSCSI) (FastLinQ QL41262H 25GbE iSCSI Adapter) + +pci:v00001077d00008084sv00001077sd0000000E* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (iSCSI) (FastLinQ QL41162H 10GbE iSCSI Adapter) + +pci:v00001077d00008090* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF) + +pci:v00001077d00008090sv00001077sd0000000D* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL41262H 25GbE FCoE Adapter (SR-IOV VF)) + +pci:v00001077d00008090sv00001077sd0000000E* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL41162H 10GbE iSCSI Adapter (SR-IOV VF)) + +pci:v00001077d00008090sv00001077sd00000011* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL41212H 25GbE Adapter (SR-IOV VF)) + +pci:v00001077d00008090sv00001077sd00000012* + ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL41112H 10GbE Adapter (SR-IOV VF)) + pci:v00001077d00008430* ID_MODEL_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller (NIC VF) @@ -22317,7 +22422,7 @@ pci:v000010B5d00009733* ID_MODEL_FROM_DATABASE=PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch pci:v000010B5d00009733sv00001D49sd00000001* - ID_MODEL_FROM_DATABASE=PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch (ThinkSystem P310W-4P NVMe Switch Card) + ID_MODEL_FROM_DATABASE=PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch (ThinkSystem 1610-4P NVMe Switch Adapter) pci:v000010B5d00009749* ID_MODEL_FROM_DATABASE=PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch @@ -24836,6 +24941,9 @@ pci:v000010DEd00000103sv00001048sd00000C4A* pci:v000010DEd00000103sv00001048sd00000C4B* ID_MODEL_FROM_DATABASE=NV10GL [Quadro] (GLoria II-64 Pro DVII) +pci:v000010DEd00000103sv000010A9sd00009002* + ID_MODEL_FROM_DATABASE=NV10GL [Quadro] (VPro VR3) + pci:v000010DEd00000110* ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] @@ -29882,6 +29990,9 @@ pci:v000010DEd000010C5* pci:v000010DEd000010D8* ID_MODEL_FROM_DATABASE=GT218 [NVS 300] +pci:v000010DEd000010EF* + ID_MODEL_FROM_DATABASE=GP102 HDMI Audio Controller + pci:v000010DEd000010F0* ID_MODEL_FROM_DATABASE=GP104 High Definition Audio Controller @@ -31349,6 +31460,9 @@ pci:v000010DEd00001348* pci:v000010DEd00001349* ID_MODEL_FROM_DATABASE=GM108M [GeForce 930M] +pci:v000010DEd0000134B* + ID_MODEL_FROM_DATABASE=GM108M [GeForce 940MX] + pci:v000010DEd0000134D* ID_MODEL_FROM_DATABASE=GM108M [GeForce 940MX] @@ -31445,6 +31559,12 @@ pci:v000010DEd000013B2* pci:v000010DEd000013B3* ID_MODEL_FROM_DATABASE=GM107GLM [Quadro K2200M] +pci:v000010DEd000013B4* + ID_MODEL_FROM_DATABASE=GM107GLM [Quadro M620 Mobile] + +pci:v000010DEd000013B6* + ID_MODEL_FROM_DATABASE=GM107GLM [Quadro M1200 Mobile] + pci:v000010DEd000013B9* ID_MODEL_FROM_DATABASE=GM107GL [NVS 810] @@ -31506,7 +31626,7 @@ pci:v000010DEd000013F3* ID_MODEL_FROM_DATABASE=GM204GL [Tesla M6] pci:v000010DEd000013F8* - ID_MODEL_FROM_DATABASE=GM204GLM [Quadro M5000M] + ID_MODEL_FROM_DATABASE=GM204GLM [Quadro M5000M / M5000 SE] pci:v000010DEd000013F9* ID_MODEL_FROM_DATABASE=GM204GLM [Quadro M4000M] @@ -31541,17 +31661,23 @@ pci:v000010DEd00001430* pci:v000010DEd00001431* ID_MODEL_FROM_DATABASE=GM206GL [Tesla M4] +pci:v000010DEd00001436* + ID_MODEL_FROM_DATABASE=GM206GLM [Quadro M2200 Mobile] + pci:v000010DEd000015F0* ID_MODEL_FROM_DATABASE=GP100GL pci:v000010DEd000015F1* ID_MODEL_FROM_DATABASE=GP100GL +pci:v000010DEd000015F7* + ID_MODEL_FROM_DATABASE=GP100GL [Tesla P100 PCIe 12GB] + pci:v000010DEd000015F8* - ID_MODEL_FROM_DATABASE=GP100GL + ID_MODEL_FROM_DATABASE=GP100GL [Tesla P100 PCIe 16GB] pci:v000010DEd000015F9* - ID_MODEL_FROM_DATABASE=GP100GL + ID_MODEL_FROM_DATABASE=GP100GL [Tesla P100 SMX2 16GB] pci:v000010DEd00001617* ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 980M] @@ -31622,11 +31748,14 @@ pci:v000010DEd00001B82* pci:v000010DEd00001B83* ID_MODEL_FROM_DATABASE=GP104 +pci:v000010DEd00001B84* + ID_MODEL_FROM_DATABASE=GP104 [GeForce GTX 1060 3GB] + pci:v000010DEd00001BA0* - ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1080] + ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1080 Mobile] pci:v000010DEd00001BA1* - ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1070] + ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1070 Mobile] pci:v000010DEd00001BB0* ID_MODEL_FROM_DATABASE=GP104GL [Quadro P5000] @@ -31634,14 +31763,26 @@ pci:v000010DEd00001BB0* pci:v000010DEd00001BB1* ID_MODEL_FROM_DATABASE=GP104GL +pci:v000010DEd00001BB3* + ID_MODEL_FROM_DATABASE=GP104GL [Tesla P4] + pci:v000010DEd00001BB4* ID_MODEL_FROM_DATABASE=GP104GL +pci:v000010DEd00001BB6* + ID_MODEL_FROM_DATABASE=GP104GLM [Quadro P5000 Mobile] + +pci:v000010DEd00001BB7* + ID_MODEL_FROM_DATABASE=GP104GLM [Quadro P4000 Mobile] + +pci:v000010DEd00001BB8* + ID_MODEL_FROM_DATABASE=GP104GLM [Quadro P3000 Mobile] + pci:v000010DEd00001BE0* - ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1080] + ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1080 Mobile] pci:v000010DEd00001BE1* - ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1070] + ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1070 Mobile] pci:v000010DEd00001C00* ID_MODEL_FROM_DATABASE=GP106 @@ -31656,7 +31797,7 @@ pci:v000010DEd00001C03* ID_MODEL_FROM_DATABASE=GP106 [GeForce GTX 1060 6GB] pci:v000010DEd00001C20* - ID_MODEL_FROM_DATABASE=GP106M [GeForce GTX 1060] + ID_MODEL_FROM_DATABASE=GP106M [GeForce GTX 1060 Mobile] pci:v000010DEd00001C30* ID_MODEL_FROM_DATABASE=GP106GL @@ -31665,7 +31806,7 @@ pci:v000010DEd00001C35* ID_MODEL_FROM_DATABASE=GP106 pci:v000010DEd00001C60* - ID_MODEL_FROM_DATABASE=GP106M [GeForce GTX 1060] + ID_MODEL_FROM_DATABASE=GP106M [GeForce GTX 1060 Mobile] pci:v000010DEd00001C70* ID_MODEL_FROM_DATABASE=GP106GL @@ -31679,6 +31820,15 @@ pci:v000010DEd00001C81* pci:v000010DEd00001C82* ID_MODEL_FROM_DATABASE=GP107 [GeForce GTX 1050 Ti] +pci:v000010DEd00001C8C* + ID_MODEL_FROM_DATABASE=GP107M [GeForce GTX 1050 Ti Mobile] + +pci:v000010DEd00001C8D* + ID_MODEL_FROM_DATABASE=GP107M [GeForce GTX 1050 Mobile] + +pci:v000010DEd00001C8E* + ID_MODEL_FROM_DATABASE=GP107M + pci:v000010DEd00001CA7* ID_MODEL_FROM_DATABASE=GP107GL @@ -35886,7 +36036,16 @@ pci:v0000111Fd00005243* ID_MODEL_FROM_DATABASE=Frame capture bus interface pci:v00001120* - ID_VENDOR_FROM_DATABASE=EMC Corporation + ID_VENDOR_FROM_DATABASE=Dell EMC + +pci:v00001120d00002306* + ID_MODEL_FROM_DATABASE=Unity Fibre Channel Controller + +pci:v00001120d00002501* + ID_MODEL_FROM_DATABASE=Unity Ethernet Controller + +pci:v00001120d00002505* + ID_MODEL_FROM_DATABASE=Unity Fibre Channel Controller pci:v00001121* ID_VENDOR_FROM_DATABASE=Zilog @@ -39152,6 +39311,9 @@ pci:v0000119Ed00000003* pci:v0000119F* ID_VENDOR_FROM_DATABASE=Bull HN Information Systems +pci:v0000119Fd00001081* + ID_MODEL_FROM_DATABASE=BXI Host Channel Adapter + pci:v000011A0* ID_VENDOR_FROM_DATABASE=Convex Computer Corporation @@ -40742,6 +40904,9 @@ pci:v000011F8d00007384* pci:v000011F8d00008000* ID_MODEL_FROM_DATABASE=PM8000 [SPC - SAS Protocol Controller] +pci:v000011F8d00008009* + ID_MODEL_FROM_DATABASE=PM8009 SPCve 8x6G + pci:v000011F8d00008032* ID_MODEL_FROM_DATABASE=ATTO Celerity FC8xEN @@ -40781,6 +40946,12 @@ pci:v000011F8d00008072* pci:v000011F8d00008073* ID_MODEL_FROM_DATABASE=PM8073 Tachyon SPCve 12G 16-port SAS/SATA controller +pci:v000011F8d00008531* + ID_MODEL_FROM_DATABASE=PM8531 PFX 24xG3 Fanout PCIe Switches + +pci:v000011F8d00008546* + ID_MODEL_FROM_DATABASE=PM8546 B-FEIP PSX 96xG3 PCIe Storage Switch + pci:v000011F9* ID_VENDOR_FROM_DATABASE=I-Cube Inc @@ -47379,7 +47550,7 @@ pci:v00001425d00005083* ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Ethernet Controller pci:v00001425d00005084* - ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Ethernet Controller + ID_MODEL_FROM_DATABASE=T540-5084 Unified Wire Ethernet Controller pci:v00001425d00005085* ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller @@ -47435,6 +47606,18 @@ pci:v00001425d0000509B* pci:v00001425d0000509C* ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Ethernet Controller +pci:v00001425d0000509D* + ID_MODEL_FROM_DATABASE=T540-509D Unified Wire Ethernet Controller + +pci:v00001425d0000509E* + ID_MODEL_FROM_DATABASE=T520-509E Unified Wire Ethernet Controller + +pci:v00001425d0000509F* + ID_MODEL_FROM_DATABASE=T540-509F Unified Wire Ethernet Controller + +pci:v00001425d000050A0* + ID_MODEL_FROM_DATABASE=T540-50A0 Unified Wire Ethernet Controller + pci:v00001425d00005401* ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller @@ -47520,7 +47703,7 @@ pci:v00001425d00005483* ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Ethernet Controller pci:v00001425d00005484* - ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Ethernet Controller + ID_MODEL_FROM_DATABASE=T540-5084 Unified Wire Ethernet Controller pci:v00001425d00005485* ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller @@ -47576,6 +47759,18 @@ pci:v00001425d0000549B* pci:v00001425d0000549C* ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Ethernet Controller +pci:v00001425d0000549D* + ID_MODEL_FROM_DATABASE=T540-509D Unified Wire Ethernet Controller + +pci:v00001425d0000549E* + ID_MODEL_FROM_DATABASE=T520-509E Unified Wire Ethernet Controller + +pci:v00001425d0000549F* + ID_MODEL_FROM_DATABASE=T540-509F Unified Wire Ethernet Controller + +pci:v00001425d000054A0* + ID_MODEL_FROM_DATABASE=T540-50A0 Unified Wire Ethernet Controller + pci:v00001425d00005501* ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller @@ -47661,7 +47856,7 @@ pci:v00001425d00005583* ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Storage Controller pci:v00001425d00005584* - ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Storage Controller + ID_MODEL_FROM_DATABASE=T540-5084 Unified Wire Storage Controller pci:v00001425d00005585* ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Storage Controller @@ -47717,6 +47912,18 @@ pci:v00001425d0000559B* pci:v00001425d0000559C* ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Storage Controller +pci:v00001425d0000559D* + ID_MODEL_FROM_DATABASE=T540-509D Unified Wire Storage Controller + +pci:v00001425d0000559E* + ID_MODEL_FROM_DATABASE=T520-509E Unified Wire Storage Controller + +pci:v00001425d0000559F* + ID_MODEL_FROM_DATABASE=T540-509F Unified Wire Storage Controller + +pci:v00001425d000055A0* + ID_MODEL_FROM_DATABASE=T540-50A0 Unified Wire Storage Controller + pci:v00001425d00005601* ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller @@ -47802,7 +48009,7 @@ pci:v00001425d00005683* ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Storage Controller pci:v00001425d00005684* - ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Storage Controller + ID_MODEL_FROM_DATABASE=T540-5084 Unified Wire Storage Controller pci:v00001425d00005685* ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Storage Controller @@ -47858,6 +48065,18 @@ pci:v00001425d0000569B* pci:v00001425d0000569C* ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Storage Controller +pci:v00001425d0000569D* + ID_MODEL_FROM_DATABASE=T540-509D Unified Wire Storage Controller + +pci:v00001425d0000569E* + ID_MODEL_FROM_DATABASE=T520-509E Unified Wire Storage Controller + +pci:v00001425d0000569F* + ID_MODEL_FROM_DATABASE=T540-509F Unified Wire Storage Controller + +pci:v00001425d000056A0* + ID_MODEL_FROM_DATABASE=T540-50A0 Unified Wire Storage Controller + pci:v00001425d00005701* ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller @@ -48060,7 +48279,7 @@ pci:v00001425d00005883* ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Ethernet Controller [VF] pci:v00001425d00005884* - ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Ethernet Controller [VF] + ID_MODEL_FROM_DATABASE=T540-5084 Unified Wire Ethernet Controller [VF] pci:v00001425d00005885* ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller [VF] @@ -48116,6 +48335,18 @@ pci:v00001425d0000589B* pci:v00001425d0000589C* ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Ethernet Controller [VF] +pci:v00001425d0000589D* + ID_MODEL_FROM_DATABASE=T540-509D Unified Wire Ethernet Controller [VF] + +pci:v00001425d0000589E* + ID_MODEL_FROM_DATABASE=T520-509E Unified Wire Ethernet Controller [VF] + +pci:v00001425d0000589F* + ID_MODEL_FROM_DATABASE=T540-509F Unified Wire Ethernet Controller [VF] + +pci:v00001425d000058A0* + ID_MODEL_FROM_DATABASE=T540-50A0 Unified Wire Ethernet Controller [VF] + pci:v00001425d00006001* ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller @@ -48155,6 +48386,12 @@ pci:v00001425d00006014* pci:v00001425d00006015* ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Ethernet Controller +pci:v00001425d00006080* + ID_MODEL_FROM_DATABASE=T6225-6080 Unified Wire Ethernet Controller + +pci:v00001425d00006081* + ID_MODEL_FROM_DATABASE=T62100-6081 Unified Wire Ethernet Controller + pci:v00001425d00006401* ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller @@ -48194,6 +48431,12 @@ pci:v00001425d00006414* pci:v00001425d00006415* ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Ethernet Controller +pci:v00001425d00006480* + ID_MODEL_FROM_DATABASE=T6225-6080 Unified Wire Ethernet Controller + +pci:v00001425d00006481* + ID_MODEL_FROM_DATABASE=T62100-6081 Unified Wire Ethernet Controller + pci:v00001425d00006501* ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Storage Controller @@ -48233,6 +48476,12 @@ pci:v00001425d00006514* pci:v00001425d00006515* ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Storage Controller +pci:v00001425d00006580* + ID_MODEL_FROM_DATABASE=T6225-6080 Unified Wire Storage Controller + +pci:v00001425d00006581* + ID_MODEL_FROM_DATABASE=T62100-6081 Unified Wire Storage Controller + pci:v00001425d00006601* ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Storage Controller @@ -48272,6 +48521,12 @@ pci:v00001425d00006614* pci:v00001425d00006615* ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Storage Controller +pci:v00001425d00006680* + ID_MODEL_FROM_DATABASE=T6225-6080 Unified Wire Storage Controller + +pci:v00001425d00006681* + ID_MODEL_FROM_DATABASE=T62100-6081 Unified Wire Storage Controller + pci:v00001425d00006801* ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller [VF] @@ -48311,6 +48566,12 @@ pci:v00001425d00006814* pci:v00001425d00006815* ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Ethernet Controller [VF] +pci:v00001425d00006880* + ID_MODEL_FROM_DATABASE=T6225-6080 Unified Wire Ethernet Controller [VF] + +pci:v00001425d00006881* + ID_MODEL_FROM_DATABASE=T62100-6081 Unified Wire Ethernet Controller [VF] + pci:v00001425d0000A000* ID_MODEL_FROM_DATABASE=PE10K Unified Wire Ethernet Controller @@ -48516,7 +48777,10 @@ pci:v0000144Dd0000A800* ID_MODEL_FROM_DATABASE=XP941 PCIe SSD pci:v0000144Dd0000A802* - ID_MODEL_FROM_DATABASE=NVMe SSD Controller + ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM951/PM951 + +pci:v0000144Dd0000A804* + ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM961/PM961 pci:v0000144Dd0000A820* ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X @@ -48890,6 +49154,9 @@ pci:v000014A3* pci:v000014A4* ID_VENDOR_FROM_DATABASE=Lite-On Technology Corporation +pci:v000014A4d000022F1* + ID_MODEL_FROM_DATABASE=M8Pe Series NVMe SSD + pci:v000014A4d00004318* ID_MODEL_FROM_DATABASE=Broadcom BCM4318 [AirForce One 54g] 802.11g WLAN Controller @@ -50396,6 +50663,9 @@ pci:v000014E4d000016BE* pci:v000014E4d000016BF* ID_MODEL_FROM_DATABASE=BCM57765/57785 xD-Picture Card Reader +pci:v000014E4d000016C1* + ID_MODEL_FROM_DATABASE=NetXtreme-E RDMA Virtual Function + pci:v000014E4d000016C6* ID_MODEL_FROM_DATABASE=NetXtreme BCM5702A3 Gigabit Ethernet @@ -50534,9 +50804,15 @@ pci:v000014E4d000016E9* pci:v000014E4d000016EC* ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E Ethernet Partition +pci:v000014E4d000016ED* + ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E RDMA Partition + pci:v000014E4d000016EE* ID_MODEL_FROM_DATABASE=BCM57416 NetXtreme-E Ethernet Partition +pci:v000014E4d000016EF* + ID_MODEL_FROM_DATABASE=BCM57416 NetXtreme-E RDMA Partition + pci:v000014E4d000016F3* ID_MODEL_FROM_DATABASE=NetXtreme BCM5727 Gigabit Ethernet PCIe @@ -53156,6 +53432,9 @@ pci:v0000159A* pci:v0000159B* ID_VENDOR_FROM_DATABASE=Faraday Technology Corp +pci:v0000159Bd00004321* + ID_MODEL_FROM_DATABASE=StorLink SL3516 (Gemini) Host Bridge + pci:v0000159C* ID_VENDOR_FROM_DATABASE=Stratus Computer Systems @@ -53285,6 +53564,9 @@ pci:v000015B3d00000191* pci:v000015B3d000001F6* ID_MODEL_FROM_DATABASE=MT27500 Family [ConnectX-3 Flash Recovery] +pci:v000015B3d000001F8* + ID_MODEL_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro Flash Recovery] + pci:v000015B3d000001FF* ID_MODEL_FROM_DATABASE=MT27600 Family [Connect-IB Flash Recovery] @@ -53297,6 +53579,12 @@ pci:v000015B3d0000020B* pci:v000015B3d0000020D* ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 Flash Recovery] +pci:v000015B3d0000020F* + ID_MODEL_FROM_DATABASE=MT28908A0 Family [ConnectX-6 Flash Recovery] + +pci:v000015B3d00000211* + ID_MODEL_FROM_DATABASE=MT416842 Family [BlueField SoC Flash Recovery] + pci:v000015B3d0000024E* ID_MODEL_FROM_DATABASE=MT53100 [Spectrum-2, Flash recovery mode] @@ -53309,6 +53597,9 @@ pci:v000015B3d00000262* pci:v000015B3d00000263* ID_MODEL_FROM_DATABASE=MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN +pci:v000015B3d00000281* + ID_MODEL_FROM_DATABASE=NPS-600 Flash Recovery + pci:v000015B3d00001002* ID_MODEL_FROM_DATABASE=MT25400 Family [ConnectX-2 Virtual Function] @@ -53421,10 +53712,10 @@ pci:v000015B3d0000101A* ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 Ex Virtual Function] pci:v000015B3d0000101B* - ID_MODEL_FROM_DATABASE=MT28831 + ID_MODEL_FROM_DATABASE=MT28908 Family [ConnectX-6] pci:v000015B3d0000101C* - ID_MODEL_FROM_DATABASE=MT28840 + ID_MODEL_FROM_DATABASE=MT28908 Family [ConnectX-6 Virtual Function] pci:v000015B3d0000101D* ID_MODEL_FROM_DATABASE=MT28841 @@ -53553,10 +53844,10 @@ pci:v000015B3d00007123* ID_MODEL_FROM_DATABASE=NPS-600 network interface VF pci:v000015B3d0000A2D0* - ID_MODEL_FROM_DATABASE=MT416842 + ID_MODEL_FROM_DATABASE=MT416842 BlueField SoC Crypto enabled pci:v000015B3d0000A2D1* - ID_MODEL_FROM_DATABASE=MT416842 + ID_MODEL_FROM_DATABASE=MT416842 BlueField SoC Crypto disabled pci:v000015B3d0000A2D3* ID_MODEL_FROM_DATABASE=MT416842 BlueField multicore SoC family VF @@ -55523,6 +55814,9 @@ pci:v000016D5d00007014* pci:v000016D5d00007016* ID_MODEL_FROM_DATABASE=AP470 48-Channel TTL Level Digital Input/Output Module +pci:v000016D5d00007017* + ID_MODEL_FROM_DATABASE=AP323 16-bit, 20 or 40 Channel Analog Input Module + pci:v000016D5d00007018* ID_MODEL_FROM_DATABASE=AP408: 32-Channel Digital I/O Module @@ -55830,6 +56124,15 @@ pci:v0000177Dd00009702sv0000177Dsd00000003* ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] Intelligent Adapter (CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter) pci:v0000177Dd00009702sv0000177Dsd00000004* + ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] Intelligent Adapter (CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter) + +pci:v0000177Dd00009702sv0000177Dsd00000005* + ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] Intelligent Adapter (CN2360 [LiquidIO II] 2-port 10GbE Intelligent adapter) + +pci:v0000177Dd00009702sv0000177Dsd00000006* + ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] Intelligent Adapter (CN2360 [LiquidIO II] 2-port 25GbE Intelligent adapter) + +pci:v0000177Dd00009702sv0000177Dsd00000007* ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] Intelligent Adapter (CN2350 [LiquidIO II] 2-port 25GbE Intelligent adapter) pci:v0000177Dd00009703* @@ -55841,6 +56144,18 @@ pci:v0000177Dd00009712* pci:v0000177Dd00009712sv0000177Dsd00000003* ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] SRIOV Virtual Function (CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function) +pci:v0000177Dd00009712sv0000177Dsd00000004* + ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] SRIOV Virtual Function (CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function) + +pci:v0000177Dd00009712sv0000177Dsd00000005* + ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] SRIOV Virtual Function (CN2360 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function) + +pci:v0000177Dd00009712sv0000177Dsd00000006* + ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] SRIOV Virtual Function (CN2360 [LiquidIO II] 2-port 25GbE SRIOV Virtual Function) + +pci:v0000177Dd00009712sv0000177Dsd00000007* + ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] SRIOV Virtual Function (CN2350 [LiquidIO II] 2-port 25GbE SRIOV Virtual Function) + pci:v0000177Dd00009713* ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] NVMe SRIOV Virtual Function @@ -56267,6 +56582,9 @@ pci:v000017D3d00001170* pci:v000017D3d00001201* ID_MODEL_FROM_DATABASE=ARC-1200 2-Port PCI-Express to SATA II RAID Controller +pci:v000017D3d00001203* + ID_MODEL_FROM_DATABASE=ARC-1203 2/4/8 Port PCIe 2.0 to SATA 6Gb RAID Controller + pci:v000017D3d00001210* ID_MODEL_FROM_DATABASE=ARC-1210 4-Port PCI-Express to SATA RAID Controller @@ -57206,7 +57524,7 @@ pci:v000018C3* pci:v000018C3d00000720* ID_MODEL_FROM_DATABASE=nGene PCI-Express Multimedia Controller -pci:v000018C3d00000720sv000007CAsd0000032E* +pci:v000018C3d00000720sv00001461sd0000032E* ID_MODEL_FROM_DATABASE=nGene PCI-Express Multimedia Controller (Hybrid M779 PCI-E) pci:v000018C8* @@ -57488,6 +57806,12 @@ pci:v000018F4d00000165* pci:v000018F4d00000175* ID_MODEL_FROM_DATABASE=NT20E3-2-PTP Network Adapter 2x10Gb +pci:v000018F4d00000185* + ID_MODEL_FROM_DATABASE=NT40A01 Network Adapter + +pci:v000018F4d000001A5* + ID_MODEL_FROM_DATABASE=NT200A01 Network Adapter + pci:v000018F6* ID_VENDOR_FROM_DATABASE=NextIO @@ -57753,208 +58077,214 @@ pci:v00001924d00000710sv00001924sd00005202* ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFN4112F-R2) pci:v00001924d00000803* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller pci:v00001924d00000803sv00001014sd00000478* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (2-port 10GbE Low-Latency (R7)) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (2-port 10GbE Low-Latency (R7)) pci:v00001924d00000803sv00001014sd00000479* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (2-port 10GbE OpenOnload (R7)) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (2-port 10GbE OpenOnload (R7)) pci:v00001924d00000803sv00001014sd000004A7* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Solarflare 10Gb Low-latency Dual-port HBA (R7)) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (Solarflare 10Gb Low-latency Dual-port HBA (R7)) pci:v00001924d00000803sv00001014sd000004A8* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Solarflare 10Gb Dual-port HBA (R7)) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (Solarflare 10Gb Dual-port HBA (R7)) pci:v00001924d00000803sv0000103Csd00002132* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1)) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1)) pci:v00001924d00000803sv0000103Csd00002136* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Ethernet 10Gb 2-port 570SFP+ Adapter (R7)) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (Ethernet 10Gb 2-port 570SFP+ Adapter (R7)) pci:v00001924d00000803sv00001924sd00001201* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFA6902F-R1 SFP+ AOE Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFA6902F-R1 SFP+ AOE Adapter) pci:v00001924d00000803sv00001924sd00006200* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R0 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R0 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00006201* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R1 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R1 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00006202* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R2 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R2 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00006204* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R4 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R4 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00006205* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R5 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R5 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00006206* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R6 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R6 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00006207* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R7 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R7 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00006210* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter) pci:v00001924d00000803sv00001924sd00006211* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter) pci:v00001924d00000803sv00001924sd00006217* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter) pci:v00001924d00000803sv00001924sd00006227* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN6122F-R7 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN6122F-R7 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00006237* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter) pci:v00001924d00000803sv00001924sd00006501* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5802K-R1 Mezzanine Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5802K-R1 Mezzanine Adapter) pci:v00001924d00000803sv00001924sd00006511* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5814H-R1 Mezzanine Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5814H-R1 Mezzanine Adapter) pci:v00001924d00000803sv00001924sd00006521* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5812H-R1 Mezzanine Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5812H-R1 Mezzanine Adapter) pci:v00001924d00000803sv00001924sd00006562* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN6832F-R2 SFP+ Mezzanine Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN6832F-R2 SFP+ Mezzanine Adapter) pci:v00001924d00000803sv00001924sd00006A05* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5112F-R5 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5112F-R5 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00006A06* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5112F-R6 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5112F-R6 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00007206* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5162F-R6 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5162F-R6 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00007207* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5162F-R7 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5162F-R7 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00007A06* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5152F-R6 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5152F-R6 SFP+ Server Adapter) pci:v00001924d00000803sv00001924sd00007A07* - ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5152F-R7 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5152F-R7 SFP+ Server Adapter) pci:v00001924d00000813* - ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] + ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller pci:v00001924d00000813sv00001924sd00006100* - ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R0 10GBASE-T Server Adapter) + ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5121T-R0 10GBASE-T Server Adapter) pci:v00001924d00000813sv00001924sd00006102* - ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R2 10GBASE-T Server Adapter) + ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5121T-R2 10GBASE-T Server Adapter) pci:v00001924d00000813sv00001924sd00006103* - ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R3 10GBASE-T Server Adapter) + ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5121T-R3 10GBASE-T Server Adapter) pci:v00001924d00000813sv00001924sd00006104* - ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R4 10GBASE-T Server Adapter) + ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5121T-R4 10GBASE-T Server Adapter) pci:v00001924d00000813sv00001924sd00006902* - ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5111T-R2 10GBASE-T Server Adapter) + ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5111T-R2 10GBASE-T Server Adapter) pci:v00001924d00000813sv00001924sd00006904* - ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5111T-R4 10GBASE-T Server Adapter) + ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5111T-R4 10GBASE-T Server Adapter) pci:v00001924d00000813sv00001924sd00007104* - ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5161T-R4 10GBASE-T Server Adapter) + ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5161T-R4 10GBASE-T Server Adapter) pci:v00001924d00000813sv00001924sd00007904* - ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5151T-R4 10GBASE-T Server Adapter) + ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5151T-R4 10GBASE-T Server Adapter) pci:v00001924d00000903* - ID_MODEL_FROM_DATABASE=SFC9120 + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller pci:v00001924d00000903sv00001014sd000004CC* - ID_MODEL_FROM_DATABASE=SFC9120 (SFN7122F-R2 2x10GbE SFP+ Flareon Ultra) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7122F-R2 2x10GbE SFP+ Flareon Ultra) pci:v00001924d00000903sv00001924sd00008002* - ID_MODEL_FROM_DATABASE=SFC9120 (SFN7122F-R1 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7122F-R1 SFP+ Server Adapter) pci:v00001924d00000903sv00001924sd00008003* - ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter) pci:v00001924d00000903sv00001924sd00008006* - ID_MODEL_FROM_DATABASE=SFC9120 (SFN7022F-R1 SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7022F-R1 SFP+ Server Adapter) pci:v00001924d00000903sv00001924sd00008007* - ID_MODEL_FROM_DATABASE=SFC9120 (SFN7322F-R2 Precision Time SFP+ Server Adapter) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7322F-R2 Precision Time SFP+ Server Adapter) pci:v00001924d00000903sv00001924sd00008009* - ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter) pci:v00001924d00000903sv00001924sd0000800A* - ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x02F-R2 Flareon 7000 Series 10G Adapter) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7x02F-R2 Flareon 7000 Series 10G Adapter) pci:v00001924d00000903sv00001924sd0000800C* - ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter) pci:v00001924d00000903sv00001924sd0000800D* - ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x02F-R3 Flareon 7000 Series 10G Adapter) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7x02F-R3 Flareon 7000 Series 10G Adapter) pci:v00001924d00000903sv00001924sd00008010* - ID_MODEL_FROM_DATABASE=SFC9120 (SFA7942Q-R1 QSFP+ AOE Adapter) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFA7942Q-R1 QSFP+ AOE Adapter) pci:v00001924d00000903sv00001924sd00008015* - ID_MODEL_FROM_DATABASE=SFC9120 (SFA7942Q-A5-0-R1 QSFP+ AOE Adapter) + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFA7942Q-A5-0-R1 QSFP+ AOE Adapter) pci:v00001924d00000923* - ID_MODEL_FROM_DATABASE=SFC9140 + ID_MODEL_FROM_DATABASE=SFC9140 10/40G Ethernet Controller pci:v00001924d00000923sv00001924sd0000800B* - ID_MODEL_FROM_DATABASE=SFC9140 (SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter) + ID_MODEL_FROM_DATABASE=SFC9140 10/40G Ethernet Controller (SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter) pci:v00001924d00000923sv00001924sd0000800E* - ID_MODEL_FROM_DATABASE=SFC9140 (SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter) + ID_MODEL_FROM_DATABASE=SFC9140 10/40G Ethernet Controller (SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter) pci:v00001924d00000923sv00001924sd0000800F* - ID_MODEL_FROM_DATABASE=SFC9140 (SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter) + ID_MODEL_FROM_DATABASE=SFC9140 10/40G Ethernet Controller (SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter) pci:v00001924d00000A03* - ID_MODEL_FROM_DATABASE=SFC9220 + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller pci:v00001924d00000A03sv00001924sd00008011* - ID_MODEL_FROM_DATABASE=SFC9220 (SFN 8022-R1 Solarflare Flareon 8000 Series 10G Adapter) + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8022-R1 Flareon 8000 Series 10G Adapter) pci:v00001924d00000A03sv00001924sd00008012* - ID_MODEL_FROM_DATABASE=SFC9220 (SFN8522-R1 Flareon Ultra 8000 Series 10G Adapter) + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8522-R1 Flareon Ultra 8000 Series 10G Adapter) pci:v00001924d00000A03sv00001924sd00008013* - ID_MODEL_FROM_DATABASE=SFC9220 (SFN8042-R1 Solarflare Flareon 8000 Series 10/40G Adapter) + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8042-R1 Flareon 8000 Series 10/40G Adapter) pci:v00001924d00000A03sv00001924sd00008014* - ID_MODEL_FROM_DATABASE=SFC9220 (SFN8542-R1 Flareon Ultra 8000 Series 10/40G Adapter) + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8542-R1 Flareon Ultra 8000 Series 10/40G Adapter) pci:v00001924d00000A03sv00001924sd00008016* - ID_MODEL_FROM_DATABASE=SFC9220 (SFN8022-R2 Flareon 8000 Series 10G Adapter) + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8022-R2 Flareon 8000 Series 10G Adapter) pci:v00001924d00000A03sv00001924sd00008017* - ID_MODEL_FROM_DATABASE=SFC9220 (SFN8522-R2 Flareon Ultra 8000 Series 10G Adapter) + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8522-R2 Flareon Ultra 8000 Series 10G Adapter) pci:v00001924d00000A03sv00001924sd00008018* - ID_MODEL_FROM_DATABASE=SFC9220 (SFN8042-R2 Flareon 8000 Series 10/40G Adapter) + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8042-R2 Flareon 8000 Series 10/40G Adapter) pci:v00001924d00000A03sv00001924sd00008019* - ID_MODEL_FROM_DATABASE=SFC9220 (SFN8542-R2 Flareon Ultra 8000 Series 10/40G Adapter) + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8542-R2 Flareon Ultra 8000 Series 10/40G Adapter) + +pci:v00001924d00000A03sv00001924sd0000801A* + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8722-R1 Flareon Ultra 8000 Series OCP 10G Adapter) pci:v00001924d00001803* - ID_MODEL_FROM_DATABASE=SFC9020 Virtual Function [Solarstorm] + ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (Virtual Function) pci:v00001924d00001813* - ID_MODEL_FROM_DATABASE=SFL9021 Virtual Function [Solarstorm] + ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (Virtual Function) pci:v00001924d00001903* - ID_MODEL_FROM_DATABASE=SFC9120 Virtual Function + ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (Virtual Function) pci:v00001924d00001923* - ID_MODEL_FROM_DATABASE=SFC9140 Virtual Function + ID_MODEL_FROM_DATABASE=SFC9140 10/40G Ethernet Controller (Virtual Function) + +pci:v00001924d00001A03* + ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (Virtual Function) pci:v00001924d00006703* ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] @@ -58793,6 +59123,12 @@ pci:v000019E3d00005808* pci:v000019E3d0000DD52* ID_MODEL_FROM_DATABASE=DDRdrive X1-30 +pci:v000019E5* + ID_VENDOR_FROM_DATABASE=Huawei Technologies Co., Ltd. + +pci:v000019E5d00001711* + ID_MODEL_FROM_DATABASE=Hi1710 [iBMC Intelligent Management system chip w/VGA support] + pci:v000019E7* ID_VENDOR_FROM_DATABASE=NET (Network Equipment Technologies) @@ -59352,7 +59688,7 @@ pci:v00001B03d00007000* ID_MODEL_FROM_DATABASE=D7 Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder pci:v00001B08* - ID_VENDOR_FROM_DATABASE=MSC Vertriebs GmbH + ID_VENDOR_FROM_DATABASE=MSC Technologies GmbH pci:v00001B0A* ID_VENDOR_FROM_DATABASE=Pegatron @@ -59921,9 +60257,15 @@ pci:v00001C2Cd000000A6* pci:v00001C2Cd000000A9* ID_MODEL_FROM_DATABASE=FBC2XGHH Capture 2x10Gb +pci:v00001C2Cd000000AD* + ID_MODEL_FROM_DATABASE=FBC2CGG3HL Capture 2x200Gb + pci:v00001C2Cd000000AF* ID_MODEL_FROM_DATABASE=Capture slave device +pci:v00001C2Cd0000A001* + ID_MODEL_FROM_DATABASE=FBC2CGG3 Capture 2x200Gb + pci:v00001C32* ID_VENDOR_FROM_DATABASE=Highland Technology, Inc. @@ -59957,6 +60299,12 @@ pci:v00001C58d00000003sv00001014sd000004F5* pci:v00001C58d00000003sv00001014sd000004F6* ID_MODEL_FROM_DATABASE=Ultrastar SN100 Series NVMe SSD (PCIe3 3.2TB NVMe Flash Adapter) +pci:v00001C5F* + ID_VENDOR_FROM_DATABASE=Beijing Memblaze Technology Co. Ltd. + +pci:v00001C5Fd00000540* + ID_MODEL_FROM_DATABASE=PBlaze4 NVMe SSD + pci:v00001C63* ID_VENDOR_FROM_DATABASE=Science and Research Centre of Computer Technology (JSC "NICEVT") @@ -60020,6 +60368,12 @@ pci:v00001CD2d00000304* pci:v00001CD2d00000305* ID_MODEL_FROM_DATABASE=Simulyzer-RT CompactPCI Serial CAN-1 card +pci:v00001CD7* + ID_VENDOR_FROM_DATABASE=Nanjing Magewell Electronics Co., Ltd. + +pci:v00001CD7d00000010* + ID_MODEL_FROM_DATABASE=Pro Capture Endpoint + pci:v00001CDD* ID_VENDOR_FROM_DATABASE=secunet Security Networks AG @@ -60041,6 +60395,9 @@ pci:v00001CE4d00000004* pci:v00001CE4d00000005* ID_MODEL_FROM_DATABASE=ExaNIC X40 +pci:v00001CE4d00000006* + ID_MODEL_FROM_DATABASE=ExaNIC X10-HPT + pci:v00001CF7* ID_VENDOR_FROM_DATABASE=Subspace Dynamics @@ -60143,15 +60500,24 @@ pci:v00001D6Cd0000100C* pci:v00001D6Cd0000100D* ID_MODEL_FROM_DATABASE=AR-ARKA-FX0 [Arkville 32B DPDK Data Mover] +pci:v00001D6Cd0000100Dsv00001D6Csd00002001* + ID_MODEL_FROM_DATABASE=AR-ARKA-FX0 [Arkville 32B DPDK Data Mover] (DPDK-Aware Virtual Function [Arkville VF]) + pci:v00001D6Cd0000100E* ID_MODEL_FROM_DATABASE=AR-ARKA-FX1 [Arkville 64B DPDK Data Mover] +pci:v00001D6Cd0000100Esv00001D6Csd00002001* + ID_MODEL_FROM_DATABASE=AR-ARKA-FX1 [Arkville 64B DPDK Data Mover] (DPDK-Aware Virtual Function [Arkville VF]) + pci:v00001D6Cd00004200* ID_MODEL_FROM_DATABASE=A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument] pci:v00001D78* ID_VENDOR_FROM_DATABASE=DERA +pci:v00001D7C* + ID_VENDOR_FROM_DATABASE=Aerotech, Inc. + pci:v00001D8F* ID_VENDOR_FROM_DATABASE=Enyx @@ -60282,7 +60648,7 @@ pci:v00001FC9d00004022sv00001186sd00004D00* ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (DXE-810S 10GbE SFP+ Ethernet Adapter) pci:v00001FC9d00004022sv00001432sd00008103* - ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (EN-8102PF 10GbE SPF+ Ethernet Adapter) + ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (10 Gigabit Ethernet SFP+ PCI Express Adapter) pci:v00001FC9d00004022sv00001FC9sd00003015* ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (Ethernet Adapter) @@ -60300,7 +60666,7 @@ pci:v00001FC9d00004025sv00001186sd00002900* ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (DXE-810T 10GBase-T Ethernet Adapter) pci:v00001FC9d00004025sv00001432sd00008102* - ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (EN-8102P 10GbE Ethernet Adapter) + ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (10 Gigabit Ethernet PCI Express Adapter) pci:v00001FC9d00004025sv00001FC9sd00003015* ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (Ethernet Adapter) @@ -60311,6 +60677,12 @@ pci:v00001FC9d00004026* pci:v00001FC9d00004027* ID_MODEL_FROM_DATABASE=TN9710P 10GBase-T/NBASE-T Ethernet Adapter +pci:v00001FC9d00004027sv00001432sd00008104* + ID_MODEL_FROM_DATABASE=TN9710P 10GBase-T/NBASE-T Ethernet Adapter (10 Gigabit Ethernet PCI Express Adapter) + +pci:v00001FC9d00004027sv00001FC9sd00003015* + ID_MODEL_FROM_DATABASE=TN9710P 10GBase-T/NBASE-T Ethernet Adapter (Ethernet Adapter) + pci:v00001FC9d00004527* ID_MODEL_FROM_DATABASE=TN9710Q 5GBase-T/NBASE-T Ethernet Adapter @@ -60404,6 +60776,9 @@ pci:v00003000* pci:v00003112* ID_VENDOR_FROM_DATABASE=Satelco Ingenieria S.A. +pci:v00003130* + ID_VENDOR_FROM_DATABASE=AUDIOTRAK + pci:v00003142* ID_VENDOR_FROM_DATABASE=Post Impression Systems. @@ -63062,6 +63437,69 @@ pci:v00008086d00000814* pci:v00008086d00000815* ID_MODEL_FROM_DATABASE=Moorestown SSP0 +pci:v00008086d00000817* + ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #3 + +pci:v00008086d00000818* + ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #4 + +pci:v00008086d00000819* + ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #5 + +pci:v00008086d0000081A* + ID_MODEL_FROM_DATABASE=Medfield GPIO Controller [Core] + +pci:v00008086d0000081B* + ID_MODEL_FROM_DATABASE=Medfield Serial IO HSUART Controller #1 + +pci:v00008086d0000081C* + ID_MODEL_FROM_DATABASE=Medfield Serial IO HSUART Controller #2 + +pci:v00008086d0000081D* + ID_MODEL_FROM_DATABASE=Medfield Serial IO HSUART Controller #3 + +pci:v00008086d0000081E* + ID_MODEL_FROM_DATABASE=Medfield Serial IO HSUART DMA Controller + +pci:v00008086d0000081F* + ID_MODEL_FROM_DATABASE=Medfield GPIO Controller [AON] + +pci:v00008086d00000820* + ID_MODEL_FROM_DATABASE=Medfield SD Host Controller + +pci:v00008086d00000821* + ID_MODEL_FROM_DATABASE=Medfield SDIO Controller #1 + +pci:v00008086d00000822* + ID_MODEL_FROM_DATABASE=Medfield SDIO Controller #2 + +pci:v00008086d00000823* + ID_MODEL_FROM_DATABASE=Medfield eMMC Controller #0 + +pci:v00008086d00000824* + ID_MODEL_FROM_DATABASE=Medfield eMMC Controller #1 + +pci:v00008086d00000827* + ID_MODEL_FROM_DATABASE=Medfield Serial IO DMA Controller + +pci:v00008086d00000828* + ID_MODEL_FROM_DATABASE=Medfield Power Management Unit + +pci:v00008086d00000829* + ID_MODEL_FROM_DATABASE=Medfield USB Device Controller (OTG) + +pci:v00008086d0000082A* + ID_MODEL_FROM_DATABASE=Medfield SCU IPC + +pci:v00008086d0000082C* + ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #0 + +pci:v00008086d0000082D* + ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #1 + +pci:v00008086d0000082E* + ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #2 + pci:v00008086d00000885* ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 @@ -63707,6 +64145,9 @@ pci:v00008086d00000A2A* pci:v00008086d00000A2E* ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller +pci:v00008086d00000A53* + ID_MODEL_FROM_DATABASE=DC P3520 SSD + pci:v00008086d00000BE0* ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller @@ -64779,7 +65220,7 @@ pci:v00008086d00001019sv00008086sd00003025* ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (D875PBZ motherboard) pci:v00008086d00001019sv00008086sd0000302C* - ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (Intel 82865G Mainboard (D865GBF)) + ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (D865GBF Mainboard) pci:v00008086d00001019sv00008086sd00003427* ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (S875WP1-E mainboard) @@ -65373,7 +65814,7 @@ pci:v00008086d00001096sv000015D9sd00008680* ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) (X7DVL-E-O motherboard) pci:v00008086d00001096sv00008086sd00003476* - ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) (Intel S5000PSLSATA Server Board) + ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) (S5000PSLSATA Server Board) pci:v00008086d00001097* ID_MODEL_FROM_DATABASE=631xESB/632xESB DPT LAN Controller (Fiber) @@ -65834,6 +66275,9 @@ pci:v00008086d000010F8sv0000103Csd000018D0* pci:v00008086d000010F8sv00001059sd00000111* ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection (T4007 10GbE interface) +pci:v00008086d000010F8sv00001059sd00000130* + ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection (T4009 10GbE interface) + pci:v00008086d000010F8sv00008086sd0000000C* ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection (Ethernet X520 10GbE Dual Port KX4-KR Mezz) @@ -65984,6 +66428,42 @@ pci:v00008086d00001161sv00008086sd00001161* pci:v00008086d00001162* ID_MODEL_FROM_DATABASE=Xscale 80200 Big Endian Companion Chip +pci:v00008086d00001190* + ID_MODEL_FROM_DATABASE=Merrifield SD/SDIO/eMMC Controller + +pci:v00008086d00001191* + ID_MODEL_FROM_DATABASE=Merrifield Serial IO HSUART Controller + +pci:v00008086d00001192* + ID_MODEL_FROM_DATABASE=Merrifield Serial IO HSUART DMA Controller + +pci:v00008086d00001194* + ID_MODEL_FROM_DATABASE=Merrifield Serial IO SPI Controller + +pci:v00008086d00001195* + ID_MODEL_FROM_DATABASE=Merrifield Serial IO I2C Controller + +pci:v00008086d00001196* + ID_MODEL_FROM_DATABASE=Merrifield Serial IO I2C Controller + +pci:v00008086d00001199* + ID_MODEL_FROM_DATABASE=Merrifield GPIO Controller + +pci:v00008086d0000119E* + ID_MODEL_FROM_DATABASE=Merrifield USB Device Controller (OTG) + +pci:v00008086d000011A0* + ID_MODEL_FROM_DATABASE=Merrifield SCU IPC + +pci:v00008086d000011A1* + ID_MODEL_FROM_DATABASE=Merrifield Power Management Unit + +pci:v00008086d000011A2* + ID_MODEL_FROM_DATABASE=Merrifield Serial IO DMA Controller + +pci:v00008086d000011A5* + ID_MODEL_FROM_DATABASE=Merrifield Serial IO PWM Controller + pci:v00008086d00001200* ID_MODEL_FROM_DATABASE=IXP1200 Network Processor @@ -66968,6 +67448,12 @@ pci:v00008086d00001529* pci:v00008086d0000152A* ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection with FCoE +pci:v00008086d0000152E* + ID_MODEL_FROM_DATABASE=82599 Virtual Function + +pci:v00008086d00001530* + ID_MODEL_FROM_DATABASE=X540 Virtual Function + pci:v00008086d00001533* ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection @@ -67007,6 +67493,9 @@ pci:v00008086d00001537sv00001059sd00000111* pci:v00008086d00001537sv00001059sd00000120* ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection (T4008 1GbE interface) +pci:v00008086d00001537sv00001059sd00000130* + ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection (T4009 1GbE interface) + pci:v00008086d00001538* ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection @@ -67133,6 +67622,9 @@ pci:v00008086d00001563sv00008086sd0000001A* pci:v00008086d00001563sv00008086sd00000022* ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet Converged Network Adapter X550-T2) +pci:v00008086d00001564* + ID_MODEL_FROM_DATABASE=X550 Virtual Function + pci:v00008086d00001565* ID_MODEL_FROM_DATABASE=X550 Virtual Function @@ -67191,17 +67683,23 @@ pci:v00008086d00001572sv0000103Csd000022FD* ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (HP Ethernet 10Gb 2-port 562SFP+ Adapter) pci:v00008086d00001572sv00001137sd00000000* - ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-4) + ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-DA) pci:v00008086d00001572sv00001137sd0000013B* - ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-4) + ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-DA4) + +pci:v00008086d00001572sv00001137sd0000020A* + ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-DA2) pci:v00008086d00001572sv00001590sd00000000* - ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 10GbE 4P 563SFP+ Adapter) + ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ pci:v00008086d00001572sv00001590sd00000225* ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 10GbE 4P 563SFP+ Adapter) +pci:v00008086d00001572sv00001590sd0000022F* + ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 10Gb 2-port 564i Communication Board) + pci:v00008086d00001572sv000017AAsd00000000* ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (ThinkServer X710 AnyFabric for 10GbE SFP+) @@ -67251,7 +67749,7 @@ pci:v00008086d00001572sv00008086sd00000010* ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged Network Adapter X710) pci:v00008086d00001572sv00008086sd00004005* - ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Controller XL710 for 10 Gigabit SFP+) + ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ pci:v00008086d00001572sv00008086sd00004006* ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ @@ -67386,10 +67884,10 @@ pci:v00008086d00001588* ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane pci:v00008086d00001588sv0000103Csd00000000* - ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HPE Ethernet 10/20Gb 2-port 660M Adapter) + ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (Ethernet 10/20Gb 2-port 660M Adapter) pci:v00008086d00001588sv0000103Csd000022FF* - ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HPE Ethernet 10/20Gb 2-port 660M Adapter) + ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (Ethernet 10/20Gb 2-port 660M Adapter) pci:v00008086d00001589* ID_MODEL_FROM_DATABASE=Ethernet Controller X710/X557-AT 10GBASE-T @@ -67466,6 +67964,9 @@ pci:v00008086d000015A5* pci:v00008086d000015A8* ID_MODEL_FROM_DATABASE=Ethernet Connection X552 Virtual Function +pci:v00008086d000015A9* + ID_MODEL_FROM_DATABASE=X552 Virtual Function + pci:v00008086d000015AA* ID_MODEL_FROM_DATABASE=Ethernet Connection X552 10 GbE Backplane @@ -67484,6 +67985,12 @@ pci:v00008086d000015AD* pci:v00008086d000015AE* ID_MODEL_FROM_DATABASE=Ethernet Connection X552 1000BASE-T +pci:v00008086d000015B0* + ID_MODEL_FROM_DATABASE=Ethernet Connection X552 Backplane + +pci:v00008086d000015B4* + ID_MODEL_FROM_DATABASE=X553 Virtual Function + pci:v00008086d000015B5* ID_MODEL_FROM_DATABASE=DSL6340 USB 3.1 Controller [Alpine Ridge] @@ -67499,12 +68006,27 @@ pci:v00008086d000015B8* pci:v00008086d000015B9* ID_MODEL_FROM_DATABASE=Ethernet Connection (3) I219-LM +pci:v00008086d000015BB* + ID_MODEL_FROM_DATABASE=Ethernet Connection (7) I219-LM + +pci:v00008086d000015BC* + ID_MODEL_FROM_DATABASE=Ethernet Connection (7) I219-V + +pci:v00008086d000015BD* + ID_MODEL_FROM_DATABASE=Ethernet Connection (6) I219-LM + +pci:v00008086d000015BE* + ID_MODEL_FROM_DATABASE=Ethernet Connection (6) I219-V + pci:v00008086d000015BF* ID_MODEL_FROM_DATABASE=JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016] pci:v00008086d000015C0* ID_MODEL_FROM_DATABASE=JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] +pci:v00008086d000015C5* + ID_MODEL_FROM_DATABASE=X553 Virtual Function + pci:v00008086d000015D0* ID_MODEL_FROM_DATABASE=Ethernet SDI Adapter FM10420-100GbE-QDA2 @@ -67950,7 +68472,7 @@ pci:v00008086d00001A38sv000015D9sd00008680* ID_MODEL_FROM_DATABASE=5000 Series Chipset DMA Engine (X7DVL-E-O motherboard) pci:v00008086d00001A38sv00008086sd00003476* - ID_MODEL_FROM_DATABASE=5000 Series Chipset DMA Engine (Intel S5000PSLSATA Server Board) + ID_MODEL_FROM_DATABASE=5000 Series Chipset DMA Engine (S5000PSLSATA Server Board) pci:v00008086d00001A48* ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller @@ -71384,6 +71906,12 @@ pci:v00008086d000024F4* pci:v00008086d000024F4sv00008086sd00000030* ID_MODEL_FROM_DATABASE=Wireless 8260 (Dual Band Wireless-AC 8260) +pci:v00008086d000024FD* + ID_MODEL_FROM_DATABASE=Wireless 8265 / 8275 + +pci:v00008086d000024FDsv00008086sd00000010* + ID_MODEL_FROM_DATABASE=Wireless 8265 / 8275 (Dual Band Wireless-AC 8265) + pci:v00008086d00002500* ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH) @@ -72678,7 +73206,7 @@ pci:v00008086d00002670sv000015D9sd00009680* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller (X7DBN Motherboard) pci:v00008086d00002670sv00008086sd00003476* - ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller (Intel S5000PSLSATA Server Board) + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller (S5000PSLSATA Server Board) pci:v00008086d00002680* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SATA IDE Controller @@ -72696,7 +73224,7 @@ pci:v00008086d00002681sv000015D9sd00009680* ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller (X7DBN Motherboard) pci:v00008086d00002681sv00008086sd00003476* - ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller (Intel S5000PSLSATA Server Board) + ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller (S5000PSLSATA Server Board) pci:v00008086d00002682* ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA RAID Controller @@ -72726,7 +73254,7 @@ pci:v00008086d00002688sv000015D9sd00009680* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (X7DBN Motherboard) pci:v00008086d00002688sv00008086sd00003476* - ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (Intel S5000PSLSATA Server Board) + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (S5000PSLSATA Server Board) pci:v00008086d00002689* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 @@ -72747,7 +73275,7 @@ pci:v00008086d00002689sv000015D9sd00009680* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (X7DBN Motherboard) pci:v00008086d00002689sv00008086sd00003476* - ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (Intel S5000PSLSATA Server Board) + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (S5000PSLSATA Server Board) pci:v00008086d0000268A* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 @@ -72765,7 +73293,7 @@ pci:v00008086d0000268Asv000015D9sd00009680* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (X7DBN Motherboard) pci:v00008086d0000268Asv00008086sd00003476* - ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (Intel S5000PSLSATA Server Board) + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (S5000PSLSATA Server Board) pci:v00008086d0000268B* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 @@ -72777,7 +73305,7 @@ pci:v00008086d0000268Bsv000015D9sd00008680* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 (X7DVL-E-O motherboard) pci:v00008086d0000268Bsv00008086sd00003476* - ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 (Intel S5000PSLSATA Server Board) + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 (S5000PSLSATA Server Board) pci:v00008086d0000268C* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller @@ -72798,7 +73326,7 @@ pci:v00008086d0000268Csv000015D9sd00009680* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (X7DBN Motherboard) pci:v00008086d0000268Csv00008086sd00003476* - ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (Intel S5000PSLSATA Server Board) + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (S5000PSLSATA Server Board) pci:v00008086d00002690* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 1 @@ -72843,7 +73371,7 @@ pci:v00008086d0000269Bsv000015D9sd00009680* ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller (X7DBN Motherboard) pci:v00008086d0000269Bsv00008086sd00003476* - ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller (Intel S5000PSLSATA Server Board) + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller (S5000PSLSATA Server Board) pci:v00008086d0000269E* ID_MODEL_FROM_DATABASE=631xESB/632xESB IDE Controller @@ -72894,7 +73422,7 @@ pci:v00008086d00002772sv00008086sd0000544E* ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller (DeskTop Board D945GTP) pci:v00008086d00002772sv00008086sd0000D605* - ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller (Intel Desktop Board D945GCCR) + ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller (Desktop Board D945GCCR) pci:v00008086d00002774* ID_MODEL_FROM_DATABASE=82955X Memory Controller Hub @@ -74043,22 +74571,22 @@ pci:v00008086d00002826* ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller pci:v00008086d00002826sv00001D49sd00000100* - ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331) + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID) pci:v00008086d00002826sv00001D49sd00000101* - ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331) + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID) pci:v00008086d00002826sv00001D49sd00000102* - ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331) + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID) pci:v00008086d00002826sv00001D49sd00000103* - ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331) + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID) pci:v00008086d00002826sv00001D49sd00000104* - ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331) + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID) pci:v00008086d00002826sv00001D49sd00000105* - ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331) + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID) pci:v00008086d00002827* ID_MODEL_FROM_DATABASE=C610/X99 series chipset sSATA Controller [RAID mode] @@ -76956,7 +77484,7 @@ pci:v00008086d00003165sv00008086sd00004210* ID_MODEL_FROM_DATABASE=Wireless 3165 (Dual Band Wireless AC 3165) pci:v00008086d00003166* - ID_MODEL_FROM_DATABASE=Intel Dual Band Wireless-AC 3165 Plus Bluetooth + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3165 Plus Bluetooth pci:v00008086d00003200* ID_MODEL_FROM_DATABASE=GD31244 PCI-X SATA HBA @@ -77783,9 +78311,18 @@ pci:v00008086d000037D0sv000017AAsd00004020* pci:v00008086d000037D0sv000017AAsd00004021* ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ (Intel Ethernet Connection X722 for 10G SFP+) +pci:v00008086d000037D0sv000017AAsd00004022* + ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ + pci:v00008086d000037D1* ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE +pci:v00008086d000037D1sv00001590sd00000216* + ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE (Ethernet 1Gb 2-port 368i Adapter) + +pci:v00008086d000037D1sv00001590sd00000217* + ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE (Ethernet 1Gb 2-port 368FLR-MMT Adapter) + pci:v00008086d000037D1sv000017AAsd00004020* ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE (Intel Ethernet Connection X722 for 1GbE) @@ -77798,15 +78335,24 @@ pci:v00008086d000037D1sv000017AAsd00004022* pci:v00008086d000037D2* ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T +pci:v00008086d000037D2sv00001590sd00000218* + ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T (Ethernet 10Gb 2-port 568FLR-MMT Adapter) + pci:v00008086d000037D2sv000017AAsd00004020* ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T (Intel Ethernet Connection X722 for 10GBASE) pci:v00008086d000037D2sv000017AAsd00004021* ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T (Intel Ethernet Connection X722 for 10GBASE) +pci:v00008086d000037D2sv000017AAsd00004022* + ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T + pci:v00008086d000037D3* ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ +pci:v00008086d000037D3sv00001590sd00000219* + ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ (Ethernet 10Gb 2-port 568FLR-MMSFP+ Adapter) + pci:v00008086d000037D4* ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE QSFP+ @@ -79416,109 +79962,109 @@ pci:v00008086d00005845sv00001AF4sd00001100* ID_MODEL_FROM_DATABASE=QEMU NVM Express Controller (QEMU Virtual Machine) pci:v00008086d00005A84* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Integrated Graphics Controller + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics Controller pci:v00008086d00005A88* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Imaging Unit + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Imaging Unit pci:v00008086d00005A98* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Audio Cluster + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster pci:v00008086d00005A9A* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Trusted Execution Engine + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine pci:v00008086d00005AA2* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Integrated Sensor Hub + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Sensor Hub pci:v00008086d00005AA8* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series USB xHCI + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI pci:v00008086d00005AAC* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #1 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #1 pci:v00008086d00005AAE* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #2 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #2 pci:v00008086d00005AB0* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #3 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #3 pci:v00008086d00005AB2* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #4 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #4 pci:v00008086d00005AB4* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #5 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #5 pci:v00008086d00005AB6* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #6 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #6 pci:v00008086d00005AB8* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #7 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #7 pci:v00008086d00005ABA* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #8 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #8 pci:v00008086d00005ABC* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #1 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #1 pci:v00008086d00005ABE* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #2 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #2 pci:v00008086d00005AC0* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #3 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #3 pci:v00008086d00005AC2* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #1 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #1 pci:v00008086d00005AC4* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #2 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #2 pci:v00008086d00005AC6* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #3 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #3 pci:v00008086d00005AC8* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PWM Pin Controller + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PWM Pin Controller pci:v00008086d00005ACA* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SDXC/MMC Host Controller + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SDXC/MMC Host Controller pci:v00008086d00005ACC* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series eMMC Controller + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series eMMC Controller pci:v00008086d00005AD0* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SDIO Controller + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SDIO Controller pci:v00008086d00005AD4* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SMBus Controller + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller pci:v00008086d00005AD6* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port B #1 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #1 pci:v00008086d00005AD7* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port B #2 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #2 pci:v00008086d00005AD8* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #1 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #1 pci:v00008086d00005AD9* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #2 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #2 pci:v00008086d00005ADA* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #3 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #3 pci:v00008086d00005ADB* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #4 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #4 pci:v00008086d00005AE3* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SATA AHCI Controller + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller pci:v00008086d00005AE8* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Low Pin Count Interface + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface pci:v00008086d00005AEE* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #4 + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #4 pci:v00008086d00005AF0* - ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Host Bridge + ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge pci:v00008086d000065C0* ID_MODEL_FROM_DATABASE=5100 Chipset Memory Controller Hub @@ -82043,6 +82589,63 @@ pci:v00008086d0000A252* pci:v00008086d0000A256* ID_MODEL_FROM_DATABASE=Lewisburg SSATA Controller [RAID mode] +pci:v00008086d0000A282* + ID_MODEL_FROM_DATABASE=200 Series PCH SATA controller [AHCI mode] + +pci:v00008086d0000A294* + ID_MODEL_FROM_DATABASE=200 Series PCH PCI Express Root Port #1 + +pci:v00008086d0000A2A1* + ID_MODEL_FROM_DATABASE=200 Series PCH PMC + +pci:v00008086d0000A2A3* + ID_MODEL_FROM_DATABASE=200 Series PCH SMBus Controller + +pci:v00008086d0000A2A7* + ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO UART Controller #0 + +pci:v00008086d0000A2A8* + ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO UART Controller #1 + +pci:v00008086d0000A2A9* + ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO SPI Controller #0 + +pci:v00008086d0000A2AA* + ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO SPI Controller #1 + +pci:v00008086d0000A2AF* + ID_MODEL_FROM_DATABASE=200 Series PCH USB 3.0 xHCI Controller + +pci:v00008086d0000A2B1* + ID_MODEL_FROM_DATABASE=200 Series PCH Thermal Subsystem + +pci:v00008086d0000A2BA* + ID_MODEL_FROM_DATABASE=200 Series PCH CSME HECI #1 + +pci:v00008086d0000A2BB* + ID_MODEL_FROM_DATABASE=200 Series PCH CSME HECI #2 + +pci:v00008086d0000A2C6* + ID_MODEL_FROM_DATABASE=200 Series PCH LPC Controller + +pci:v00008086d0000A2E0* + ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO I2C Controller #0 + +pci:v00008086d0000A2E1* + ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO I2C Controller #1 + +pci:v00008086d0000A2E2* + ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO I2C Controller #2 + +pci:v00008086d0000A2E3* + ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO I2C Controller #3 + +pci:v00008086d0000A2E6* + ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO UART Controller #2 + +pci:v00008086d0000A2F0* + ID_MODEL_FROM_DATABASE=200 Series PCH HD Audio + pci:v00008086d0000A620* ID_MODEL_FROM_DATABASE=6400/6402 Advanced Memory Buffer (AMB) @@ -84320,6 +84923,9 @@ pci:v0000F1D0d0000CFEE* pci:v0000F1D0d0000DAFF* ID_MODEL_FROM_DATABASE=KONA LHi +pci:v0000F1D0d0000DB09* + ID_MODEL_FROM_DATABASE=Corvid 24 + pci:v0000F1D0d0000DCAF* ID_MODEL_FROM_DATABASE=Kona HD diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb index ec0c26fc35..6acb51bb1c 100644 --- a/hwdb/20-usb-vendor-model.hwdb +++ b/hwdb/20-usb-vendor-model.hwdb @@ -50,6 +50,9 @@ usb:v0127* usb:v0127p0002* ID_MODEL_FROM_DATABASE=HDM Interface +usb:v0127p0127* + ID_MODEL_FROM_DATABASE=ibp + usb:v0145* ID_VENDOR_FROM_DATABASE=Unknown @@ -1841,6 +1844,9 @@ usb:v03F0p9002* usb:v03F0p9102* ID_MODEL_FROM_DATABASE=PhotoSmart M537 +usb:v03F0p9207* + ID_MODEL_FROM_DATABASE=HD-4110 Webcam + usb:v03F0p9302* ID_MODEL_FROM_DATABASE=PhotoSmart R930 series @@ -2063,6 +2069,9 @@ usb:v03FD* usb:v03FDp0008* ID_MODEL_FROM_DATABASE=Platform Cable USB II +usb:v03FDp0050* + ID_MODEL_FROM_DATABASE=dfu downloader + usb:v03FE* ID_VENDOR_FROM_DATABASE=Farallon Comunications @@ -2187,7 +2196,7 @@ usb:v0403p6009* ID_MODEL_FROM_DATABASE=Serial Converter usb:v0403p6010* - ID_MODEL_FROM_DATABASE=FT2232C Dual USB-UART/FIFO IC + ID_MODEL_FROM_DATABASE=FT2232C/D/H Dual UART/FIFO IC usb:v0403p6011* ID_MODEL_FROM_DATABASE=FT4232H Quad HS USB-UART/FIFO IC @@ -2318,6 +2327,9 @@ usb:v0403pBFDB* usb:v0403pBFDC* ID_MODEL_FROM_DATABASE=OpenDCC (GBM) +usb:v0403pC580* + ID_MODEL_FROM_DATABASE=HID UNIKEY dongle [F-Response] + usb:v0403pC630* ID_MODEL_FROM_DATABASE=lcd2usb interface @@ -5432,6 +5444,12 @@ usb:v044F* usb:v044Fp0400* ID_MODEL_FROM_DATABASE=HOTAS Cougar +usb:v044Fp0402* + ID_MODEL_FROM_DATABASE=HOTAS Warthog Joystick + +usb:v044Fp0404* + ID_MODEL_FROM_DATABASE=HOTAS Warthog Throttle + usb:v044Fp044F* ID_MODEL_FROM_DATABASE=GP XID @@ -5501,6 +5519,9 @@ usb:v044FpB653* usb:v044FpB654* ID_MODEL_FROM_DATABASE=Ferrari GT Force Feedback Wheel +usb:v044FpB687* + ID_MODEL_FROM_DATABASE=TWCS Throttle + usb:v044FpB700* ID_MODEL_FROM_DATABASE=Tacticalboard @@ -6401,6 +6422,15 @@ usb:v045Ep02D5* usb:v045Ep02DD* ID_MODEL_FROM_DATABASE=Xbox One Controller (Covert Forces/Firmware 2015) +usb:v045Ep02E3* + ID_MODEL_FROM_DATABASE=Xbox One Elite Controller + +usb:v045Ep02E6* + ID_MODEL_FROM_DATABASE=Wireless XBox Controller Dongle + +usb:v045Ep02EA* + ID_MODEL_FROM_DATABASE=Xbox One S Controller + usb:v045Ep0400* ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 @@ -6851,6 +6881,9 @@ usb:v045Ep0752* usb:v045Ep075D* ID_MODEL_FROM_DATABASE=LifeCam Cinema +usb:v045Ep0761* + ID_MODEL_FROM_DATABASE=LifeCam VX-2000 + usb:v045Ep0766* ID_MODEL_FROM_DATABASE=LifeCam VX-800 @@ -6869,6 +6902,9 @@ usb:v045Ep0772* usb:v045Ep0779* ID_MODEL_FROM_DATABASE=LifeCam HD-3000 +usb:v045Ep077F* + ID_MODEL_FROM_DATABASE=LifeChat LX-6000 Headset + usb:v045Ep0780* ID_MODEL_FROM_DATABASE=Comfort Curve Keyboard 3000 @@ -7148,6 +7184,12 @@ usb:v046Ap002A* usb:v046Ap002D* ID_MODEL_FROM_DATABASE=SmartTerminal XX44 +usb:v046Ap003C* + ID_MODEL_FROM_DATABASE=Raptor Gaming Keyboard + +usb:v046Ap003D* + ID_MODEL_FROM_DATABASE=Raptor Gaming Keyboard Integrated Hub + usb:v046Ap003E* ID_MODEL_FROM_DATABASE=SmartTerminal ST-2xxx @@ -7166,6 +7208,12 @@ usb:v046Ap0106* usb:v046Ap010D* ID_MODEL_FROM_DATABASE=MX-Board 3.0 Keyboard +usb:v046ApB090* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v046ApB091* + ID_MODEL_FROM_DATABASE=Mouse + usb:v046B* ID_VENDOR_FROM_DATABASE=American Megatrends, Inc. @@ -7607,9 +7655,15 @@ usb:v046Dp0A38* usb:v046Dp0A44* ID_MODEL_FROM_DATABASE=Headset H390 +usb:v046Dp0A45* + ID_MODEL_FROM_DATABASE=960 Headset + usb:v046Dp0A4D* ID_MODEL_FROM_DATABASE=G430 Surround Sound Gaming Headset +usb:v046Dp0A5B* + ID_MODEL_FROM_DATABASE=G933 Wireless Headset Dongle + usb:v046Dp0B02* ID_MODEL_FROM_DATABASE=C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode) @@ -7902,7 +7956,7 @@ usb:v046DpC20E* ID_MODEL_FROM_DATABASE=WingMan Formula GP usb:v046DpC211* - ID_MODEL_FROM_DATABASE=iTouch Cordless Reciever + ID_MODEL_FROM_DATABASE=iTouch Cordless Receiver usb:v046DpC212* ID_MODEL_FROM_DATABASE=WingMan Extreme Digital 3D @@ -9149,6 +9203,9 @@ usb:v0480pA208* usb:v0480pB001* ID_MODEL_FROM_DATABASE=Stor.E Partner +usb:v0480pB207* + ID_MODEL_FROM_DATABASE=Canvio Ready + usb:v0480pD000* ID_MODEL_FROM_DATABASE=External Disk 2TB Model DT01ABA200 @@ -9362,6 +9419,9 @@ usb:v048D* usb:v048Dp1165* ID_MODEL_FROM_DATABASE=IT1165 Flash Controller +usb:v048Dp1172* + ID_MODEL_FROM_DATABASE=Flash Drive + usb:v048Dp1336* ID_MODEL_FROM_DATABASE=SD/MMC Cardreader @@ -10145,6 +10205,9 @@ usb:v04A7p04A0* usb:v04A7p04AC* ID_MODEL_FROM_DATABASE=Xerox Travel Scanner 100 +usb:v04A7p04CD* + ID_MODEL_FROM_DATABASE=Xerox Travel Scanner 150 + usb:v04A8* ID_VENDOR_FROM_DATABASE=Multivideo Labs, Inc. @@ -10361,6 +10424,9 @@ usb:v04A9p10A9* usb:v04A9p10B6* ID_MODEL_FROM_DATABASE=PIXMA iP4300 Printer +usb:v04A9p10B7* + ID_MODEL_FROM_DATABASE=PIXMA iP5300 Printer + usb:v04A9p10C2* ID_MODEL_FROM_DATABASE=PIXMA iP1800 Printer @@ -10368,7 +10434,10 @@ usb:v04A9p10C4* ID_MODEL_FROM_DATABASE=Pixma iP4500 Printer usb:v04A9p10C9* - ID_MODEL_FROM_DATABASE=PIXIMA iP4600 Printer + ID_MODEL_FROM_DATABASE=PIXMA iP4600 Printer + +usb:v04A9p10CA* + ID_MODEL_FROM_DATABASE=PIXMA iP3600 Printer usb:v04A9p10E3* ID_MODEL_FROM_DATABASE=PIXMA iX6850 Printer @@ -10394,6 +10463,9 @@ usb:v04A9p1601* usb:v04A9p1607* ID_MODEL_FROM_DATABASE=DR-6080 Scanner +usb:v04A9p1608* + ID_MODEL_FROM_DATABASE=DR-2580C Scanner + usb:v04A9p1700* ID_MODEL_FROM_DATABASE=PIXMA MP110 Scanner @@ -10485,7 +10557,7 @@ usb:v04A9p1727* ID_MODEL_FROM_DATABASE=MX300 ser usb:v04A9p1728* - ID_MODEL_FROM_DATABASE=MX310 ser + ID_MODEL_FROM_DATABASE=PIXMA MX310 series usb:v04A9p1729* ID_MODEL_FROM_DATABASE=MX700 ser @@ -11564,9 +11636,15 @@ usb:v04A9p3212* usb:v04A9p3214* ID_MODEL_FROM_DATABASE=SELPHY CP800 +usb:v04A9p3215* + ID_MODEL_FROM_DATABASE=EOS 60D + usb:v04A9p3218* ID_MODEL_FROM_DATABASE=EOS 600D / Rebel T3i (ptp) +usb:v04A9p3219* + ID_MODEL_FROM_DATABASE=EOS 1D X + usb:v04A9p3223* ID_MODEL_FROM_DATABASE=PowerShot A3300 IS @@ -11615,9 +11693,15 @@ usb:v04A9p3237* usb:v04A9p3238* ID_MODEL_FROM_DATABASE=PowerShot SX40 HS +usb:v04A9p323A* + ID_MODEL_FROM_DATABASE=EOS 5D Mark III + usb:v04A9p323B* ID_MODEL_FROM_DATABASE=EOS Rebel T4i +usb:v04A9p323D* + ID_MODEL_FROM_DATABASE=EOS M + usb:v04A9p323E* ID_MODEL_FROM_DATABASE=PowerShot A1300 @@ -11642,6 +11726,9 @@ usb:v04A9p3244* usb:v04A9p3245* ID_MODEL_FROM_DATABASE=PowerShot SX240 HS +usb:v04A9p3246* + ID_MODEL_FROM_DATABASE=PowerShot ELPH 530 HS / IXUS 510 HS + usb:v04A9p3247* ID_MODEL_FROM_DATABASE=PowerShot ELPH 520 HS / IXUS 500 HS @@ -11654,6 +11741,15 @@ usb:v04A9p3249* usb:v04A9p324A* ID_MODEL_FROM_DATABASE=PowerShot A2300 +usb:v04A9p3250* + ID_MODEL_FROM_DATABASE=EOS 6D + +usb:v04A9p3252* + ID_MODEL_FROM_DATABASE=EOS 1D C + +usb:v04A9p3253* + ID_MODEL_FROM_DATABASE=EOS 70D + usb:v04A9p3255* ID_MODEL_FROM_DATABASE=SELPHY CP900 @@ -11705,9 +11801,24 @@ usb:v04A9p3266* usb:v04A9p3268* ID_MODEL_FROM_DATABASE=PowerShot ELPH 330 HS / IXUS 255 HS +usb:v04A9p326F* + ID_MODEL_FROM_DATABASE=EOS 7D Mark II + +usb:v04A9p3270* + ID_MODEL_FROM_DATABASE=EOS 100D + usb:v04A9p3271* ID_MODEL_FROM_DATABASE=PowerShot A2500 +usb:v04A9p3272* + ID_MODEL_FROM_DATABASE=EOS 700D + +usb:v04A9p3274* + ID_MODEL_FROM_DATABASE=PowerShot G16 + +usb:v04A9p3275* + ID_MODEL_FROM_DATABASE=PowerShot S120 + usb:v04A9p3276* ID_MODEL_FROM_DATABASE=PowerShot SX170 IS @@ -11717,6 +11828,9 @@ usb:v04A9p3277* usb:v04A9p3278* ID_MODEL_FROM_DATABASE=PowerShot S200 +usb:v04A9p327A* + ID_MODEL_FROM_DATABASE=SELPHY CP910 + usb:v04A9p327D* ID_MODEL_FROM_DATABASE=Powershot ELPH 115 IS / IXUS 132 @@ -11771,15 +11885,30 @@ usb:v04A9p32A6* usb:v04A9p32AA* ID_MODEL_FROM_DATABASE=Powershot ELPH 160 / IXUS 160 +usb:v04A9p32AB* + ID_MODEL_FROM_DATABASE=PowerShot ELPH 350HS / IXUS 275 HS + usb:v04A9p32AC* ID_MODEL_FROM_DATABASE=PowerShot ELPH 170 IS / IXUS 170 usb:v04A9p32AD* ID_MODEL_FROM_DATABASE=PowerShot SX410 IS +usb:v04A9p32B1* + ID_MODEL_FROM_DATABASE=SELPHY CP1200 + +usb:v04A9p32B2* + ID_MODEL_FROM_DATABASE=PowerShot G9 X + +usb:v04A9p32BB* + ID_MODEL_FROM_DATABASE=EOS M5 + usb:v04A9p32C1* ID_MODEL_FROM_DATABASE=PowerShot ELPH 180 / IXUS 175 +usb:v04A9p32C2* + ID_MODEL_FROM_DATABASE=PowerShot SX720 HS + usb:v04AA* ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd @@ -12878,6 +13007,9 @@ usb:v04B9p1305* usb:v04B9p1306* ID_MODEL_FROM_DATABASE=iKey Token +usb:v04B9p8000* + ID_MODEL_FROM_DATABASE=SafeNet Sentinel Hardware Key + usb:v04BA* ID_VENDOR_FROM_DATABASE=Toucan Systems, Ltd @@ -13763,6 +13895,9 @@ usb:v04D9p2011* usb:v04D9p2013* ID_MODEL_FROM_DATABASE=Keyboard [Das Keyboard] +usb:v04D9p2206* + ID_MODEL_FROM_DATABASE=Fujitsu Siemens Mouse Esprimo Q + usb:v04D9p2221* ID_MODEL_FROM_DATABASE=Keyboard @@ -13787,6 +13922,9 @@ usb:v04D9pA050* usb:v04D9pA055* ID_MODEL_FROM_DATABASE=Keyboard +usb:v04D9pA11B* + ID_MODEL_FROM_DATABASE=Mouse [MX-3200] + usb:v04DA* ID_VENDOR_FROM_DATABASE=Panasonic (Matsushita) @@ -13817,6 +13955,9 @@ usb:v04DAp0D0D* usb:v04DAp0D0E* ID_MODEL_FROM_DATABASE=DVD-ROM & CD-R/RW +usb:v04DAp0F07* + ID_MODEL_FROM_DATABASE=KX-MB2030 Multifunction Laser Printer + usb:v04DAp0F40* ID_MODEL_FROM_DATABASE=Printer @@ -13871,6 +14012,15 @@ usb:v04DAp2451* usb:v04DAp245B* ID_MODEL_FROM_DATABASE=HC-X920K (3MOS Full HD video camcorder) +usb:v04DAp2477* + ID_MODEL_FROM_DATABASE=SDR-H85 Camcorder (PC mode) + +usb:v04DAp2478* + ID_MODEL_FROM_DATABASE=SDR-H85 Camcorder (recorder mode - SD card) + +usb:v04DAp2479* + ID_MODEL_FROM_DATABASE=SDR-H85 Camcorder (recorder mode - HDD) + usb:v04DAp2497* ID_MODEL_FROM_DATABASE=HDC-TM700 @@ -14315,6 +14465,9 @@ usb:v04E7p00FF* usb:v04E8* ID_VENDOR_FROM_DATABASE=Samsung Electronics Co., Ltd +usb:v04E8p0001* + ID_MODEL_FROM_DATABASE=Printer Bootloader + usb:v04E8p0100* ID_MODEL_FROM_DATABASE=Kingston Flash Drive (128MB) @@ -14775,7 +14928,7 @@ usb:v04E8p61B6* ID_MODEL_FROM_DATABASE=M3 Portable Hard Drive 1TB usb:v04E8p61F3* - ID_MODEL_FROM_DATABASE=MU-PT500B [T3 500GB USB SSD] + ID_MODEL_FROM_DATABASE=Portable SSD T3 (MU-PT250B, MU-PT500B) usb:v04E8p6601* ID_MODEL_FROM_DATABASE=Mobile Phone @@ -14907,10 +15060,10 @@ usb:v04E8p6864* ID_MODEL_FROM_DATABASE=GT-I9070 (network tethering, USB debugging enabled) usb:v04E8p6865* - ID_MODEL_FROM_DATABASE=GT-I9300 Phone [Galaxy S III] (PTP mode) + ID_MODEL_FROM_DATABASE=Galaxy (PTP mode) usb:v04E8p6866* - ID_MODEL_FROM_DATABASE=GT-I9300 Phone [Galaxy S III] (debugging mode) + ID_MODEL_FROM_DATABASE=Galaxy (debugging mode) usb:v04E8p6868* ID_MODEL_FROM_DATABASE=Escape Composite driver for Android Phones: Modem+Diagnostic+ADB @@ -15329,6 +15482,9 @@ usb:v04F3p0230* usb:v04F3p0232* ID_MODEL_FROM_DATABASE=Mouse +usb:v04F3p0234* + ID_MODEL_FROM_DATABASE=Optical Mouse + usb:v04F3p02F4* ID_MODEL_FROM_DATABASE=2.4G Cordless Mouse @@ -16850,9 +17006,18 @@ usb:v04F9p2028* usb:v04F9p202B* ID_MODEL_FROM_DATABASE=PT-7600 P-touch Label Printer +usb:v04F9p2061* + ID_MODEL_FROM_DATABASE=PT-P700 P-touch Label Printer + +usb:v04F9p2064* + ID_MODEL_FROM_DATABASE=PT-P700 P-touch Label Printer RemovableDisk + usb:v04F9p2100* ID_MODEL_FROM_DATABASE=Card Reader Writer +usb:v04F9p2102* + ID_MODEL_FROM_DATABASE=Sewing machine + usb:v04F9p60A0* ID_MODEL_FROM_DATABASE=ADS-2000 @@ -18371,6 +18536,9 @@ usb:v054Cp021C* usb:v054Cp021D* ID_MODEL_FROM_DATABASE=Net MD +usb:v054Cp0226* + ID_MODEL_FROM_DATABASE=UP-CR10L + usb:v054Cp0227* ID_MODEL_FROM_DATABASE=Printing Support @@ -18554,9 +18722,27 @@ usb:v054Cp0689* usb:v054Cp06BB* ID_MODEL_FROM_DATABASE=WALKMAN NWZ-F805 +usb:v054Cp06C3* + ID_MODEL_FROM_DATABASE=RC-S380 + +usb:v054Cp07C4* + ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in Mass Storage mode + usb:v054Cp088C* ID_MODEL_FROM_DATABASE=Portable Headphone Amplifier +usb:v054Cp08B7* + ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in MTP mode + +usb:v054Cp094E* + ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in PC Remote mode + +usb:v054Cp0994* + ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in charging mode + +usb:v054Cp0BB5* + ID_MODEL_FROM_DATABASE=Headset MDR-1000X + usb:v054Cp1000* ID_MODEL_FROM_DATABASE=Wireless Buzz! Receiver @@ -19418,6 +19604,24 @@ usb:v056Ap0318* usb:v056Ap032F* ID_MODEL_FROM_DATABASE=DTU-1031X +usb:v056Ap0347* + ID_MODEL_FROM_DATABASE=Integrated Hub + +usb:v056Ap0348* + ID_MODEL_FROM_DATABASE=Integrated Hub + +usb:v056Ap034A* + ID_MODEL_FROM_DATABASE=DTH-W1320 [MobileStudio Pro 13] touchscreen + +usb:v056Ap034B* + ID_MODEL_FROM_DATABASE=DTH-W1620 [MobileStudio Pro 16] touchscreen + +usb:v056Ap034D* + ID_MODEL_FROM_DATABASE=DTH-W1320 [MobileStudio Pro 13] tablet + +usb:v056Ap034E* + ID_MODEL_FROM_DATABASE=DTH-W1620 [MobileStudio Pro 16] tablet + usb:v056Ap0400* ID_MODEL_FROM_DATABASE=PenPartner 4x5 @@ -19565,6 +19769,9 @@ usb:v0572p1301* usb:v0572p1328* ID_MODEL_FROM_DATABASE=TrendNet TFM-561 modem +usb:v0572p1804* + ID_MODEL_FROM_DATABASE=HP Dock Audio + usb:v0572p2000* ID_MODEL_FROM_DATABASE=SoftGate 802.11 Adapter @@ -20888,6 +21095,9 @@ usb:v058Cp001F* usb:v058CpFFE5* ID_MODEL_FROM_DATABASE=IN34 Projector +usb:v058CpFFEB* + ID_MODEL_FROM_DATABASE=Projector IN76 + usb:v058D* ID_VENDOR_FROM_DATABASE=Micrel Semiconductor @@ -23189,6 +23399,9 @@ usb:v05DCpB018* usb:v05DCpB047* ID_MODEL_FROM_DATABASE=SDHC Reader [RW047-7000] +usb:v05DCpB051* + ID_MODEL_FROM_DATABASE=microSD RDR UHS-I Card Reader [LRWM03U-7000] + usb:v05DCpBA02* ID_MODEL_FROM_DATABASE=Workflow CFR1 @@ -23300,6 +23513,9 @@ usb:v05E3p0142* usb:v05E3p0143* ID_MODEL_FROM_DATABASE=Multiple Frames Film Scanner-36series +usb:v05E3p0145* + ID_MODEL_FROM_DATABASE=Reflecta CrystalScan 7200 Photo-Scanner + usb:v05E3p0180* ID_MODEL_FROM_DATABASE=Plustek Scanner @@ -23447,6 +23663,9 @@ usb:v05E3p0732* usb:v05E3p0736* ID_MODEL_FROM_DATABASE=microSD Reader/Writer +usb:v05E3p0738* + ID_MODEL_FROM_DATABASE=Card reader + usb:v05E3p0741* ID_MODEL_FROM_DATABASE=microSD Card Reader @@ -26171,6 +26390,21 @@ usb:v06D3p03A1* usb:v06D3p03A5* ID_MODEL_FROM_DATABASE=CP9550DW-S +usb:v06D3p03A9* + ID_MODEL_FROM_DATABASE=CP-9600DW + +usb:v06D3p03AA* + ID_MODEL_FROM_DATABASE=CP3020DA + +usb:v06D3p03AD* + ID_MODEL_FROM_DATABASE=CP-9800DW-S + +usb:v06D3p03AE* + ID_MODEL_FROM_DATABASE=CP-9800DW-S + +usb:v06D3p3B10* + ID_MODEL_FROM_DATABASE=P95D + usb:v06D3p3B30* ID_MODEL_FROM_DATABASE=CP-D70DW / CP-D707DW @@ -26885,6 +27119,9 @@ usb:v0718p0624* usb:v0718p1120* ID_MODEL_FROM_DATABASE=RDX External dock (redbud) +usb:v0718p4006* + ID_MODEL_FROM_DATABASE=8x Slim DVD Multi-Format Recorder External + usb:v0718pD000* ID_MODEL_FROM_DATABASE=Disc Stakka CD/DVD Manager @@ -27890,6 +28127,9 @@ usb:v0781p5575* usb:v0781p5576* ID_MODEL_FROM_DATABASE=Cruzer Facet +usb:v0781p5577* + ID_MODEL_FROM_DATABASE=Cruzer Pop (8GB) + usb:v0781p557D* ID_MODEL_FROM_DATABASE=Cruzer Force (64GB) @@ -27902,6 +28142,9 @@ usb:v0781p5581* usb:v0781p5583* ID_MODEL_FROM_DATABASE=Ultra Fit +usb:v0781p5590* + ID_MODEL_FROM_DATABASE=Ultra Dual + usb:v0781p5591* ID_MODEL_FROM_DATABASE=Ultra Flair @@ -29840,6 +30083,9 @@ usb:v0810p0002* usb:v0810p0003* ID_MODEL_FROM_DATABASE=PlayStation Gamepad +usb:v0810pE501* + ID_MODEL_FROM_DATABASE=SNES Gamepad + usb:v0813* ID_VENDOR_FROM_DATABASE=Mattel, Inc. @@ -30888,13 +31134,31 @@ usb:v08BB* ID_VENDOR_FROM_DATABASE=Texas Instruments usb:v08BBp2702* - ID_MODEL_FROM_DATABASE=Speakers + ID_MODEL_FROM_DATABASE=PCM2702 16-bit stereo audio DAC usb:v08BBp2704* - ID_MODEL_FROM_DATABASE=Audio Codec + ID_MODEL_FROM_DATABASE=PCM2704 16-bit stereo audio DAC + +usb:v08BBp2705* + ID_MODEL_FROM_DATABASE=PCM2705 stereo audio DAC usb:v08BBp2706* - ID_MODEL_FROM_DATABASE=PCM2706 Audio Codec + ID_MODEL_FROM_DATABASE=PCM2706 stereo audio DAC + +usb:v08BBp2707* + ID_MODEL_FROM_DATABASE=PCM2707 stereo audio DAC + +usb:v08BBp27C4* + ID_MODEL_FROM_DATABASE=PCM2704C stereo audio DAC + +usb:v08BBp27C5* + ID_MODEL_FROM_DATABASE=PCM2705C stereo audio DAC + +usb:v08BBp27C6* + ID_MODEL_FROM_DATABASE=PCM2706C stereo audio DAC + +usb:v08BBp27C7* + ID_MODEL_FROM_DATABASE=PCM2707C stereo audio DAC usb:v08BBp2900* ID_MODEL_FROM_DATABASE=PCM2900 Audio Codec @@ -30911,6 +31175,9 @@ usb:v08BBp2904* usb:v08BBp2910* ID_MODEL_FROM_DATABASE=PCM2912 Audio Codec +usb:v08BBp2912* + ID_MODEL_FROM_DATABASE=PCM2912A Audio Codec + usb:v08BBp29B0* ID_MODEL_FROM_DATABASE=PCM2900B Audio CODEC @@ -32024,6 +32291,9 @@ usb:v091Ep255B* usb:v091Ep26A1* ID_MODEL_FROM_DATABASE=Nuvi 55 +usb:v091Ep47FB* + ID_MODEL_FROM_DATABASE=nuviCam + usb:v0920* ID_VENDOR_FROM_DATABASE=Echelon Co. @@ -32078,6 +32348,9 @@ usb:v0924p3CE8* usb:v0924p3CEA* ID_MODEL_FROM_DATABASE=Phaser 3125 +usb:v0924p3CEC* + ID_MODEL_FROM_DATABASE=Phaser 3250 + usb:v0924p3D5B* ID_MODEL_FROM_DATABASE=Phaser 6115MFP TWAIN Scanner @@ -32444,9 +32717,24 @@ usb:v0934* usb:v0936* ID_VENDOR_FROM_DATABASE=NuTesla +usb:v0936p000A* + ID_MODEL_FROM_DATABASE=Moebius + +usb:v0936p000B* + ID_MODEL_FROM_DATABASE=iMoebius + usb:v0936p000C* ID_MODEL_FROM_DATABASE=Rhythmedics 6 BioData Integrator +usb:v0936p000D* + ID_MODEL_FROM_DATABASE=Hypurius + +usb:v0936p000E* + ID_MODEL_FROM_DATABASE=Millennius + +usb:v0936p000F* + ID_MODEL_FROM_DATABASE=Purius + usb:v0936p0030* ID_MODEL_FROM_DATABASE=Composite Device, Mass Storage Device (Flash Drive) amd HID @@ -32753,6 +33041,9 @@ usb:v0954* usb:v0955* ID_VENDOR_FROM_DATABASE=NVidia Corp. +usb:v0955p7018* + ID_MODEL_FROM_DATABASE=APX + usb:v0955p7030* ID_MODEL_FROM_DATABASE=Tegra 3 (recovery mode) @@ -33263,6 +33554,12 @@ usb:v09D7* usb:v09D7p0100* ID_MODEL_FROM_DATABASE=NovAtel FlexPack GPS receiver +usb:v09D8* + ID_VENDOR_FROM_DATABASE=ELATEC + +usb:v09D8p0406* + ID_MODEL_FROM_DATABASE=TWN4 MIFARE NFC + usb:v09D9* ID_VENDOR_FROM_DATABASE=KRF Tech, Ltd @@ -35250,7 +35547,7 @@ usb:v0B05p5412* ID_MODEL_FROM_DATABASE=MeMO Pad HD 7 (PTP mode) usb:v0B05p550F* - ID_MODEL_FROM_DATABASE=ASUS fonepad 7 + ID_MODEL_FROM_DATABASE=Fonepad 7 usb:v0B05p6101* ID_MODEL_FROM_DATABASE=Cable Modem @@ -35258,6 +35555,24 @@ usb:v0B05p6101* usb:v0B05p620A* ID_MODEL_FROM_DATABASE=Remote NDIS Device +usb:v0B05p7772* + ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (MTP mode) + +usb:v0B05p7773* + ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (Debug, MTP mode) + +usb:v0B05p7774* + ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (RNDIS mode) + +usb:v0B05p7775* + ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (Debug, RNDIS mode) + +usb:v0B05p7776* + ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (PTP mode) + +usb:v0B05p7777* + ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (Debug, PTP mode) + usb:v0B05pB700* ID_MODEL_FROM_DATABASE=Broadcom Bluetooth 2.1 @@ -36599,6 +36914,9 @@ usb:v0BC2p2320* usb:v0BC2p2321* ID_MODEL_FROM_DATABASE=Expansion Portable +usb:v0BC2p2322* + ID_MODEL_FROM_DATABASE=SRD0NF1 Expansion Portable (STEA) + usb:v0BC2p2340* ID_MODEL_FROM_DATABASE=FreeAgent External Hard Drive @@ -36653,6 +36971,9 @@ usb:v0BC2p5121* usb:v0BC2p5161* ID_MODEL_FROM_DATABASE=FreeAgent GoFlex dock +usb:v0BC2p61B7* + ID_MODEL_FROM_DATABASE=Maxtor M3 Portable + usb:v0BC2pA003* ID_MODEL_FROM_DATABASE=Backup Plus @@ -36680,6 +37001,9 @@ usb:v0BC2pAB31* usb:v0BC2pAB34* ID_MODEL_FROM_DATABASE=Backup Plus +usb:v0BC2pAB38* + ID_MODEL_FROM_DATABASE=Backup Plus Hub + usb:v0BC3* ID_VENDOR_FROM_DATABASE=IPWireless, Inc. @@ -36887,6 +37211,9 @@ usb:v0BDAp570C* usb:v0BDAp5730* ID_MODEL_FROM_DATABASE=HP 2.0MP High Definition Webcam +usb:v0BDAp5751* + ID_MODEL_FROM_DATABASE=Integrated Webcam + usb:v0BDAp5775* ID_MODEL_FROM_DATABASE=HP "Truevision HD" laptop camera @@ -37109,6 +37436,12 @@ usb:v0BFDp000B* usb:v0BFDp000E* ID_MODEL_FROM_DATABASE=Leaf SemiPro HS +usb:v0C00* + ID_VENDOR_FROM_DATABASE=FireFly Mouse Mat + +usb:v0C00p1607* + ID_MODEL_FROM_DATABASE=Apex M500 + usb:v0C04* ID_VENDOR_FROM_DATABASE=MOTO Development Group, Inc. @@ -37808,6 +38141,9 @@ usb:v0C45p648B* usb:v0C45p64BD* ID_MODEL_FROM_DATABASE=Sony Visual Communication Camera +usb:v0C45p64D0* + ID_MODEL_FROM_DATABASE=Integrated Webcam + usb:v0C45p64D2* ID_MODEL_FROM_DATABASE=Integrated Webcam @@ -38333,8 +38669,14 @@ usb:v0CA7* usb:v0CAD* ID_VENDOR_FROM_DATABASE=Motorola CGISS +usb:v0CADp1007* + ID_MODEL_FROM_DATABASE=APX Series Consolette + usb:v0CADp1030* - ID_MODEL_FROM_DATABASE=APX Series Radio + ID_MODEL_FROM_DATABASE=APX Series Radio (Portable) + +usb:v0CADp1031* + ID_MODEL_FROM_DATABASE=APX Series Radio (Mobile) usb:v0CADp1602* ID_MODEL_FROM_DATABASE=IMPRES Battery Data Reader @@ -38585,6 +38927,18 @@ usb:v0CD5p0003* usb:v0CD5p0009* ID_MODEL_FROM_DATABASE=UE9 +usb:v0CD6* + ID_VENDOR_FROM_DATABASE=Scheidt & Bachmann + +usb:v0CD6p000C* + ID_MODEL_FROM_DATABASE=S&B TPU + +usb:v0CD6p000E* + ID_MODEL_FROM_DATABASE=S&B BKV + +usb:v0CD6p0011* + ID_MODEL_FROM_DATABASE=Money Coin Unit + usb:v0CD7* ID_VENDOR_FROM_DATABASE=NewChip S.r.l. @@ -38921,6 +39275,9 @@ usb:v0D16p0002* usb:v0D16p0004* ID_MODEL_FROM_DATABASE=Photo Printer 63xPL/PS +usb:v0D16p000E* + ID_MODEL_FROM_DATABASE=P910L + usb:v0D16p0100* ID_MODEL_FROM_DATABASE=Photo Printer 63xPL/PS @@ -39633,7 +39990,7 @@ usb:v0D99* ID_VENDOR_FROM_DATABASE=Trazer Technologies, Inc. usb:v0D9A* - ID_VENDOR_FROM_DATABASE=RTX Telecom AS + ID_VENDOR_FROM_DATABASE=RTX AS usb:v0D9Ap0001* ID_MODEL_FROM_DATABASE=Bluetooth Device @@ -40325,6 +40682,9 @@ usb:v0DFC* usb:v0DFCp0001* ID_MODEL_FROM_DATABASE=Touchscreen +usb:v0DFCp0101* + ID_MODEL_FROM_DATABASE=5-point Touch Screen + usb:v0E03* ID_VENDOR_FROM_DATABASE=Nippon Systemware Co., Ltd @@ -41636,6 +41996,9 @@ usb:v0FCAp8011* usb:v0FCAp8020* ID_MODEL_FROM_DATABASE=Blackberry Playbook (CD-Rom mode) +usb:v0FCAp8037* + ID_MODEL_FROM_DATABASE=Blackberry PRIV + usb:v0FCE* ID_VENDOR_FROM_DATABASE=Sony Ericsson Mobile Communications AB @@ -42212,6 +42575,9 @@ usb:v1004p631E* usb:v1004p631F* ID_MODEL_FROM_DATABASE=Optimus Android Phone (Charge Mode) +usb:v1004p633A* + ID_MODEL_FROM_DATABASE=Ultimate 2 Android Phone L41C + usb:v1004p633E* ID_MODEL_FROM_DATABASE=G2/G3 Android Phone [MTP/PTP/Download mode] @@ -42851,6 +43217,9 @@ usb:v1058p1230* usb:v1058p1235* ID_MODEL_FROM_DATABASE=My Book (WDBFJK0040HBK) +usb:v1058p2599* + ID_MODEL_FROM_DATABASE=My Passport Ultra (WD40NMZW) + usb:v1058p259D* ID_MODEL_FROM_DATABASE=My Passport Ultra (WDBBKD) @@ -50873,15 +51242,57 @@ usb:v1B1Cp0A00* usb:v1B1Cp0A60* ID_MODEL_FROM_DATABASE=Vengeance K60 Keyboard +usb:v1B1Cp0C04* + ID_MODEL_FROM_DATABASE=Link Cooling Node + usb:v1B1Cp1A01* ID_MODEL_FROM_DATABASE=Flash Voyager GT +usb:v1B1Cp1A03* + ID_MODEL_FROM_DATABASE=Voyager 3.0 + +usb:v1B1Cp1A09* + ID_MODEL_FROM_DATABASE=Voyager GT 3.0 + usb:v1B1Cp1A0A* ID_MODEL_FROM_DATABASE=Survivor Stealth Flash Drive +usb:v1B1Cp1A0B* + ID_MODEL_FROM_DATABASE=Flash Voyager LS + +usb:v1B1Cp1A15* + ID_MODEL_FROM_DATABASE=Voyager Slider Flash Drive + usb:v1B1Cp1A90* ID_MODEL_FROM_DATABASE=Flash Voyager GT +usb:v1B1Cp1AB1* + ID_MODEL_FROM_DATABASE=Voyager + +usb:v1B1Cp1B04* + ID_MODEL_FROM_DATABASE=Raptor K50 Keyboard + +usb:v1B1Cp1B07* + ID_MODEL_FROM_DATABASE=Vengeance K65 Gaming Keyboard + +usb:v1B1Cp1B08* + ID_MODEL_FROM_DATABASE=Vengeance K95 Keyboard + +usb:v1B1Cp1B09* + ID_MODEL_FROM_DATABASE=Vengeance K70R keyboard + +usb:v1B1Cp1B11* + ID_MODEL_FROM_DATABASE=K95 RGB Mechanical Gaming Keyboard + +usb:v1B1Cp1B13* + ID_MODEL_FROM_DATABASE=Vengeance K70RGB keyboard + +usb:v1B1Cp1C00* + ID_MODEL_FROM_DATABASE=Controller for Corsair Link + +usb:v1B1Cp1C0C* + ID_MODEL_FROM_DATABASE=RM850i Power Supply + usb:v1B1F* ID_VENDOR_FROM_DATABASE=eQ-3 Entwicklung GmbH @@ -52544,6 +52955,15 @@ usb:v1D90* usb:v1D90p201E* ID_MODEL_FROM_DATABASE=PPU-700 +usb:v1D9D* + ID_VENDOR_FROM_DATABASE=Sigma Sport + +usb:v1D9Dp1010* + ID_MODEL_FROM_DATABASE=Docking Station Topline 2009 + +usb:v1D9Dp1011* + ID_MODEL_FROM_DATABASE=Docking Station Topline 2012 + usb:v1DE1* ID_VENDOR_FROM_DATABASE=Actions Microelectronics Co. @@ -54374,6 +54794,27 @@ usb:v2735p1043* usb:v2735p1044* ID_MODEL_FROM_DATABASE=HCT HMD-180A +usb:v273F* + ID_VENDOR_FROM_DATABASE=Hughski Limited + +usb:v273Fp1000* + ID_MODEL_FROM_DATABASE=ColorHug bootloader + +usb:v273Fp1001* + ID_MODEL_FROM_DATABASE=ColorHug + +usb:v273Fp1002* + ID_MODEL_FROM_DATABASE=ColorHug+ + +usb:v273Fp1003* + ID_MODEL_FROM_DATABASE=ColorHug+ Bootloader + +usb:v273Fp1004* + ID_MODEL_FROM_DATABASE=ColorHug2 + +usb:v273Fp1005* + ID_MODEL_FROM_DATABASE=ColorHug2 bootloader + usb:v2770* ID_VENDOR_FROM_DATABASE=NHJ, Ltd @@ -54620,6 +55061,12 @@ usb:v2C1A* usb:v2C1Ap0000* ID_MODEL_FROM_DATABASE=Wireless Optical Mouse +usb:v2DCF* + ID_VENDOR_FROM_DATABASE=Dialog Semiconductor + +usb:v2DCFpC952* + ID_MODEL_FROM_DATABASE=Audio Class 2.0 Devices + usb:v2FB2* ID_VENDOR_FROM_DATABASE=Fujitsu, Ltd diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb index c8452f47d0..1aa729f047 100644 --- a/hwdb/60-keyboard.hwdb +++ b/hwdb/60-keyboard.hwdb @@ -32,6 +32,15 @@ # driver, <vendor> is the firmware-provided string exported # by the kernel DMI modalias, see /sys/class/dmi/id/modalias # +# - Extended input driver device name, properties and DMI data match: +# evdev:name:<input device name>:phys:<phys>:ev:<ev>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn* +# <input device name> is the name device specified by the +# driver, <phys> is the physical-device-path, "cat +# /sys/class/input/input?/phys", <ev> is the event bitmask, "cat +# /sys/class/input/input?/capabilities/ev" and <vendor> is the +# firmware-provided string exported by the kernel DMI modalias, +# see /sys/class/dmi/id/modalias +# # Scan codes are specified as: # KEYBOARD_KEY_<hex scan code>=<key code identifier> # The scan code should be expressed in hex lowercase. The key codes @@ -124,6 +133,9 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*8930:* KEYBOARD_KEY_89=fastforward KEYBOARD_KEY_9e=back +evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*7750G:pvr* + KEYBOARD_KEY_e0=!pageup + # Travelmate C300 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:pvr* KEYBOARD_KEY_67=f24 # FIXME: rotate screen @@ -206,6 +218,14 @@ evdev:input:b0003v049Fp0051* KEYBOARD_KEY_0c0015=messenger ########################################################### +# Cube +########################################################### + +evdev:name:gpio-keys:phys:gpio-keys/input0:ev:3:dmi:bvn*:bvr*:bd*:svncube:pni1-TF:* + KEYBOARD_KEY_0=home + KEYBOARD_KEY_1=power + +########################################################### # Dell ########################################################### diff --git a/hwdb/70-pointingstick.hwdb b/hwdb/70-pointingstick.hwdb index cfdfef567a..65c87aeac7 100644 --- a/hwdb/70-pointingstick.hwdb +++ b/hwdb/70-pointingstick.hwdb @@ -82,6 +82,10 @@ evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeD620*:pvr* POINTINGSTICK_CONST_ACCEL=0.5 +# Latitude E5570 +evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeE5570*:pvr* + POINTINGSTICK_CONST_ACCEL=0.1 + # Latitude E6320 evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeE6320*:pvr* POINTINGSTICK_CONST_ACCEL=2.0 diff --git a/man/50-xdg-data-dirs.sh b/man/50-xdg-data-dirs.sh new file mode 100755 index 0000000000..073174cb40 --- /dev/null +++ b/man/50-xdg-data-dirs.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# set the default value +XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share/:/usr/share}" + +# add a directory if it exists +if [[ -d /opt/foo/share ]]; then + XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS} +fi + +# write our output +echo XDG_DATA_DIRS=$XDG_DATA_DIRS diff --git a/man/90-rearrange-path.py b/man/90-rearrange-path.py new file mode 100755 index 0000000000..c6ff32210f --- /dev/null +++ b/man/90-rearrange-path.py @@ -0,0 +1,40 @@ +#!/usr/bin/python3 + +""" + +Proof-of-concept systemd environment generator that makes sure that bin dirs +are always after matching sbin dirs in the path. +(Changes /sbin:/bin:/foo/bar to /bin:/sbin:/foo/bar.) + +This generator shows how to override the configuration possibly created by +earlier generators. It would be easier to write in bash, but let's have it +in Python just to prove that we can, and to serve as a template for more +interesting generators. + +""" + +import os +import pathlib + +def rearrange_bin_sbin(path): + """Make sure any pair of …/bin, …/sbin directories is in this order + + >>> rearrange_bin_sbin('/bin:/sbin:/usr/sbin:/usr/bin') + '/bin:/sbin:/usr/bin:/usr/sbin' + """ + items = [pathlib.Path(p) for p in path.split(':')] + for i in range(len(items)): + if 'sbin' in items[i].parts: + ind = items[i].parts.index('sbin') + bin = pathlib.Path(*items[i].parts[:ind], 'bin', *items[i].parts[ind+1:]) + if bin in items[i+1:]: + j = i + 1 + items[i+1:].index(bin) + items[i], items[j] = items[j], items[i] + return ':'.join(p.as_posix() for p in items) + +if __name__ == '__main__': + path = os.environ['PATH'] # This should be always set. + # If it's not, we'll just crash, we is OK too. + new = rearrange_bin_sbin(path) + if new != path: + print('PATH={}'.format(new)) diff --git a/man/bootctl.xml b/man/bootctl.xml index e2575a4751..675e0174e9 100644 --- a/man/bootctl.xml +++ b/man/bootctl.xml @@ -118,8 +118,8 @@ <refsect1> <title>See Also</title> <para> - <ulink url="http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec">Boot loader specification</ulink> - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface">Systemd boot loader interface</ulink> + <ulink url="https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec">Boot loader specification</ulink> + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface">Systemd boot loader interface</ulink> </para> </refsect1> </refentry> diff --git a/man/busctl.xml b/man/busctl.xml index 052a33097f..28b36f09d0 100644 --- a/man/busctl.xml +++ b/man/busctl.xml @@ -291,11 +291,11 @@ <listitem><para>Similar to <command>monitor</command> but writes the output in pcap format (for details, see the <ulink - url="http://wiki.wireshark.org/Development/LibpcapFileFormat">Libpcap - File Format</ulink> description. Make sure to redirect the - output to STDOUT to a file. Tools like + url="https://wiki.wireshark.org/Development/LibpcapFileFormat">Libpcap + File Format</ulink> description). Make sure to redirect + standard output to a file. Tools like <citerefentry project='die-net'><refentrytitle>wireshark</refentrytitle><manvolnum>1</manvolnum></citerefentry> - may be used to dissect and view the generated + may be used to dissect and view the resulting files.</para></listitem> </varlistentry> @@ -472,7 +472,7 @@ o "/org/freedesktop/systemd1/job/42684"</programlisting> <para> <citerefentry project='dbus'><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>, - <ulink url="http://freedesktop.org/wiki/Software/dbus">D-Bus</ulink>, + <ulink url="https://www.freedesktop.org/wiki/Software/dbus">D-Bus</ulink>, <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, diff --git a/man/coredump.conf.xml b/man/coredump.conf.xml index 77b4dac51c..5f61e05f40 100644 --- a/man/coredump.conf.xml +++ b/man/coredump.conf.xml @@ -85,7 +85,7 @@ <listitem><para>Controls where to store cores. One of <literal>none</literal>, <literal>external</literal>, and <literal>journal</literal>. When - <literal>none</literal>, the core dumps will be logged (included the traceback if + <literal>none</literal>, the core dumps will be logged (including the backtrace if possible), but not stored permanently. When <literal>external</literal> (the default), cores will be stored in <filename>/var/lib/systemd/coredump/</filename>. When <literal>journal</literal>, cores will be stored in the journal and rotated diff --git a/man/coredumpctl.xml b/man/coredumpctl.xml index abc245be5e..ca8156f77c 100644 --- a/man/coredumpctl.xml +++ b/man/coredumpctl.xml @@ -92,6 +92,28 @@ </varlistentry> <varlistentry> + <term><option>-S</option></term> + <term><option>--since</option></term> + + <listitem><para>Only print entries which are since the specified date.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-U</option></term> + <term><option>--until</option></term> + + <listitem><para>Only print entries which are until the specified date.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-r</option></term> + <term><option>--reverse</option></term> + + <listitem><para>Reverse output so that the newest entries are displayed first. + </para></listitem> + </varlistentry> + + <varlistentry> <term><option>-F</option> <replaceable>FIELD</replaceable></term> <term><option>--field=</option><replaceable>FIELD</replaceable></term> @@ -116,6 +138,14 @@ </para></listitem> </varlistentry> + <varlistentry> + <term><option>-q</option></term> + <term><option>--quiet</option></term> + + <listitem><para>Suppresses info messages about lack + of access to journal files and possible in-flight coredumps. + </para></listitem> + </varlistentry> </variablelist> </refsect1> @@ -132,6 +162,57 @@ matching specified characteristics. If no command is specified, this is the implied default.</para> + <para>The output is designed to be human readable and contains list contains + a table with the following columns:</para> + <variablelist> + <varlistentry> + <term>TIME</term> + <listitem><para>The timestamp of the crash, as reported by the kernel.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>PID</term> + <listitem><para>The identifier of the process that crashed.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>UID</term> + <term>GID</term> + <listitem><para>The user and group identifiers of the process that crashed.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>SIGNAL</term> + <listitem><para>The signal that caused the process to crash, when applicable. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>COREFILE</term> + <listitem><para>Information whether the coredump was stored, and whether + it is still accessible: <literal>none</literal> means the the core was + not stored, <literal>-</literal> means that it was not available (for + example because the process was not terminated by a signal), + <literal>present</literal> means that the core file is accessible by the + current user, <literal>journal</literal> means that the core was stored + in the <literal>journal</literal>, <literal>truncated</literal> is the + same as one of the previous two, but the core was too large and was not + stored in its entirety, <literal>error</literal> means that the core file + cannot be accessed, most likely because of insufficient permissions, and + <literal>missing</literal> means that the core was stored in a file, but + this file has since been removed.</para></listitem> + </varlistentry> + + <varlistentry> + <term>EXE</term> + <listitem><para>The full path to the executable. For backtraces of scripts + this is the name of the interpreter.</para></listitem> + </varlistentry> + </variablelist> + <para>It's worth noting that different restrictions apply to data saved in the journal and core dump files saved in <filename>/var/lib/systemd/coredump</filename>, see overview in @@ -201,9 +282,9 @@ <varlistentry> <term><replaceable>MATCH</replaceable></term> - <listitem><para>General journalctl predicates (see + <listitem><para>General journalctl predicate (see <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>). - Must contain an equal sign. </para></listitem> + Must contain an equals sign (<literal>=</literal>).</para></listitem> </varlistentry> </variablelist> </refsect1> diff --git a/man/environment.d.xml b/man/environment.d.xml new file mode 100644 index 0000000000..be7758a2f9 --- /dev/null +++ b/man/environment.d.xml @@ -0,0 +1,122 @@ +<?xml version="1.0"?> +<!--*-nxml-*--> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> +<!-- + This file is part of systemd. + + Copyright 2016 Red Hat, Inc. + Copyright 2017 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +--> +<refentry id="environment.d" xmlns:xi="http://www.w3.org/2001/XInclude"> + + <refentryinfo> + <title>environment.d</title> + <productname>systemd</productname> + + <authorgroup> + <author> + <contrib>Developer</contrib> + <firstname>Ray</firstname> + <surname>Strode</surname> + <email>rstrode@redhat.com</email> + </author> + </authorgroup> + </refentryinfo> + + <refmeta> + <refentrytitle>environment.d</refentrytitle> + <manvolnum>5</manvolnum> + </refmeta> + + <refnamediv> + <refname>environment.d</refname> + <refpurpose>Definition of user session environment</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <para><filename>~/.config/environment.d/*.conf</filename></para> + <para><filename>/etc/environment.d/*.conf</filename></para> + <para><filename>/run/environment.d/*.conf</filename></para> + <para><filename>/usr/lib/environment.d/*.conf</filename></para> + <para><filename>/etc/environment</filename></para> + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + + <para>The <filename>environment.d</filename> directories contain a list of "global" environment + variable assignments for the user environment. + <citerefentry><refentrytitle>systemd-environment-d-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry> + parses them and updates the environment exported by the systemd user instance to the services it + starts.</para> + + <para>It is recommended to use numerical prefixes for file names to simplify ordering.</para> + + <para>For backwards compatibility, a symlink to <filename>/etc/environment</filename> is + installed, so this file is also parsed.</para> + </refsect1> + + <xi:include href="standard-conf.xml" xpointer="confd" /> + + <refsect1> + <title>Configuration Format</title> + + <para>The configuration files contain a list of + <literal><replaceable>KEY</replaceable>=<replaceable>VALUE</replaceable></literal> environment + variable assignments, separated by newlines. The right hand side of these assignments may + reference previously defined environment variables, using the <literal>${OTHER_KEY}</literal> + and <literal>$OTHER_KEY</literal> format. It is also possible to use + + <literal>${<replaceable>FOO</replaceable>:-<replaceable>DEFAULT_VALUE</replaceable>}</literal> + to expand in the same way as <literal>${<replaceable>FOO</replaceable>}</literal> unless the + expansion would be empty, in which case it expands to <replaceable>DEFAULT_VALUE</replaceable>, + and use + <literal>${<replaceable>FOO</replaceable>:+<replaceable>ALTERNATE_VALUE</replaceable>}</literal> + to expand to <replaceable>ALTERNATE_VALUE</replaceable> as long as + <literal>${<replaceable>FOO</replaceable>}</literal> would have expanded to a non-empty value. + No other elements of shell syntax are supported.</para> + + <para>Each<replaceable>KEY</replaceable> must be a valid variable name. Empty lines + and lines beginning with the comment character <literal>#</literal> are ignored.</para> + + <refsect2> + <title>Example</title> + <example> + <title>Setup environment to allow access to a program installed in + <filename noindex='true'>/opt/foo</filename></title> + + <para><filename>/etc/environment.d/60-foo.conf</filename>: + </para> + <programlisting> + FOO_DEBUG=force-software-gl,log-verbose + PATH=/opt/foo/bin:$PATH + LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}/opt/foo/lib + XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/} + </programlisting> + </example> + </refsect2> + </refsect1> + + <refsect1> + <title>See Also</title> + <para> + <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemd-environment-d-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemd.environment-generator</refentrytitle><manvolnum>7</manvolnum></citerefentry> + </para> + </refsect1> + +</refentry> diff --git a/man/file-hierarchy.xml b/man/file-hierarchy.xml index 538a592f8d..ab52ccfe0c 100644 --- a/man/file-hierarchy.xml +++ b/man/file-hierarchy.xml @@ -502,7 +502,7 @@ url="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG Base Directory Specification</ulink>. Additional locations for high-level user resources are defined by <ulink - url="http://www.freedesktop.org/wiki/Software/xdg-user-dirs/">xdg-user-dirs</ulink>.</para> + url="https://www.freedesktop.org/wiki/Software/xdg-user-dirs/">xdg-user-dirs</ulink>.</para> <variablelist> <varlistentry> diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml index 9e1b593e6d..81bce2da6a 100644 --- a/man/hostnamectl.xml +++ b/man/hostnamectl.xml @@ -173,6 +173,7 @@ defined: <literal>desktop</literal>, <literal>laptop</literal>, + <literal>convertible</literal>, <literal>server</literal>, <literal>tablet</literal>, <literal>handset</literal>, diff --git a/man/journalctl.xml b/man/journalctl.xml index eacba048bc..cae5312db2 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -318,7 +318,7 @@ <para>serializes the journal into a binary (but mostly text-based) stream suitable for backups and network transfer (see - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/export">Journal Export Format</ulink> + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/export">Journal Export Format</ulink> for more information). To import the binary stream back into native journald format use <citerefentry><refentrytitle>systemd-journal-remote</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para> @@ -332,7 +332,7 @@ <listitem> <para>formats entries as JSON data structures, one per line (see - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/json">Journal JSON Format</ulink> + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/json">Journal JSON Format</ulink> for more information).</para> </listitem> </varlistentry> @@ -401,7 +401,7 @@ manuals. Note that help texts are not available for all messages, but only for selected ones. For more information on the message catalog, please refer to the - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/catalog">Message Catalog Developer Documentation</ulink>.</para> + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/catalog">Message Catalog Developer Documentation</ulink>.</para> <para>Note: when attaching <command>journalctl</command> output to bug reports, please do <emphasis>not</emphasis> use @@ -677,7 +677,7 @@ a new 128-bit ID suitable for identifying messages. This is intended for usage by developers who need a new identifier for a new message they introduce and want to make - recognizable. This will print the new ID in three different + recognizable. This will print the new ID in four different formats which can be copied into source code or similar. </para></listitem> </varlistentry> diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml index 415b8d3cf9..f02ca3e7bc 100644 --- a/man/kernel-command-line.xml +++ b/man/kernel-command-line.xml @@ -78,20 +78,22 @@ <varlistentry> <term><varname>systemd.unit=</varname></term> <term><varname>rd.systemd.unit=</varname></term> - <term><varname>systemd.dump_core=</varname></term> - <term><varname>systemd.crash_chvt=</varname></term> - <term><varname>systemd.crash_shell=</varname></term> - <term><varname>systemd.crash_reboot=</varname></term> - <term><varname>systemd.confirm_spawn=</varname></term> - <term><varname>systemd.show_status=</varname></term> + <term><varname>systemd.dump_core</varname></term> + <term><varname>systemd.crash_chvt</varname></term> + <term><varname>systemd.crash_shell</varname></term> + <term><varname>systemd.crash_reboot</varname></term> + <term><varname>systemd.confirm_spawn</varname></term> + <term><varname>systemd.show_status</varname></term> <term><varname>systemd.log_target=</varname></term> <term><varname>systemd.log_level=</varname></term> - <term><varname>systemd.log_color=</varname></term> <term><varname>systemd.log_location=</varname></term> + <term><varname>systemd.log_color</varname></term> <term><varname>systemd.default_standard_output=</varname></term> <term><varname>systemd.default_standard_error=</varname></term> <term><varname>systemd.setenv=</varname></term> <term><varname>systemd.machine_id=</varname></term> + <term><varname>systemd.unified_cgroup_hierarchy</varname></term> + <term><varname>systemd.legacy_systemd_cgroup_controller</varname></term> <listitem> <para>Parameters understood by the system and service manager to control system behavior. For details, see diff --git a/man/kernel-install.xml b/man/kernel-install.xml index 99b7970457..94b6b1110d 100644 --- a/man/kernel-install.xml +++ b/man/kernel-install.xml @@ -189,7 +189,7 @@ <para> <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry>, - <ulink url="http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec">Boot loader specification</ulink> + <ulink url="https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec">Boot loader specification</ulink> </para> </refsect1> diff --git a/man/machine-info.xml b/man/machine-info.xml index 351133670b..cd5997d4e2 100644 --- a/man/machine-info.xml +++ b/man/machine-info.xml @@ -120,6 +120,7 @@ chassis types are defined: <literal>desktop</literal>, <literal>laptop</literal>, + <literal>convertible</literal>, <literal>server</literal>, <literal>tablet</literal>, <literal>handset</literal>, diff --git a/man/machinectl.xml b/man/machinectl.xml index 38cf919a78..7a159aecdc 100644 --- a/man/machinectl.xml +++ b/man/machinectl.xml @@ -518,19 +518,14 @@ <varlistentry> <term><command>bind</command> <replaceable>NAME</replaceable> <replaceable>PATH</replaceable> [<replaceable>PATH</replaceable>]</term> - <listitem><para>Bind mounts a directory from the host into the - specified container. The first directory argument is the - source directory on the host, the second directory argument - is the destination directory in the container. When the - latter is omitted, the destination path in the container is - the same as the source path on the host. When combined with - the <option>--read-only</option> switch, a ready-only bind - mount is created. When combined with the - <option>--mkdir</option> switch, the destination path is first - created before the mount is applied. Note that this option is - currently only supported for - <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry> - containers.</para></listitem> + <listitem><para>Bind mounts a directory from the host into the specified container. The first directory + argument is the source directory on the host, the second directory argument is the destination directory in the + container. When the latter is omitted, the destination path in the container is the same as the source path on + the host. When combined with the <option>--read-only</option> switch, a ready-only bind mount is created. When + combined with the <option>--mkdir</option> switch, the destination path is first created before the mount is + applied. Note that this option is currently only supported for + <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry> containers, + and only if user namespacing (<option>--private-users</option>) is not used.</para></listitem> </varlistentry> <varlistentry> @@ -540,9 +535,12 @@ system into a running container. Takes a container name, followed by the source path on the host and the destination path in the container. If the destination path is omitted, the - same as the source path is used.</para></listitem> - </varlistentry> + same as the source path is used.</para> + <para>If host and container share the same user and group namespace, file ownership by numeric user ID and + group ID is preserved for the copy, otherwise all files and directories in the copy will be owned by the root + user and group (UID/GID 0).</para></listitem> + </varlistentry> <varlistentry> <term><command>copy-from</command> <replaceable>NAME</replaceable> <replaceable>PATH</replaceable> [<replaceable>PATH</replaceable>]</term> @@ -551,7 +549,11 @@ into the host system. Takes a container name, followed by the source path in the container the destination path on the host. If the destination path is omitted, the same as the source path - is used.</para></listitem> + is used.</para> + + <para>If host and container share the same user and group namespace, file ownership by numeric user ID and + group ID is preserved for the copy, otherwise all files and directories in the copy will be owned by the root + user and group (UID/GID 0).</para></listitem> </varlistentry> </variablelist></refsect2> diff --git a/man/pam_systemd.xml b/man/pam_systemd.xml index ddda81bc90..6e1aa0dd9a 100644 --- a/man/pam_systemd.xml +++ b/man/pam_systemd.xml @@ -59,29 +59,23 @@ <citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>, and hence the systemd control group hierarchy.</para> - <para>On login, this module ensures the following:</para> + <para>On login, this module — in conjunction with <filename>systemd-logind.service</filename> — ensures the + following:</para> <orderedlist> - <listitem><para>If it does not exist yet, the user runtime - directory <filename>/run/user/$USER</filename> is created and - its ownership changed to the user that is logging - in.</para></listitem> - - <listitem><para>The <varname>$XDG_SESSION_ID</varname> - environment variable is initialized. If auditing is available - and <command>pam_loginuid.so</command> was run before this - module (which is highly recommended), the variable is - initialized from the auditing session id - (<filename>/proc/self/sessionid</filename>). Otherwise, an + <listitem><para>If it does not exist yet, the user runtime directory <filename>/run/user/$UID</filename> is + either created or mounted as new <literal>tmpfs</literal> file system with quota applied, and its ownership + changed to the user that is logging in.</para></listitem> + + <listitem><para>The <varname>$XDG_SESSION_ID</varname> environment variable is initialized. If auditing is + available and <command>pam_loginuid.so</command> was run before this module (which is highly recommended), the + variable is initialized from the auditing session id (<filename>/proc/self/sessionid</filename>). Otherwise, an independent session counter is used.</para></listitem> - <listitem><para>A new systemd scope unit is created for the - session. If this is the first concurrent session of the user, an - implicit slice below <filename>user.slice</filename> is - automatically created and the scope placed into it. An instance - of the system service <filename>user@.service</filename>, which - runs the systemd user manager instance, is started. - </para></listitem> + <listitem><para>A new systemd scope unit is created for the session. If this is the first concurrent session of + the user, an implicit per-user slice unit below <filename>user.slice</filename> is automatically created and the + scope placed into it. An instance of the system service <filename>user@.service</filename>, which runs the + systemd user manager instance, is started. </para></listitem> </orderedlist> <para>On logout, this module ensures the following:</para> @@ -89,10 +83,9 @@ <orderedlist> <listitem><para>If enabled in <citerefentry><refentrytitle>logind.conf</refentrytitle> - <manvolnum>5</manvolnum></citerefentry>, all processes of the - session are terminated. If the last concurrent session of a user - ends, the user's systemd instance will be terminated too, and so - will the user's slice unit.</para></listitem> + <manvolnum>5</manvolnum></citerefentry> (<varname>KillUserProcesses=</varname>), all processes of the session are + terminated. If the last concurrent session of a user ends, the user's systemd instance will be terminated too, + and so will the user's slice unit.</para></listitem> <listitem><para>If the last concurrent session of a user ends, the <varname>$XDG_RUNTIME_DIR</varname> directory and all its diff --git a/man/sd-bus.xml b/man/sd-bus.xml index 66b1c96c15..6439395549 100644 --- a/man/sd-bus.xml +++ b/man/sd-bus.xml @@ -62,7 +62,7 @@ <title>Description</title> <para><filename>sd-bus.h</filename> provides an implementation of a D-Bus IPC client. See - <ulink url="http://www.freedesktop.org/software/dbus/" /> + <ulink url="https://www.freedesktop.org/software/dbus/" /> for more information about D-Bus IPC. </para> diff --git a/man/sd-id128.xml b/man/sd-id128.xml index 5f24feff8e..bc74e3f481 100644 --- a/man/sd-id128.xml +++ b/man/sd-id128.xml @@ -47,6 +47,7 @@ <refname>sd-id128</refname> <refname>sd_id128_t</refname> <refname>SD_ID128_MAKE</refname> + <refname>SD_ID128_MAKE_STR</refname> <refname>SD_ID128_NULL</refname> <refname>SD_ID128_CONST_STR</refname> <refname>SD_ID128_FORMAT_STR</refname> @@ -113,12 +114,24 @@ <para><function>SD_ID128_NULL</function> may be used to refer to the 128bit ID consisting of only NUL bytes.</para> + <para><function>SD_ID128_MAKE_STR()</function> is similar to <function>SD_ID128_MAKE()</function>, but creates a + <type>const char*</type> expression that can be conveniently used in message formats and such:</para> + + <programlisting>#include <stdio.h> +#define SD_MESSAGE_COREDUMP_STR SD_ID128_MAKE_STR(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1) + +int main(int argc, char **argv) { + puts("Match for coredumps: MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR); +} + </programlisting> + + <para><function>SD_ID128_CONST_STR()</function> may be used to convert constant 128-bit IDs into constant strings for output. The following example code will output the string "fc2e22bc6ee647b6b90729ab34a250b1":</para> <programlisting>int main(int argc, char *argv[]) { - puts(SD_ID128_CONST_STR(SD_MESSAGE_COREDUMP)); + puts("Match for coredumps: %s", SD_ID128_CONST_STR(SD_MESSAGE_COREDUMP)); }</programlisting> <para><function>SD_ID128_FORMAT_STR()</function> and @@ -154,7 +167,7 @@ <para>Note that new, randomized IDs may be generated with <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>'s - <option>--new-id</option> option.</para> + <option>--new-id128</option> option.</para> </refsect1> <xi:include href="libsystemd-pkgconfig.xml" /> diff --git a/man/sd-login.xml b/man/sd-login.xml index 328f71164d..6861fbe257 100644 --- a/man/sd-login.xml +++ b/man/sd-login.xml @@ -67,7 +67,7 @@ local system. </para> <para>See <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/multiseat">Multi-Seat + url="https://www.freedesktop.org/wiki/Software/systemd/multiseat">Multi-Seat on Linux</ulink> for an introduction into multi-seat support on Linux, the background for this set of APIs.</para> diff --git a/man/sd_journal_get_catalog.xml b/man/sd_journal_get_catalog.xml index 35ec46f63e..604deb4e8c 100644 --- a/man/sd_journal_get_catalog.xml +++ b/man/sd_journal_get_catalog.xml @@ -90,7 +90,7 @@ <para>For more information about the journal message catalog please refer to the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/catalog">Journal + url="https://www.freedesktop.org/wiki/Software/systemd/catalog">Journal Message Catalogs</ulink> documentation page.</para> </refsect1> diff --git a/man/systemctl.xml b/man/systemctl.xml index 25db00e5f6..7e1864c4f1 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -712,8 +712,23 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service <listitem> <para>List timer units currently in memory, ordered by the time they elapse next. If one or more <replaceable>PATTERN</replaceable>s are specified, only units matching one of them are shown. + Produces output similar to + <programlisting> +NEXT LEFT LAST PASSED UNIT ACTIVATES +n/a n/a Thu 2017-02-23 13:40:29 EST 3 days ago ureadahead-stop.timer ureadahead-stop.service +Sun 2017-02-26 18:55:42 EST 1min 14s left Thu 2017-02-23 13:54:44 EST 3 days ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Sun 2017-02-26 20:37:16 EST 1h 42min left Sun 2017-02-26 11:56:36 EST 6h ago apt-daily.timer apt-daily.service +Sun 2017-02-26 20:57:49 EST 2h 3min left Sun 2017-02-26 11:56:36 EST 6h ago snapd.refresh.timer snapd.refresh.service + </programlisting> </para> + <para><emphasis>NEXT</emphasis> shows the next time the timer will run.</para> + <para><emphasis>LEFT</emphasis> shows how long till the next time the timer runs.</para> + <para><emphasis>LAST</emphasis> shows the last time the timer ran.</para> + <para><emphasis>PASSED</emphasis> shows has long as passed since the timer laset ran.</para> + <para><emphasis>UNIT</emphasis> shows the name of the timer</para> + <para><emphasis>ACTIVATES</emphasis> shows the the name the service the timer activates when it runs.</para> + <para>Also see <option>--all</option> and <option>--state=</option>.</para> </listitem> </varlistentry> @@ -1181,7 +1196,7 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err <para>For more information on the preset policy format, see <citerefentry><refentrytitle>systemd.preset</refentrytitle><manvolnum>5</manvolnum></citerefentry>. For more information on the concept of presets, please consult the - <ulink url="http://freedesktop.org/wiki/Software/systemd/Preset">Preset</ulink> + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/Preset">Preset</ulink> document.</para> </listitem> </varlistentry> diff --git a/man/systemd-ask-password-console.service.xml b/man/systemd-ask-password-console.service.xml index 479e5f2e5b..3c1537d942 100644 --- a/man/systemd-ask-password-console.service.xml +++ b/man/systemd-ask-password-console.service.xml @@ -71,7 +71,7 @@ properly notified.</para> <para>See the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/PasswordAgents"> + url="https://www.freedesktop.org/wiki/Software/systemd/PasswordAgents"> developer documentation</ulink> for more information about the system password logic.</para> diff --git a/man/systemd-ask-password.xml b/man/systemd-ask-password.xml index 8d3355819b..51d8ef5d82 100644 --- a/man/systemd-ask-password.xml +++ b/man/systemd-ask-password.xml @@ -109,7 +109,7 @@ <para>Additional password agents may be implemented according to the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/PasswordAgents">systemd + url="https://www.freedesktop.org/wiki/Software/systemd/PasswordAgents">systemd Password Agent Specification</ulink>.</para> <para>If a password is queried on a TTY, the user may press TAB to diff --git a/man/systemd-coredump.xml b/man/systemd-coredump.xml index 4a1bc8b296..2c285bcb22 100644 --- a/man/systemd-coredump.xml +++ b/man/systemd-coredump.xml @@ -52,14 +52,26 @@ <refsynopsisdiv> <para><filename>/usr/lib/systemd/systemd-coredump</filename></para> + <para><filename>/usr/lib/systemd/systemd-coredump</filename> <option>--backtrace</option></para> <para><filename>systemd-coredump@.service</filename></para> <para><filename>systemd-coredump.socket</filename></para> </refsynopsisdiv> <refsect1> <title>Description</title> - <para><command>systemd-coredump</command> is a system service that can acquire core dumps - from the kernel and handle them in various ways.</para> + <para><filename>systemd-coredump@.service</filename> is a system service that can acquire core + dumps from the kernel and handle them in various ways. The <command>systemd-coredump</command> + executable does the actual work. It is invoked twice: once as the handler by the kernel, and the + second time in the <filename>systemd-coredump@.service</filename> to actually write the data to + the journal.</para> + + <para>When the kernel invokes <command>systemd-coredump</command> to handle a core dump, it runs + in privileged mode, and will connect to the socket created by the + <filename>systemd-coredump.socket</filename> unit, which in turn will spawn an unprivileged + <filename>systemd-coredump@.service</filename> instance to process the core dump. Hence + <filename>systemd-coredump.socket</filename> and <filename>systemd-coredump@.service</filename> + are helper units which do the actual processing of core dumps and are subject to normal service + management.</para> <para>Core dumps can be written to the journal or saved as a file. Once saved they can be retrieved for further processing, for example in @@ -70,18 +82,20 @@ if possible to the journal and store the core dump itself in an external file in <filename>/var/lib/systemd/coredump</filename>.</para> - <para>When the kernel invokes <command>systemd-coredump</command> to handle a core dump, - it will connect to the socket created by the <filename>systemd-coredump.socket</filename> - unit, which in turn will spawn a <filename>systemd-coredump@.service</filename> instance - to process the core dump. Hence <filename>systemd-coredump.socket</filename> - and <filename>systemd-coredump@.service</filename> are helper units which do the actual - processing of core dumps and are subject to normal service management.</para> - <para>The behavior of a specific program upon reception of a signal is governed by a few factors which are described in detail in <citerefentry project='man-pages'><refentrytitle>core</refentrytitle><manvolnum>5</manvolnum></citerefentry>. In particular, the core dump will only be processed when the related resource limits are sufficient. </para> + + <para>It is also possible to invoke <command>systemd-coredump</command> with + <option>--backtrace</option> option. In this case, <command>systemd-coredump</command> expects + a journal entry in the journal + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/export">Journal Export Format</ulink> + on standard input. The entry should contain a <varname>MESSAGE=</varname> field and any additional + metadata fields the caller deems reasonable. <command>systemd-coredump</command> will append + additional metadata fields in the same way it does for core dumps received from the kernel. In + this mode, no core dump is stored in the journal.</para> </refsect1> <refsect1> @@ -91,7 +105,8 @@ <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>. </para> - <para>In order to be used <command>systemd-coredump</command> must be configured in + <para>In order to be used by the kernel to handle core dumps, + <command>systemd-coredump</command> must be configured in <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry> parameter <varname>kernel.core_pattern</varname>. The syntax of this parameter is explained in <citerefentry project='man-pages'><refentrytitle>core</refentrytitle><manvolnum>5</manvolnum></citerefentry>. @@ -99,14 +114,20 @@ <varname>kernel.core_pattern</varname> accordingly. This file may be masked or overridden to use a different setting following normal <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> - rules. - If the sysctl configuration is modified, it must be updated in the kernel before - it takes effect, see + rules. If the sysctl configuration is modified, it must be updated in the kernel before it + takes effect, see <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>systemd-sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>. </para> + <para>In order to by used in the <option>--backtrace</option> mode, an appropriate backtrace + handler must be installed on the sender side. For example, in case of + <citerefentry><refentrytitle>python</refentrytitle><manvolnum>1</manvolnum></citerefentry>, this + means a <varname>sys.excepthook</varname> must installed, see + <ulink url="https://github.com/keszybz/systemd-coredump-python">systemd-coredump-python</ulink>. + </para> + <para>The behavior of <command>systemd-coredump</command> itself is configured through the configuration file <filename>/etc/systemd/coredump.conf</filename> and corresponding snippets <filename>/etc/systemd/coredump.conf.d/*.conf</filename>, see diff --git a/man/systemd-cryptsetup@.service.xml b/man/systemd-cryptsetup@.service.xml index fb8b06714d..73bd5b78ab 100644 --- a/man/systemd-cryptsetup@.service.xml +++ b/man/systemd-cryptsetup@.service.xml @@ -61,7 +61,7 @@ <para><filename>systemd-cryptsetup@.service</filename> will ask for hard disk passwords via the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/PasswordAgents"> + url="https://www.freedesktop.org/wiki/Software/systemd/PasswordAgents"> password agent logic</ulink>, in order to query the user for the password using the right mechanism at boot and during runtime.</para> diff --git a/man/systemd-detect-virt.xml b/man/systemd-detect-virt.xml index 996c2fa256..72ea35892f 100644 --- a/man/systemd-detect-virt.xml +++ b/man/systemd-detect-virt.xml @@ -91,12 +91,13 @@ <row> <entry valign="top" morerows="10">VM</entry> <entry><varname>qemu</varname></entry> - <entry>QEMU software virtualization</entry> + <entry>QEMU software virtualization, without KVM</entry> </row> <row> <entry><varname>kvm</varname></entry> - <entry>Linux KVM kernel virtual machine</entry> + <entry>Linux KVM kernel virtual machine, with whatever software, except + Oracle Virtualbox</entry> </row> <row> @@ -116,7 +117,8 @@ <row> <entry><varname>oracle</varname></entry> - <entry>Oracle VM VirtualBox (historically marketed by innotek and Sun Microsystems)</entry> + <entry>Oracle VM VirtualBox (historically marketed by innotek and Sun Microsystems), + for legacy and KVM hypervisor</entry> </row> <row> diff --git a/man/systemd-environment-d-generator.xml b/man/systemd-environment-d-generator.xml new file mode 100644 index 0000000000..cc00a5256d --- /dev/null +++ b/man/systemd-environment-d-generator.xml @@ -0,0 +1,80 @@ +<?xml version='1.0'?> <!--*-nxml-*--> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ +<!ENTITY % entities SYSTEM "custom-entities.ent" > +%entities; +]> + +<!-- + This file is part of systemd. + + Copyright 2017 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +--> +<refentry id="systemd-environment-d-generator"> + + <refentryinfo> + <title>systemd-environment-d-generator</title> + <productname>systemd</productname> + + <authorgroup> + <author> + <contrib>Developer</contrib> + <firstname>Zbigniew</firstname> + <surname>Jędrzejewski-Szmek</surname> + <email>zbyszek@in.waw.pl</email> + </author> + </authorgroup> + </refentryinfo> + + <refmeta> + <refentrytitle>systemd-environment-d-generator</refentrytitle> + <manvolnum>8</manvolnum> + </refmeta> + + <refnamediv> + <refname>systemd-environment-d-generator</refname> + <refname>30-systemd-environment-d-generator</refname> + <refpurpose>Load variables specified by <filename>environment.d</filename> + </refpurpose> + </refnamediv> + + <refsynopsisdiv> + <para><filename>&userenvgeneratordir;/30-systemd-environment-d-generator</filename></para> + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + + <para><filename>systemd-environment-d-generator</filename> is a + <citerefentry><refentrytitle>systemd.environment-generator</refentrytitle><manvolnum>7</manvolnum></citerefentry> + that reads environment configuration specified by + <citerefentry><refentrytitle>environment.d</refentrytitle><manvolnum>7</manvolnum></citerefentry> + configuration files and passes it to the + <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> + user manager instance.</para> + </refsect1> + + <refsect1> + <title>See Also</title> + <para> + <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemd.environment-generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry> + </para> + </refsect1> + +</refentry> diff --git a/man/systemd-escape.xml b/man/systemd-escape.xml index 5e95e22536..bb4c7e48e5 100644 --- a/man/systemd-escape.xml +++ b/man/systemd-escape.xml @@ -86,8 +86,8 @@ <listitem><para>Appends the specified unit type suffix to the escaped string. Takes one of the unit types supported by - systemd, such as <literal>.service</literal> or - <literal>.mount</literal>. May not be used in conjunction with + systemd, such as <literal>service</literal> or + <literal>mount</literal>. May not be used in conjunction with <option>--template=</option>, <option>--unescape</option> or <option>--mangle</option>.</para></listitem> </varlistentry> diff --git a/man/systemd-getty-generator.xml b/man/systemd-getty-generator.xml index 338925964d..8bff3bb7f4 100644 --- a/man/systemd-getty-generator.xml +++ b/man/systemd-getty-generator.xml @@ -64,7 +64,7 @@ <filename>container-getty@.service</filename> instances for additional container pseudo TTYs as requested by the container manager (see <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/ContainerInterface/"><filename>Container + url="https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface/"><filename>Container Interface</filename></ulink>). This should ensure that the user is shown a login prompt at the right place, regardless of which environment the system is started in. For example, it is diff --git a/man/systemd-gpt-auto-generator.xml b/man/systemd-gpt-auto-generator.xml index 3af423b553..eb7a2c4c28 100644 --- a/man/systemd-gpt-auto-generator.xml +++ b/man/systemd-gpt-auto-generator.xml @@ -62,7 +62,7 @@ partitions and creates mount and swap units for them, based on the partition type GUIDs of GUID partition tables (GPT). It implements the <ulink - url="http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/">Discoverable + url="https://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/">Discoverable Partitions Specification</ulink>. Note that this generator has no effect on non-GPT systems, or where the directories under the mount points are already non-empty. Also, on systems where the diff --git a/man/systemd-hostnamed.service.xml b/man/systemd-hostnamed.service.xml index 6990d41b02..17755aa69e 100644 --- a/man/systemd-hostnamed.service.xml +++ b/man/systemd-hostnamed.service.xml @@ -66,7 +66,7 @@ is a command line client to this service.</para> <para>See the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/hostnamed"> + url="https://www.freedesktop.org/wiki/Software/systemd/hostnamed"> developer documentation</ulink> for information about the APIs <filename>systemd-hostnamed</filename> provides.</para> </refsect1> diff --git a/man/systemd-importd.service.xml b/man/systemd-importd.service.xml index 8fdced475c..70a618ce46 100644 --- a/man/systemd-importd.service.xml +++ b/man/systemd-importd.service.xml @@ -64,7 +64,7 @@ <command>import-tar</command>, <command>export-raw</command>, and <command>export-tar</command> commands.</para> <para>See the - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/importd"> + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/importd"> importd D-Bus API Documentation</ulink> for information about the APIs <filename>systemd-importd</filename> provides.</para> </refsect1> diff --git a/man/systemd-inhibit.xml b/man/systemd-inhibit.xml index ce169960d8..09b82b82c1 100644 --- a/man/systemd-inhibit.xml +++ b/man/systemd-inhibit.xml @@ -72,7 +72,7 @@ should not be interrupted.</para> <para>For more information see the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor + url="https://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor Lock Developer Documentation</ulink>.</para> </refsect1> diff --git a/man/systemd-journal-gatewayd.service.xml b/man/systemd-journal-gatewayd.service.xml index 22294542f3..3ee344e50b 100644 --- a/man/systemd-journal-gatewayd.service.xml +++ b/man/systemd-journal-gatewayd.service.xml @@ -197,7 +197,7 @@ one per line (like <command>journalctl --output json</command>). See <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/json">Journal + url="https://www.freedesktop.org/wiki/Software/systemd/json">Journal JSON Format</ulink> for more information.</para> </listitem> </varlistentry> @@ -222,7 +222,7 @@ transfer (like <command>journalctl --output export</command>). See <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/export">Journal + url="https://www.freedesktop.org/wiki/Software/systemd/export">Journal Export Format</ulink> for more information.</para> </listitem> </varlistentry> @@ -289,7 +289,7 @@ <title>Examples</title> <para>Retrieve events from this boot from local journal in <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/export">Journal + url="https://www.freedesktop.org/wiki/Software/systemd/export">Journal Export Format</ulink>: <programlisting>curl --silent -H'Accept: application/vnd.fdo.journal' \ 'http://localhost:19531/entries?boot'</programlisting> diff --git a/man/systemd-journal-remote.xml b/man/systemd-journal-remote.xml index ee2d5c2486..d7750e416e 100644 --- a/man/systemd-journal-remote.xml +++ b/man/systemd-journal-remote.xml @@ -64,7 +64,7 @@ <filename>systemd-journal-remote</filename> is a command to receive serialized journal events and store them to the journal. Input streams are in the - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/export"> + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/export"> Journal Export Format </ulink>, i.e. like the output from diff --git a/man/systemd-localed.service.xml b/man/systemd-localed.service.xml index 06aa78c0e4..2a796c9045 100644 --- a/man/systemd-localed.service.xml +++ b/man/systemd-localed.service.xml @@ -68,7 +68,7 @@ is a command line client to this service.</para> <para>See the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/localed"> + url="https://www.freedesktop.org/wiki/Software/systemd/localed"> developer documentation</ulink> for information about the APIs <filename>systemd-localed</filename> provides.</para> </refsect1> diff --git a/man/systemd-logind.service.xml b/man/systemd-logind.service.xml index f0bdb1c756..5433269638 100644 --- a/man/systemd-logind.service.xml +++ b/man/systemd-logind.service.xml @@ -60,8 +60,14 @@ manages user logins. It is responsible for:</para> <itemizedlist> - <listitem><para>Keeping track of users and sessions, their - processes and their idle state</para></listitem> + <listitem><para>Keeping track of users and sessions, their processes and their idle state. This is implemented by + allocating a systemd slice unit for each user below <filename>user.slice</filename>, and a scope unit below it + for each concurrent session of a user. Also, a per-user service manager is started as system service instance of + <filename>user@.service</filename> for each user logged in.</para></listitem> + + <listitem><para>Generating and managing session IDs. If auditing is available and an audit session ID is set for + a session already, the session ID is initialized from it. Otherwise, an independent session counter is + used.</para></listitem> <listitem><para>Providing PolicyKit-based access for users to operations such as system shutdown or sleep</para></listitem> @@ -93,17 +99,17 @@ for information about the configuration of this service.</para> <para>See <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/multiseat">Multi-Seat + url="https://www.freedesktop.org/wiki/Software/systemd/multiseat">Multi-Seat on Linux</ulink> for an introduction into basic concepts of logind such as users, sessions and seats.</para> <para>See the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/logind"> + url="https://www.freedesktop.org/wiki/Software/systemd/logind"> logind D-Bus API Documentation</ulink> for information about the APIs <filename>systemd-logind</filename> provides.</para> <para>For more information on the inhibition logic see the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor + url="https://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor Lock Developer Documentation</ulink>.</para> </refsect1> diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml index 944e899bd4..714317c945 100644 --- a/man/systemd-machine-id-setup.xml +++ b/man/systemd-machine-id-setup.xml @@ -92,7 +92,7 @@ environment and a UUID is configured for the container, this is used to initialize the machine ID. For details, see the documentation of the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/ContainerInterface">Container + url="https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface">Container Interface</ulink>.</para></listitem> <listitem><para>Otherwise, a new ID is randomly diff --git a/man/systemd-machined.service.xml b/man/systemd-machined.service.xml index 999aeee1c6..c4f173f79b 100644 --- a/man/systemd-machined.service.xml +++ b/man/systemd-machined.service.xml @@ -71,7 +71,7 @@ names.</para> <para>See the - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/machined"> + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/machined"> machined D-Bus API Documentation</ulink> for information about the APIs <filename>systemd-machined</filename> provides.</para> </refsect1> diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 17c14e9f22..a7af8c25db 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -135,7 +135,7 @@ container.</para> <para><command>systemd-nspawn</command> implements the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/ContainerInterface">Container Interface</ulink> + url="https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface">Container Interface</ulink> specification.</para> <para>While running, containers invoked with <command>systemd-nspawn</command> are registered with the @@ -233,7 +233,7 @@ a server data partition which are mounted to the appropriate places in the container. All these partitions must be identified by the partition types defined by the <ulink - url="http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/">Discoverable + url="https://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/">Discoverable Partitions Specification</ulink>.</para></listitem> <listitem><para>No partition table, and a single file system spanning the whole image.</para></listitem> @@ -474,7 +474,12 @@ <para>Note that the picked UID/GID range is not written to <filename>/etc/passwd</filename> or <filename>/etc/group</filename>. In fact, the allocation of the range is not stored persistently anywhere, - except in the file ownership of the files and directories of the container.</para></listitem> + except in the file ownership of the files and directories of the container.</para> + + <para>Note that when user namespacing is used file ownership on disk reflects this, and all of the container's + files and directories are owned by the container's effective user and group IDs. This means that copying files + from and to the container image requires correction of the numeric UID/GID values, according to the UID/GID + shift applied.</para></listitem> </varlistentry> <varlistentry> diff --git a/man/systemd-remount-fs.service.xml b/man/systemd-remount-fs.service.xml index 176f2b2d20..6a5f0e6e38 100644 --- a/man/systemd-remount-fs.service.xml +++ b/man/systemd-remount-fs.service.xml @@ -72,7 +72,7 @@ systems.</para> <para>For a longer discussion of kernel API file systems see - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems">API + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems">API File Systems</ulink>.</para> </refsect1> diff --git a/man/systemd-resolve.xml b/man/systemd-resolve.xml index b52f946fa5..50da971b07 100644 --- a/man/systemd-resolve.xml +++ b/man/systemd-resolve.xml @@ -182,7 +182,9 @@ (i.e. classic unicast DNS), <literal>llmnr</literal> (<ulink url="https://tools.ietf.org/html/rfc4795">Link-Local Multicast Name Resolution</ulink>), <literal>llmnr-ipv4</literal>, <literal>llmnr-ipv6</literal> (LLMNR via the indicated underlying IP - protocols). By default the lookup is done via all protocols suitable for the lookup. If used, limits the set of + protocols), <literal>mdns</literal> (<ulink url="https://www.ietf.org/rfc/rfc6762.txt">Multicast DNS</ulink>), + <literal>mdns-ipv4</literal>, <literal>mdns-ipv6</literal> (MDNS via the indicated underlying IP protocols). + By default the lookup is done via all protocols suitable for the lookup. If used, limits the set of protocols that may be used. Use this option multiple times to enable resolving via multiple protocols at the same time. The setting <literal>llmnr</literal> is identical to specifying this switch once with <literal>llmnr-ipv4</literal> and once via <literal>llmnr-ipv6</literal>. Note that this option does not force diff --git a/man/systemd-resolved.service.xml b/man/systemd-resolved.service.xml index 6465193cc5..f6831848c7 100644 --- a/man/systemd-resolved.service.xml +++ b/man/systemd-resolved.service.xml @@ -62,7 +62,7 @@ <itemizedlist> <listitem><para>The native, fully-featured API <command>systemd-resolved</command> exposes on the bus. See the - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/resolved">API Documentation</ulink> for + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/resolved">API Documentation</ulink> for details. Usage of this API is generally recommended to clients as it is asynchronous and fully featured (for example, properly returns DNSSEC validation status and interface scope for addresses as necessary for supporting link-local networking).</para></listitem> @@ -156,7 +156,7 @@ per-interface domains are exclusively routed to the matching interfaces.</para> - <para>See the <ulink url="http://www.freedesktop.org/wiki/Software/systemd/resolved"> resolved D-Bus API + <para>See the <ulink url="https://www.freedesktop.org/wiki/Software/systemd/resolved"> resolved D-Bus API Documentation</ulink> for information about the APIs <filename>systemd-resolved</filename> provides.</para> </refsect1> diff --git a/man/systemd-suspend.service.xml b/man/systemd-suspend.service.xml index c7733f2885..2aa172e990 100644 --- a/man/systemd-suspend.service.xml +++ b/man/systemd-suspend.service.xml @@ -91,7 +91,7 @@ for local use only and should be considered hacks. If applications want to react to system suspend/hibernation and resume, they should rather use the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor + url="https://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor interface</ulink>.</para> <para>Note that diff --git a/man/systemd-timedated.service.xml b/man/systemd-timedated.service.xml index e44163aefb..fee860204d 100644 --- a/man/systemd-timedated.service.xml +++ b/man/systemd-timedated.service.xml @@ -67,7 +67,7 @@ is a command line client to this service.</para> <para>See the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/timedated"> + url="https://www.freedesktop.org/wiki/Software/systemd/timedated"> developer documentation</ulink> for information about the APIs <filename>systemd-timedated</filename> provides.</para> </refsect1> diff --git a/man/systemd-tty-ask-password-agent.xml b/man/systemd-tty-ask-password-agent.xml index 2e4b31be07..2c114f4631 100644 --- a/man/systemd-tty-ask-password-agent.xml +++ b/man/systemd-tty-ask-password-agent.xml @@ -66,7 +66,7 @@ runtime.</para> <para><command>systemd-tty-ask-password-agent</command> implements - the <ulink url="http://www.freedesktop.org/wiki/Software/systemd/PasswordAgents">Password + the <ulink url="https://www.freedesktop.org/wiki/Software/systemd/PasswordAgents">Password Agents Specification</ulink>, and is one of many possible response agents which answer to queries formulated with <citerefentry><refentrytitle>systemd-ask-password</refentrytitle><manvolnum>1</manvolnum></citerefentry>. diff --git a/man/systemd.environment-generator.xml b/man/systemd.environment-generator.xml new file mode 100644 index 0000000000..fedbd60175 --- /dev/null +++ b/man/systemd.environment-generator.xml @@ -0,0 +1,160 @@ +<?xml version='1.0'?> <!--*-nxml-*--> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ +<!ENTITY % entities SYSTEM "custom-entities.ent" > +%entities; +]> + +<!-- + This file is part of systemd. + + Copyright 2017 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +--> + +<refentry id="systemd.environment-generator" xmlns:xi="http://www.w3.org/2001/XInclude"> + <refentryinfo> + <title>systemd.environment-generator</title> + <productname>systemd</productname> + + <authorgroup> + <author> + <contrib>Developer</contrib> + <firstname>Zbigniew</firstname> + <surname>Jędrzejewski-Szmek</surname> + <email>zbyszek@in.waw.pl</email> + </author> + </authorgroup> + </refentryinfo> + + <refmeta> + <refentrytitle>systemd.environment-generator</refentrytitle> + <manvolnum>7</manvolnum> + </refmeta> + + <refnamediv> + <refname>systemd.environment-generator</refname> + <refpurpose>Systemd environment file generators</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <cmdsynopsis> + <command>&systemenvgeneratordir;/some-generator</command> + </cmdsynopsis> + <cmdsynopsis> + <command>&userenvgeneratordir;/some-generator</command> + </cmdsynopsis> + + <para> + <literallayout><filename>/run/systemd/system-environment-generators/*</filename> +<filename>/etc/systemd/system-environment-generators/*</filename> +<filename>/usr/local/lib/systemd/system-environment-generators/*</filename> +<filename>&systemenvgeneratordir;/*</filename></literallayout> + </para> + + <para> + <literallayout><filename>/run/systemd/user-environment-generators/*</filename> +<filename>/etc/systemd/user-environment-generators/*</filename> +<filename>/usr/local/lib/systemd/user-environment-generators/*</filename> +<filename>&userenvgeneratordir;/*</filename></literallayout> + </para> + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + <para>Generators are small executables that live in + <filename>&systemenvgeneratordir;/</filename> and other directories listed above. + <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> will + execute those binaries very early at the startup of each manager and at configuration + reload time, before running the generators described in + <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry> + and before starting any units. Environment generators can override the environment that the + manager exports to services and other processes.</para> + + <para>Generators are loaded from a set of paths determined during compilation, as listed + above. System and user environment generators are loaded from directories with names ending in + <filename>system-environment-generators/</filename> and + <filename>user-environment-generators/</filename>, respectively. Generators found in directories + listed earlier override the ones with the same name in directories lower in the list. A symlink + to <filename>/dev/null</filename> or an empty file can be used to mask a generator, thereby + preventing it from running. Please note that the order of the two directories with the highest + priority is reversed with respect to the unit load path, and generators in + <filename>/run</filename> overwrite those in <filename>/etc</filename>.</para> + + <para>After installing new generators or updating the configuration, <command>systemctl + daemon-reload</command> may be executed. This will re-run all generators, updating environment + configuration. It will be used for any services that are started subsequently.</para> + + <para>Environment file generators are executed similarly to unit file generators described + in + <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>, + with the following differences:</para> + + <itemizedlist> + <listitem> + <para>Generators are executed sequentially in the alphanumerical order of the final + component of their name. The output of each generator output is immediately parsed and used + to update the environment for generators that run after that. Thus, later generators can use + and/or modify the output of earlier generators.</para> + </listitem> + + <listitem> + <para>Generators are run by every manager instance, their output can be different for each + user.</para> + </listitem> + </itemizedlist> + + <para>It is recommended to use numerical prefixes for generator names to simplify ordering.</para> + </refsect1> + + <refsect1> + <title>Examples</title> + + <example> + <title>A simple generator that extends an environment variable if a directory exists in the file system</title> + + <programlisting># 50-xdg-data-dirs.sh + +<xi:include href="50-xdg-data-dirs.sh" parse="text" /></programlisting> + </example> + + <example> + <title>A more complicated generator which reads existing configuration and mutates one variable</title> + + <programlisting># 90-rearrange-path.py + +<xi:include href="90-rearrange-path.py" parse="text" /></programlisting> + </example> + + <example> + <title>Debugging a generator</title> + + <programlisting>SYSTEMD_LOG_LEVEL=debug VAR_A=something VAR_B="something else" \ +&systemenvgeneratordir;/path-to-generator +</programlisting> + </example> + </refsect1> + + <refsect1> + <title>See also</title> + + <para> + <citerefentry><refentrytitle>systemd-environment-d-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> + </para> + </refsect1> +</refentry> diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index c3c3630154..5d4986b6bf 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -142,7 +142,7 @@ file instead of a directory. The device node or file system image file needs to contain a file system without a partition table, or a file system within an MBR/MS-DOS or GPT partition table with only a single Linux-compatible partition, or a set of file systems within a GPT partition table that follows the <ulink - url="http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/">Discoverable Partitions + url="https://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/">Discoverable Partitions Specification</ulink>.</para></listitem> </varlistentry> @@ -1151,16 +1151,18 @@ <filename>/proc/sys</filename>, <filename>/sys</filename>, <filename>/proc/sysrq-trigger</filename>, <filename>/proc/latency_stats</filename>, <filename>/proc/acpi</filename>, <filename>/proc/timer_stats</filename>, <filename>/proc/fs</filename> and <filename>/proc/irq</filename> will - be made read-only to all processes of the unit. Usually, tunable kernel variables should only be written at - boot-time, with the <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> - mechanism. Almost no services need to write to these at runtime; it is hence recommended to turn this on for - most services. For this setting the same restrictions regarding mount propagation and privileges apply as for - <varname>ReadOnlyPaths=</varname> and related calls, see above. Defaults to off. - If turned on and if running in user mode, or in system mode, but without the <constant>CAP_SYS_ADMIN</constant> - capability (e.g. setting <varname>User=</varname>), <varname>NoNewPrivileges=yes</varname> - is implied. Note that this option does not prevent kernel tuning through IPC interfaces - and external programs. However <varname>InaccessiblePaths=</varname> can be used to - make some IPC file system objects inaccessible.</para></listitem> + be made read-only to all processes of the unit. Usually, tunable kernel variables should be initialized only at + boot-time, for example with the + <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> mechanism. Few + services need to write to these at runtime; it is hence recommended to turn this on for most services. For this + setting the same restrictions regarding mount propagation and privileges apply as for + <varname>ReadOnlyPaths=</varname> and related calls, see above. Defaults to off. If turned on and if running + in user mode, or in system mode, but without the <constant>CAP_SYS_ADMIN</constant> capability (e.g. services + for which <varname>User=</varname> is set), <varname>NoNewPrivileges=yes</varname> is implied. Note that this + option does not prevent indirect changes to kernel tunables effected by IPC calls to other processes. However, + <varname>InaccessiblePaths=</varname> may be used to make relevant IPC file system objects inaccessible. If + <varname>ProtectKernelTunables=</varname> is set, <varname>MountAPIVFS=yes</varname> is + implied.</para></listitem> </varlistentry> <varlistentry> @@ -1196,7 +1198,8 @@ unit. Except for container managers no services should require write access to the control groups hierarchies; it is hence recommended to turn this on for most services. For this setting the same restrictions regarding mount propagation and privileges apply as for <varname>ReadOnlyPaths=</varname> and related calls, see - above. Defaults to off.</para></listitem> + above. Defaults to off. If <varname>ProtectControlGroups=</varname> is set, <varname>MountAPIVFS=yes</varname> is + implied.</para></listitem> </varlistentry> <varlistentry> @@ -1360,6 +1363,11 @@ filter is reset, all prior assignments will have no effect. This does not affect commands prefixed with <literal>+</literal>.</para> + <para>Note that on systems supporting multiple ABIs (such as x86/x86-64) it is recommended to turn off + alternative ABIs for services, so that they cannot be used to circumvent the restrictions of this + option. Specifically, it is recommended to combine this option with + <varname>SystemCallArchitectures=native</varname> or similar.</para> + <para>Note that strict system call filters may impact execution and error handling code paths of the service invocation. Specifically, access to the <function>execve</function> system call is required for the execution of the service binary — if it is blocked service invocation will necessarily fail. Also, if execution of the @@ -1509,25 +1517,31 @@ <varlistentry> <term><varname>SystemCallArchitectures=</varname></term> - <listitem><para>Takes a space-separated list of architecture identifiers to - include in the system call filter. The known architecture identifiers are the same - as for <varname>ConditionArchitecture=</varname> described in - <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>, - as well as <constant>x32</constant>, <constant>mips64-n32</constant>, - <constant>mips64-le-n32</constant>, and the special identifier - <constant>native</constant>. Only system calls of the specified architectures will - be permitted to processes of this unit. This is an effective way to disable - compatibility with non-native architectures for processes, for example to prohibit - execution of 32-bit x86 binaries on 64-bit x86-64 systems. The special - <constant>native</constant> identifier implicitly maps to the native architecture - of the system (or more strictly: to the architecture the system manager is - compiled for). If running in user mode, or in system mode, but without the - <constant>CAP_SYS_ADMIN</constant> capability (e.g. setting - <varname>User=nobody</varname>), <varname>NoNewPrivileges=yes</varname> is - implied. Note that setting this option to a non-empty list implies that - <constant>native</constant> is included too. By default, this option is set to the - empty list, i.e. no architecture system call filtering is applied. - </para></listitem> + <listitem><para>Takes a space-separated list of architecture identifiers to include in the system call + filter. The known architecture identifiers are the same as for <varname>ConditionArchitecture=</varname> + described in <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>, + as well as <constant>x32</constant>, <constant>mips64-n32</constant>, <constant>mips64-le-n32</constant>, and + the special identifier <constant>native</constant>. Only system calls of the specified architectures will be + permitted to processes of this unit. This is an effective way to disable compatibility with non-native + architectures for processes, for example to prohibit execution of 32-bit x86 binaries on 64-bit x86-64 + systems. The special <constant>native</constant> identifier implicitly maps to the native architecture of the + system (or more strictly: to the architecture the system manager is compiled for). If running in user mode, or + in system mode, but without the <constant>CAP_SYS_ADMIN</constant> capability (e.g. setting + <varname>User=nobody</varname>), <varname>NoNewPrivileges=yes</varname> is implied. Note that setting this + option to a non-empty list implies that <constant>native</constant> is included too. By default, this option is + set to the empty list, i.e. no system call architecture filtering is applied.</para> + + <para>Note that system call filtering is not equally effective on all architectures. For example, on x86 + filtering of network socket-related calls is not possible, due to ABI limitations — a limitation that x86-64 + does not have, however. On systems supporting multiple ABIs at the same time — such as x86/x86-64 — it is hence + recommended to limit the set of permitted system call architectures so that secondary ABIs may not be used to + circumvent the restrictions applied to the native ABI of the system. In particular, setting + <varname>SystemCallFilter=native</varname> is a good choice for disabling non-native ABIs.</para> + + <para>System call architectures may also be restricted system-wide via the + <varname>SystemCallArchitectures=</varname> option in the global configuration. See + <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> for + details.</para></listitem> </varlistentry> <varlistentry> @@ -1543,7 +1557,10 @@ units, see <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>) are unaffected. Also, sockets created with <function>socketpair()</function> (which creates connected AF_UNIX sockets only) are unaffected. Note that this option has no effect on 32-bit x86, s390, s390x, mips, mips-le, - ppc, ppc-le, pcc64, ppc64-le and is ignored (but works correctly on other architectures, including x86-64). If + ppc, ppc-le, pcc64, ppc64-le and is ignored (but works correctly on other ABIs, including x86-64). Note that on + systems supporting multiple ABIs (such as x86/x86-64) it is recommended to turn off alternative ABIs for + services, so that they cannot be used to circumvent the restrictions of this option. Specifically, it is + recommended to combine this option with <varname>SystemCallArchitectures=native</varname> or similar. If running in user mode, or in system mode, but without the <constant>CAP_SYS_ADMIN</constant> capability (e.g. setting <varname>User=nobody</varname>), <varname>NoNewPrivileges=yes</varname> is implied. By default, no restrictions apply, all address families are accessible to processes. If assigned the empty string, any @@ -1642,9 +1659,12 @@ code dynamically at runtime, such as JIT execution engines, or programs compiled making use of the code "trampoline" feature of various C compilers. This option improves service security, as it makes harder for software exploits to change running code dynamically. Note that this feature is fully available on x86-64, and - partially on x86. Specifically, the <function>shmat()</function> protection is not available on x86. If running - in user mode, or in system mode, but without the <constant>CAP_SYS_ADMIN</constant> capability (e.g. setting - <varname>User=</varname>), <varname>NoNewPrivileges=yes</varname> is implied. </para></listitem> + partially on x86. Specifically, the <function>shmat()</function> protection is not available on x86. Note that + on systems supporting multiple ABIs (such as x86/x86-64) it is recommended to turn off alternative ABIs for + services, so that they cannot be used to circumvent the restrictions of this option. Specifically, it is + recommended to combine this option with <varname>SystemCallArchitectures=native</varname> or similar. If + running in user mode, or in system mode, but without the <constant>CAP_SYS_ADMIN</constant> capability + (e.g. setting <varname>User=</varname>), <varname>NoNewPrivileges=yes</varname> is implied. </para></listitem> </varlistentry> <varlistentry> diff --git a/man/systemd.generator.xml b/man/systemd.generator.xml index b268104c9d..fb0f0c4da8 100644 --- a/man/systemd.generator.xml +++ b/man/systemd.generator.xml @@ -342,7 +342,8 @@ find $dir</programlisting> <citerefentry><refentrytitle>systemd-system-update-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd-sysv-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>, - <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> + <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemd.environment-generator</refentrytitle><manvolnum>7</manvolnum></citerefentry> </para> </refsect1> </refentry> diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml index 494f97aad1..747d985aa1 100644 --- a/man/systemd.journal-fields.xml +++ b/man/systemd.journal-fields.xml @@ -243,6 +243,16 @@ </varlistentry> <varlistentry> + <term><varname>_SYSTEMD_INVOCATION_ID=</varname></term> + <listitem> + <para>The invocation ID for the runtime cycle of the unit + the message was generated in, as available to processes + of the unit in <varname>$INVOCATION_ID</varname> (see + <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>).</para> + </listitem> + </varlistentry> + + <varlistentry> <term><varname>_HOSTNAME=</varname></term> <listitem> <para>The name of the originating host.</para> @@ -457,9 +467,9 @@ <para>During serialization into external formats, such as the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/export">Journal + url="https://www.freedesktop.org/wiki/Software/systemd/export">Journal Export Format</ulink> or the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/json">Journal + url="https://www.freedesktop.org/wiki/Software/systemd/json">Journal JSON Format</ulink>, the addresses of journal entries are serialized into fields prefixed with double underscores. Note that these are not proper fields when stored in the journal but for diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml index bb372d788a..4a404fb424 100644 --- a/man/systemd.mount.xml +++ b/man/systemd.mount.xml @@ -104,7 +104,7 @@ for kernel-to-userspace and userspace-to-userspace interfaces. Some of them may not be changed via mount units, and cannot be disabled. For a longer discussion see <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems">API + url="https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems">API File Systems</ulink>.</para> </refsect1> @@ -194,6 +194,25 @@ </varlistentry> <varlistentry> + <term><option>x-systemd.before=</option></term> + <term><option>x-systemd.after=</option></term> + + <listitem><para>Configures a <varname>Before=</varname> + dependency or <varname>After=</varname> between the created + mount unit and another systemd unit, such as a mount unit. + The argument should be a unit name or an absolute path + to a mount point. This option may be specified more than once. + This option is particularly useful for mount point declarations + with <option>nofail</option> option that are mounted + asynchronously but need to be mounted before or after some unit + start, for example, before <filename>local-fs.target</filename> + unit. + See <varname>Before=</varname> and <varname>After=</varname> in + <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry> + for details.</para></listitem> + </varlistentry> + + <varlistentry> <term><option>x-systemd.requires-mounts-for=</option></term> <listitem><para>Configures a diff --git a/man/systemd.netdev.xml b/man/systemd.netdev.xml index ef6a37fe76..39e69480ec 100644 --- a/man/systemd.netdev.xml +++ b/man/systemd.netdev.xml @@ -469,12 +469,18 @@ </listitem> </varlistentry> <varlistentry> - <term><varname>Group=</varname></term> + <term><varname>Remote=</varname></term> <listitem> - <para>An assigned multicast group IP address.</para> + <para>Configures destination multicast group IP address.</para> </listitem> </varlistentry> <varlistentry> + <term><varname>Local=</varname></term> + <listitem> + <para>Configures local IP address.</para> + </listitem> + </varlistentry> + <varlistentry> <term><varname>TOS=</varname></term> <listitem> <para>The Type Of Service byte value for a vxlan interface.</para> diff --git a/man/systemd.network.xml b/man/systemd.network.xml index 7818dfff81..b807ebf29b 100644 --- a/man/systemd.network.xml +++ b/man/systemd.network.xml @@ -612,6 +612,25 @@ </para></listitem> </varlistentry> <varlistentry> + <term><varname>IPv6ProxyNDPAddress=</varname></term> + <listitem><para>An IPv6 address, for which Neighbour Advertisement + messages will be proxied. + Proxy NDP (Neighbor Discovery Protocol) is a technique for IPv6 to + allow routing of addresses to a different destination when peers expect them + to be present on a certain physical link. + In this case a router answers Neighbour Advertisement messages intended for + another machine by offering its own MAC address as destination. + Unlike proxy ARP for IPv4, is not enabled globally, but will only send Neighbour + Advertisement messages for addresses in the IPv6 neighbor proxy table, + which can also be shown by <command>ip -6 neighbour show proxy</command> + This option may be specified more than once. systemd-networkd will control the + per-interface `proxy_ndp` switch for each configured interface, depending on whether + there are <option>IPv6ProxyNDPAddress=</option> entries configured and add these to + the kernels IPv6 neighbor proxy table. + Defaults to unset. + </para></listitem> + </varlistentry> + <varlistentry> <term><varname>Bridge=</varname></term> <listitem> <para>The name of the bridge to add the link to. See diff --git a/man/systemd.offline-updates.xml b/man/systemd.offline-updates.xml index 06690b41f4..b4dce3e92d 100644 --- a/man/systemd.offline-updates.xml +++ b/man/systemd.offline-updates.xml @@ -154,7 +154,7 @@ script exits uncleanly (by non-zero error code, or signal/coredump). If your script succeeds you should trigger the reboot in your own code, for example by invoking logind's <command>Reboot()</command> call or calling <command>systemctl reboot</command>. See - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/logind">logind dbus API</ulink> + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/logind">logind dbus API</ulink> for details.</para> </listitem> @@ -170,7 +170,7 @@ <title>See also</title> <para> - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/SystemUpdates/">Implementing Offline System Updates</ulink>, + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/SystemUpdates/">Implementing Offline System Updates</ulink>, <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd-system-update-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>, diff --git a/man/systemd.preset.xml b/man/systemd.preset.xml index d09167baaf..92eb4e8280 100644 --- a/man/systemd.preset.xml +++ b/man/systemd.preset.xml @@ -72,7 +72,7 @@ <para>For more information on the preset logic please have a look at the <ulink - url="http://freedesktop.org/wiki/Software/systemd/Preset">Presets</ulink> + url="https://www.freedesktop.org/wiki/Software/systemd/Preset">Presets</ulink> document.</para> <para>It is not recommended to ship preset files within the diff --git a/man/systemd.resource-control.xml b/man/systemd.resource-control.xml index 02878b28a0..9b1f5dbbab 100644 --- a/man/systemd.resource-control.xml +++ b/man/systemd.resource-control.xml @@ -87,7 +87,7 @@ Those options complement options listed here.</para> <para>See the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">New + url="https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">New Control Group Interfaces</ulink> for an introduction on how to make use of resource control APIs from programs.</para> </refsect1> diff --git a/man/systemd.scope.xml b/man/systemd.scope.xml index f69b2ef635..36f24d46a1 100644 --- a/man/systemd.scope.xml +++ b/man/systemd.scope.xml @@ -69,7 +69,7 @@ command line.</para> <para>See the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">New + url="https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">New Control Group Interfaces</ulink> for an introduction on how to make use of scope units from programs.</para> </refsect1> diff --git a/man/systemd.service.xml b/man/systemd.service.xml index 627176750f..52eb2bb424 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -84,7 +84,7 @@ This is useful for compatibility with SysV. Note that this compatibility is quite comprehensive but not 100%. For details about the incompatibilities, see the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities">Incompatibilities + url="https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities">Incompatibilities with SysV</ulink> document.</para> </refsect1> diff --git a/man/systemd.slice.xml b/man/systemd.slice.xml index eee98d99ee..3ff3cc5188 100644 --- a/man/systemd.slice.xml +++ b/man/systemd.slice.xml @@ -97,7 +97,7 @@ </para> <para>See the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">New + url="https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">New Control Group Interfaces</ulink> for an introduction on how to make use of slice units from programs.</para> </refsect1> diff --git a/man/systemd.special.xml b/man/systemd.special.xml index c2672511e3..fa3dc1c5d4 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -47,16 +47,14 @@ <refpurpose>Special systemd units</refpurpose> </refnamediv> - <refsynopsisdiv> - <para><filename>basic.target</filename>, + <refsynopsisdiv><para> + <!-- sort alphabetically, targets first --> + <filename>basic.target</filename>, <filename>bluetooth.target</filename>, - <filename>ctrl-alt-del.target</filename>, - <filename>cryptsetup.target</filename>, <filename>cryptsetup-pre.target</filename>, - <filename>dbus.service</filename>, - <filename>dbus.socket</filename>, + <filename>cryptsetup.target</filename>, + <filename>ctrl-alt-del.target</filename>, <filename>default.target</filename>, - <filename>display-manager.service</filename>, <filename>emergency.target</filename>, <filename>exit.target</filename>, <filename>final.target</filename>, @@ -66,25 +64,26 @@ <filename>hibernate.target</filename>, <filename>hybrid-sleep.target</filename>, <filename>initrd-fs.target</filename>, + <filename>initrd-root-device.target</filename>, + <filename>initrd-root-fs.target</filename>, <filename>kbrequest.target</filename>, <filename>kexec.target</filename>, - <filename>local-fs.target</filename>, <filename>local-fs-pre.target</filename>, + <filename>local-fs.target</filename>, + <filename>machines.target</filename> <filename>multi-user.target</filename>, - <filename>network.target</filename>, <filename>network-online.target</filename>, <filename>network-pre.target</filename>, + <filename>network.target</filename>, <filename>nss-lookup.target</filename>, <filename>nss-user-lookup.target</filename>, <filename>paths.target</filename>, <filename>poweroff.target</filename>, <filename>printer.target</filename>, <filename>reboot.target</filename>, - <filename>remote-fs.target</filename>, <filename>remote-fs-pre.target</filename>, + <filename>remote-fs.target</filename>, <filename>rescue.target</filename>, - <filename>initrd-root-device.target</filename>, - <filename>initrd-root-fs.target</filename>, <filename>rpcbind.target</filename>, <filename>runlevel2.target</filename>, <filename>runlevel3.target</filename>, @@ -102,21 +101,27 @@ <filename>sysinit.target</filename>, <filename>syslog.socket</filename>, <filename>system-update.target</filename>, - <filename>system-update-cleanup.service</filename>, <filename>time-sync.target</filename>, <filename>timers.target</filename>, <filename>umount.target</filename>, + <!-- slices --> <filename>-.slice</filename>, <filename>system.slice</filename>, <filename>user.slice</filename>, - <filename>machine.slice</filename></para> - </refsynopsisdiv> + <filename>machine.slice</filename>, + <!-- the rest --> + <filename>dbus.service</filename>, + <filename>dbus.socket</filename>, + <filename>display-manager.service</filename>, + <filename>system-update-cleanup.service</filename> + </para></refsynopsisdiv> <refsect1> <title>Description</title> - <para>A few units are treated specially by systemd. They have - special internal semantics and cannot be renamed.</para> + <para>A few units are treated specially by systemd. Many of them have + special internal semantics and cannot be renamed, while others simply + have a standard meaning and should be present on all systems.</para> </refsect1> <refsect1> @@ -349,6 +354,14 @@ </listitem> </varlistentry> <varlistentry> + <term><filename>machines.target</filename></term> + <listitem> + <para>A standard target unit for starting all the containers + and other virtual machines. See <filename>systemd-nspawn@.service</filename> + for an example.</para> + </listitem> + </varlistentry> + <varlistentry> <term><filename>multi-user.target</filename></term> <listitem> <para>A special target unit for setting up a multi-user @@ -386,7 +399,7 @@ is part of the boot of most systems, while <filename>network-online.target</filename> is not, except when at least one unit requires it. Also see <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget">Running + url="https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget">Running Services After the Network is up</ulink> for more information.</para> @@ -603,7 +616,7 @@ on. All userspace log messages will be made available on this socket. For more information about syslog integration, please consult the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/syslog">Syslog + url="https://www.freedesktop.org/wiki/Software/systemd/syslog">Syslog Interface</ulink> document.</para> </listitem> </varlistentry> @@ -772,7 +785,7 @@ is shut down. It is hence useful when writing service files that require network access on shutdown, which should order themselves after this target, but not pull it in. Also see - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget">Running + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget">Running Services After the Network is up</ulink> for more information. Also see <filename>network-online.target</filename> described diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 417840e6c2..44841ac7dd 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -256,7 +256,7 @@ <para>The unit file format is covered by the <ulink - url="http://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise">Interface + url="https://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise">Interface Stability Promise</ulink>.</para> </refsect1> @@ -436,32 +436,30 @@ <varlistentry> <term><varname>Requires=</varname></term> - <listitem><para>Configures requirement dependencies on other - units. If this unit gets activated, the units listed here will - be activated as well. If one of the other units gets - deactivated or its activation fails, this unit will be - deactivated. This option may be specified more than once or - multiple space-separated units may be specified in one option - in which case requirement dependencies for all listed names - will be created. Note that requirement dependencies do not - influence the order in which services are started or stopped. - This has to be configured independently with the - <varname>After=</varname> or <varname>Before=</varname> - options. If a unit <filename>foo.service</filename> requires a - unit <filename>bar.service</filename> as configured with - <varname>Requires=</varname> and no ordering is configured - with <varname>After=</varname> or <varname>Before=</varname>, - then both units will be started simultaneously and without any - delay between them if <filename>foo.service</filename> is - activated. Often, it is a better choice to use - <varname>Wants=</varname> instead of - <varname>Requires=</varname> in order to achieve a system that - is more robust when dealing with failing services.</para> - - <para>Note that dependencies of this type may also be - configured outside of the unit configuration file by adding a - symlink to a <filename>.requires/</filename> directory - accompanying the unit file. For details, see + <listitem><para>Configures requirement dependencies on other units. If this unit gets activated, the units + listed here will be activated as well. If one of the other units gets deactivated or its activation fails, this + unit will be deactivated. This option may be specified more than once or multiple space-separated units may be + specified in one option in which case requirement dependencies for all listed names will be created. Note that + requirement dependencies do not influence the order in which services are started or stopped. This has to be + configured independently with the <varname>After=</varname> or <varname>Before=</varname> options. If a unit + <filename>foo.service</filename> requires a unit <filename>bar.service</filename> as configured with + <varname>Requires=</varname> and no ordering is configured with <varname>After=</varname> or + <varname>Before=</varname>, then both units will be started simultaneously and without any delay between them + if <filename>foo.service</filename> is activated. Often, it is a better choice to use <varname>Wants=</varname> + instead of <varname>Requires=</varname> in order to achieve a system that is more robust when dealing with + failing services.</para> + + <para>Note that this dependency type does not imply that the other unit always has to be in active state when + this unit is running. Specifically: failing condition checks (such as <varname>ConditionPathExists=</varname>, + <varname>ConditionPathExists=</varname>, … — see below) do not cause the start job of a unit with a + <varname>Requires=</varname> dependency on it to fail. Also, some unit types may deactivate on their own (for + example, a service process may decide to exit cleanly, or a device may be unplugged by the user), which is not + propagated to units having a <varname>Requires=</varname> dependency. Use the <varname>BindsTo=</varname> + dependency type together with <varname>After=</varname> to ensure that a unit may never be in active state + without a specific other unit also in active state (see below).</para> + + <para>Note that dependencies of this type may also be configured outside of the unit configuration file by + adding a symlink to a <filename>.requires/</filename> directory accompanying the unit file. For details, see above.</para></listitem> </varlistentry> @@ -495,14 +493,21 @@ <varlistentry> <term><varname>BindsTo=</varname></term> - <listitem><para>Configures requirement dependencies, very - similar in style to <varname>Requires=</varname>, however in - addition to this behavior, it also declares that this unit is - stopped when any of the units listed suddenly disappears. - Units can suddenly, unexpectedly disappear if a service - terminates on its own choice, a device is unplugged or a mount - point unmounted without involvement of - systemd.</para></listitem> + <listitem><para>Configures requirement dependencies, very similar in style to + <varname>Requires=</varname>. However, this dependency type is stronger: in addition to the effect of + <varname>Requires=</varname> it declares that if the unit bound to is stopped, this unit will be stopped + too. This means a unit bound to another unit that suddenly enters inactive state will be stopped too. + Units can suddenly, unexpectedly enter inactive state for different reasons: the main process of a service unit + might terminate on its own choice, the backing device of a device unit might be unplugged or the mount point of + a mount unit might be unmounted without involvement of the system and service manager.</para> + + <para>When used in conjunction with <varname>After=</varname> on the same unit the behaviour of + <varname>BindsTo=</varname> is even stronger. In this case, the unit bound to strictly has to be in active + state for this unit to also be in active state. This not only means a unit bound to another unit that suddenly + enters inactive state, but also one that is bound to another unit that gets skipped due to a failed condition + check (such as <varname>ConditionPathExists=</varname>, <varname>ConditionPathIsSymbolicLink=</varname>, … — + see below) will be stopped, should it be running. Hence, in many cases it is best to combine + <varname>BindsTo=</varname> with <varname>After=</varname>.</para></listitem> </varlistentry> <varlistentry> @@ -541,42 +546,26 @@ <term><varname>Before=</varname></term> <term><varname>After=</varname></term> - <listitem><para>A space-separated list of unit names. - Configures ordering dependencies between units. If a unit - <filename>foo.service</filename> contains a setting - <option>Before=bar.service</option> and both units are being - started, <filename>bar.service</filename>'s start-up is - delayed until <filename>foo.service</filename> is started up. - Note that this setting is independent of and orthogonal to the - requirement dependencies as configured by - <varname>Requires=</varname>. It is a common pattern to - include a unit name in both the <varname>After=</varname> and - <varname>Requires=</varname> option, in which case the unit - listed will be started before the unit that is configured with - these options. This option may be specified more than once, in - which case ordering dependencies for all listed names are - created. <varname>After=</varname> is the inverse of - <varname>Before=</varname>, i.e. while - <varname>After=</varname> ensures that the configured unit is - started after the listed unit finished starting up, - <varname>Before=</varname> ensures the opposite, i.e. that the - configured unit is fully started up before the listed unit is - started. Note that when two units with an ordering dependency - between them are shut down, the inverse of the start-up order - is applied. i.e. if a unit is configured with - <varname>After=</varname> on another unit, the former is - stopped before the latter if both are shut down. Given two units - with any ordering dependency between them, if one unit is shut - down and the other is started up, the shutdown is ordered - before the start-up. It doesn't matter if the ordering - dependency is <varname>After=</varname> or - <varname>Before=</varname>. It also doesn't matter which of the - two is shut down, as long as one is shut down and the other is - started up. The shutdown is ordered before the start-up in all - cases. If two units have no ordering dependencies between them, - they are shut down or started up simultaneously, and no ordering - takes place. - </para></listitem> + <listitem><para>A space-separated list of unit names. Configures ordering dependencies between units. If a + unit <filename>foo.service</filename> contains a setting <option>Before=bar.service</option> and both units are + being started, <filename>bar.service</filename>'s start-up is delayed until <filename>foo.service</filename> is + started up. Note that this setting is independent of and orthogonal to the requirement dependencies as + configured by <varname>Requires=</varname>, <varname>Wants=</varname> or <varname>BindsTo=</varname>. It is a + common pattern to include a unit name in both the <varname>After=</varname> and <varname>Requires=</varname> + option, in which case the unit listed will be started before the unit that is configured with these + options. This option may be specified more than once, in which case ordering dependencies for all listed names + are created. <varname>After=</varname> is the inverse of <varname>Before=</varname>, i.e. while + <varname>After=</varname> ensures that the configured unit is started after the listed unit finished starting + up, <varname>Before=</varname> ensures the opposite, i.e. that the configured unit is fully started up before + the listed unit is started. Note that when two units with an ordering dependency between them are shut down, + the inverse of the start-up order is applied. i.e. if a unit is configured with <varname>After=</varname> on + another unit, the former is stopped before the latter if both are shut down. Given two units with any ordering + dependency between them, if one unit is shut down and the other is started up, the shutdown is ordered before + the start-up. It doesn't matter if the ordering dependency is <varname>After=</varname> or + <varname>Before=</varname>, in this case. It also doesn't matter which of the two is shut down, as long as one + is shut down and the other is started up. The shutdown is ordered before the start-up in all cases. If two + units have no ordering dependencies between them, they are shut down or started up simultaneously, and no + ordering takes place. </para></listitem> </varlistentry> <varlistentry> diff --git a/man/systemd.xml b/man/systemd.xml index 2964fecd25..e8178ca4bb 100644 --- a/man/systemd.xml +++ b/man/systemd.xml @@ -51,10 +51,13 @@ <refsynopsisdiv> <cmdsynopsis> - <command>systemd <arg choice="opt" rep="repeat">OPTIONS</arg></command> + <command>systemd</command> + <arg choice="opt" rep="repeat">OPTIONS</arg> </cmdsynopsis> <cmdsynopsis> - <command>init <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="req">COMMAND</arg></command> + <command>init</command> + <arg choice="opt" rep="repeat">OPTIONS</arg> + <arg choice="req">COMMAND</arg> </cmdsynopsis> </refsynopsisdiv> @@ -150,6 +153,7 @@ user instance. This setting may also be enabled during boot, on the kernel command line via the <varname>systemd.crash_vt=</varname> option, see + <!-- FIXME: there is no crash_vt command line option? --> below.</para></listitem> </varlistentry> @@ -449,7 +453,7 @@ <para>Note that some but not all interfaces provided by systemd are covered by the - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise">Interface + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise">Interface Stability Promise</ulink>.</para> <para>Units may be generated dynamically at boot and system @@ -459,8 +463,8 @@ <para>Systems which invoke systemd in a container or initrd environment should implement the - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/ContainerInterface">Container Interface</ulink> or - <ulink url="http://www.freedesktop.org/wiki/Software/systemd/InitrdInterface">initrd Interface</ulink> + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface">Container Interface</ulink> or + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/InitrdInterface">initrd Interface</ulink> specifications, respectively.</para> </refsect1> @@ -757,7 +761,7 @@ <term><constant>SIGRTMIN+27</constant></term> <term><constant>SIGRTMIN+28</constant></term> - <listitem><para>Sets the log level to + <listitem><para>Sets the log target to <literal>journal-or-kmsg</literal> (or <literal>console</literal> on <constant>SIGRTMIN+27</constant>, <literal>kmsg</literal> on @@ -898,88 +902,91 @@ </varlistentry> <varlistentry> - <term><varname>systemd.dump_core=</varname></term> + <term><varname>systemd.dump_core</varname></term> - <listitem><para>Takes a boolean argument. If - <option>yes</option>, the systemd manager (PID 1) dumps core - when it crashes. Otherwise, no core dump is created. Defaults - to <option>yes</option>.</para></listitem> + <listitem><para>Takes a boolean argument or enables the option if specified + without an argument. If enabled, the systemd manager (PID 1) dumps core when + it crashes. Otherwise, no core dump is created. Defaults to enabled.</para> + </listitem> </varlistentry> <varlistentry> - <term><varname>systemd.crash_chvt=</varname></term> + <term><varname>systemd.crash_chvt</varname></term> - <listitem><para>Takes a positive integer, or a boolean - argument. If a positive integer (in the range 1–63) is - specified, the system manager (PID 1) will activate the specified - virtual terminal (VT) when it crashes. Defaults to - <constant>no</constant>, meaning that no such switch is - attempted. If set to <constant>yes</constant>, the VT the - kernel messages are written to is selected.</para></listitem> + <listitem><para>Takes a positive integer, or a boolean argument. Can be also + specified without an argument, with the same effect as a positive boolean. If + a positive integer (in the range 1–63) is specified, the system manager (PID + 1) will activate the specified virtual terminal (VT) when it + crashes. Defaults to disabled, meaning that no such switch is attempted. If + set to enabled, the VT the kernel messages are written to is selected. + </para></listitem> </varlistentry> <varlistentry> - <term><varname>systemd.crash_shell=</varname></term> + <term><varname>systemd.crash_shell</varname></term> - <listitem><para>Takes a boolean argument. If - <option>yes</option>, the system manager (PID 1) spawns a - shell when it crashes, after a 10s delay. Otherwise, no shell - is spawned. Defaults to <option>no</option>, for security - reasons, as the shell is not protected by password + <listitem><para>Takes a boolean argument or enables the option if specified + without an argument. If enabled, the system manager (PID 1) spawns a shell + when it crashes, after a 10s delay. Otherwise, no shell is spawned. Defaults + to disabled, for security reasons, as the shell is not protected by password authentication.</para></listitem> </varlistentry> <varlistentry> - <term><varname>systemd.crash_reboot=</varname></term> + <term><varname>systemd.crash_reboot</varname></term> - <listitem><para>Takes a boolean argument. If - <option>yes</option>, the system manager (PID 1) will reboot - the machine automatically when it crashes, after a 10s delay. - Otherwise, the system will hang indefinitely. Defaults to - <option>no</option>, in order to avoid a reboot loop. If - combined with <varname>systemd.crash_shell=</varname>, the + <listitem><para>Takes a boolean argument or enables the option if specified + without an argument. If enabled, the system manager (PID 1) will reboot the + machine automatically when it crashes, after a 10s delay. Otherwise, the + system will hang indefinitely. Defaults to disabled, in order to avoid a + reboot loop. If combined with <varname>systemd.crash_shell</varname>, the system is rebooted after the shell exits.</para></listitem> </varlistentry> <varlistentry> - <term><varname>systemd.confirm_spawn=</varname></term> + <term><varname>systemd.confirm_spawn</varname></term> - <listitem><para>Takes a boolean argument or a path to the - virtual console where the confirmation messages should be - emitted. If <option>yes</option>, the system manager (PID 1) - asks for confirmation when spawning processes using - <option>/dev/console</option>. If a path or a console name - (such as <literal>ttyS0</literal>) is provided, the virtual - console pointed to by this path or described by the give name - will be used instead. Defaults to <option>no</option>.</para></listitem> + <listitem><para>Takes a boolean argument or a path to the virtual console + where the confirmation messages should be emitted. Can be also specified + without an argument, with the same effect as a positive boolean. If enabled, + the system manager (PID 1) asks for confirmation when spawning processes + using <option>/dev/console</option>. If a path or a console name (such as + <literal>ttyS0</literal>) is provided, the virtual console pointed to by this + path or described by the give name will be used instead. Defaults to disabled. + </para></listitem> </varlistentry> <varlistentry> - <term><varname>systemd.show_status=</varname></term> + <term><varname>systemd.show_status</varname></term> - <listitem><para>Takes a boolean argument or the constant <constant>auto</constant>. If <option>yes</option>, - the systemd manager (PID 1) shows terse service status updates on the console during bootup. - <constant>auto</constant> behaves like <option>false</option> until a unit fails or there is a significant - delay in boot. Defaults to <option>yes</option>, unless <option>quiet</option> is passed as kernel command - line option, in which case it defaults to <constant>auto</constant>. If specified overrides the system manager - configuration file option <option>ShowStatus=</option>, see - <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>. However, - the process command line option <option>--show-status=</option> takes precedence over both this kernel command - line option and the configuration file option.</para></listitem> + <listitem><para>Takes a boolean argument or the constant + <constant>auto</constant>. Can be also specified without an argument, with + the same effect as a positive boolean. If enabled, the systemd manager (PID + 1) shows terse service status updates on the console during bootup. + <constant>auto</constant> behaves like <option>false</option> until a unit + fails or there is a significant delay in boot. Defaults to enabled, unless + <option>quiet</option> is passed as kernel command line option, in which case + it defaults to <constant>auto</constant>. If specified overrides the system + manager configuration file option <option>ShowStatus=</option>, see + <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>. + However, the process command line option <option>--show-status=</option> + takes precedence over both this kernel command line option and the + configuration file option.</para></listitem> </varlistentry> <varlistentry> <term><varname>systemd.log_target=</varname></term> <term><varname>systemd.log_level=</varname></term> - <term><varname>systemd.log_color=</varname></term> <term><varname>systemd.log_location=</varname></term> + <term><varname>systemd.log_color</varname></term> - <listitem><para>Controls log output, with the same effect as - the <varname>$SYSTEMD_LOG_TARGET</varname>, + <listitem><para>Controls log output, with the same effect as the + <varname>$SYSTEMD_LOG_TARGET</varname>, <varname>$SYSTEMD_LOG_LEVEL</varname>, - <varname>$SYSTEMD_LOG_COLOR</varname>, - <varname>$SYSTEMD_LOG_LOCATION</varname> environment variables - described above.</para></listitem> + <varname>$SYSTEMD_LOG_LOCATION</varname>, + <varname>$SYSTEMD_LOG_COLOR</varname> environment variables described above. + <varname>systemd.log_color</varname> can be specified without an argument, + with the same effect as a positive boolean.</para></listitem> </varlistentry> <varlistentry> @@ -1011,6 +1018,41 @@ </varlistentry> <varlistentry> + <term><varname>systemd.unified_cgroup_hierarchy</varname></term> + + <listitem><para>When specified without an argument or with a true argument, + enables the usage of + <ulink url="https://www.kernel.org/doc/Documentation/cgroup-v2.txt">unified cgroup hierarchy</ulink> + (a.k.a. cgroups-v2). When specified with a false argument, fall back to + hybrid or full legacy cgroup hierarchy.</para> + + <para>If this option is not specified, the default behaviour is determined + during compilation (the <option>--with-default-hierarchy=</option> + option). If the kernel does not support unified cgroup hierarchy, the legacy + hierarchy will be used even if this option is specified.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><varname>systemd.legacy_systemd_cgroup_controller</varname></term> + + <listitem><para>Takes effect if the full unified cgroup hierarchy is not used + (see previous option). When specified without an argument or with a true + argument, disables the use of "hybrid" cgroup hierarchy (i.e. a cgroups-v2 + tree used for systemd, and + <ulink url="https://www.kernel.org/doc/Documentation/cgroup-v1/">legacy + cgroup hierarchy</ulink>, a.k.a. cgroups-v1, for other controllers), and + forces a full "legacy" mode. When specified with a false argument, enables + the use of "hybrid" hierarchy.</para> + + <para>If this option is not specified, the default behaviour is determined + during compilation (the <option>--with-default-hierarchy=</option> + option). If the kernel does not support unified cgroup hierarchy, the legacy + hierarchy will be used even if this option is specified.</para> + </listitem> + </varlistentry> + + <varlistentry> <term><varname>quiet</varname></term> <listitem><para>Turn off status output at boot, much like @@ -1145,7 +1187,7 @@ <refsect1> <title>See Also</title> <para> - The <ulink url="http://www.freedesktop.org/wiki/Software/systemd/">systemd Homepage</ulink>, + The <ulink url="https://www.freedesktop.org/wiki/Software/systemd/">systemd Homepage</ulink>, <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules index e9eeb8518e..3347c8cd89 100644 --- a/rules/50-udev-default.rules +++ b/rules/50-udev-default.rules @@ -74,4 +74,6 @@ KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun" KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse" +SUBSYSTEM=="ptp", ATTR{clock_name}=="KVM virtual PTP", SYMLINK += "ptp_kvm" + LABEL="default_end" diff --git a/rules/60-drm.rules b/rules/60-drm.rules index 1ed3e445f2..f7f3435d50 100644 --- a/rules/60-drm.rules +++ b/rules/60-drm.rules @@ -1,3 +1,8 @@ # do not edit this file, it will be overwritten on update ACTION!="remove", SUBSYSTEM=="drm", SUBSYSTEMS=="pci|usb|platform", IMPORT{builtin}="path_id" + +# by-path +ENV{ID_PATH}=="?*", KERNEL=="card*", SYMLINK+="dri/by-path/$env{ID_PATH}-card" +ENV{ID_PATH}=="?*", KERNEL=="controlD*", SYMLINK+="dri/by-path/$env{ID_PATH}-control" +ENV{ID_PATH}=="?*", KERNEL=="renderD*", SYMLINK+="dri/by-path/$env{ID_PATH}-render" diff --git a/rules/60-evdev.rules b/rules/60-evdev.rules index ade7e7f646..f5d5ba6a5f 100644 --- a/rules/60-evdev.rules +++ b/rules/60-evdev.rules @@ -12,6 +12,10 @@ ENV{ID_INPUT_KEY}=="?*", DRIVERS=="atkbd", \ IMPORT{builtin}="hwdb 'evdev:atkbd:$attr{[dmi/id]modalias}'", \ RUN{builtin}+="keyboard", GOTO="evdev_end" +# device matching the input device name + properties + the machine's DMI data +KERNELS=="input*", IMPORT{builtin}="hwdb 'evdev:name:$attr{name}:phys:$attr{phys}:ev:$attr{capabilities/ev}:$attr{[dmi/id]modalias}'", \ + RUN{builtin}+="keyboard", GOTO="evdev_end" + # device matching the input device name and the machine's DMI data KERNELS=="input*", IMPORT{builtin}="hwdb 'evdev:name:$attr{name}:$attr{[dmi/id]modalias}'", \ RUN{builtin}+="keyboard", GOTO="evdev_end" diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules index 28e41ea968..9817e9c64b 100644 --- a/rules/60-persistent-storage.rules +++ b/rules/60-persistent-storage.rules @@ -20,6 +20,7 @@ KERNEL=="nvme*[0-9]n*[0-9]", ATTR{wwid}=="?*", SYMLINK+="disk/by-id/nvme-$attr{w KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{wwid}=="?*", SYMLINK+="disk/by-id/nvme-$attr{wwid}-part%n" KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{serial}=="?*", ENV{ID_SERIAL_SHORT}="$attr{serial}" +KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{wwid}=="?*", ENV{ID_WWN}="$attr{wwid}" KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{model}=="?*", ENV{ID_SERIAL_SHORT}=="?*", ENV{ID_SERIAL}="$attr{model}_$env{ID_SERIAL_SHORT}", SYMLINK+="disk/by-id/nvme-$env{ID_SERIAL}" KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{serial}=="?*", ENV{ID_SERIAL_SHORT}="$attr{serial}" @@ -66,6 +67,10 @@ ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id" ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}" ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n" +# legacy virtio-pci by-path links (deprecated) +KERNEL=="vd*[!0-9]", ENV{ID_PATH}=="pci-*", SYMLINK+="disk/by-path/virtio-$env{ID_PATH}" +KERNEL=="vd*[0-9]", ENV{ID_PATH}=="pci-*", SYMLINK+="disk/by-path/virtio-$env{ID_PATH}-part%n" + # probe filesystem metadata of optical drives which have a media inserted KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", \ IMPORT{builtin}="blkid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}" diff --git a/shell-completion/bash/coredumpctl b/shell-completion/bash/coredumpctl index 6091677506..87fe473e09 100644 --- a/shell-completion/bash/coredumpctl +++ b/shell-completion/bash/coredumpctl @@ -37,7 +37,8 @@ __journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} _coredumpctl() { local i verb comps local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1' + local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1 + -r --reverse -S --since -U --until' local -A VERBS=( [LIST]='list' diff --git a/shell-completion/bash/hostnamectl b/shell-completion/bash/hostnamectl index 6a252188ea..7cf8b6f631 100644 --- a/shell-completion/bash/hostnamectl +++ b/shell-completion/bash/hostnamectl @@ -52,7 +52,7 @@ _hostnamectl() { if [[ -z $verb ]]; then comps=${VERBS[*]} elif __contains_word "$verb" ${VERBS[CHASSIS]}; then - comps='desktop laptop server tablet handset watch embedded vm container' + comps='desktop laptop convertible server tablet handset watch embedded vm container' elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[ICONS]} ${VERBS[NAME]}; then comps='' fi diff --git a/shell-completion/zsh/_coredumpctl b/shell-completion/zsh/_coredumpctl index e4c04a697f..e469bca958 100644 --- a/shell-completion/zsh/_coredumpctl +++ b/shell-completion/zsh/_coredumpctl @@ -32,6 +32,9 @@ _arguments \ {-o+,--output=}'[Write output to FILE]:output file:_files' \ {-F+,--field=}'[Show field in list output]:field' \ '-1[Show information about most recent entry only]' \ + {-S,--since}'[Print entries since the specified date]' \ + {-U,--until}'[Print entries until the specified date]' \ + {-r,--reverse}'[Show the newest entries first]' \ '--no-pager[Do not pipe output into a pager]' \ '--no-legend[Do not print the column headers]' \ {-h,--help}'[Show this help]' \ diff --git a/shell-completion/zsh/_hostnamectl b/shell-completion/zsh/_hostnamectl index 7528e0649d..8c4a354af2 100644 --- a/shell-completion/zsh/_hostnamectl +++ b/shell-completion/zsh/_hostnamectl @@ -18,7 +18,7 @@ _hostnamectl_set-icon-name() { _hostnamectl_set-chassis() { if (( CURRENT <= 3 )); then - _chassis=( desktop laptop server tablet handset watch embedded vm container ) + _chassis=( desktop laptop convertible server tablet handset watch embedded vm container ) _describe chassis _chassis else _message "no more options" diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index 51d881c5fb..ac0470b20d 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -461,6 +461,7 @@ static int acquire_host_info(sd_bus *bus, struct host_info **hi) { "org.freedesktop.hostname1", "/org/freedesktop/hostname1", hostname_map, + &error, host); if (r < 0) log_debug_errno(r, "Failed to get host information from systemd-hostnamed: %s", bus_error_message(&error, r)); @@ -469,6 +470,7 @@ static int acquire_host_info(sd_bus *bus, struct host_info **hi) { "org.freedesktop.systemd1", "/org/freedesktop/systemd1", manager_map, + &error, host); if (r < 0) return log_error_errno(r, "Failed to get host information from systemd: %s", bus_error_message(&error, r)); @@ -1360,7 +1362,7 @@ static void help(void) { " blame Print list of running units ordered by time to init\n" " critical-chain Print a tree of the time critical chain of units\n" " plot Output SVG graphic showing service initialization\n" - " dot Output dependency graph in dot(1) format\n" + " dot Output dependency graph in man:dot(1) format\n" " set-log-level LEVEL Set logging threshold for manager\n" " set-log-target TARGET Set logging target for manager\n" " dump Output state serialization of service manager\n" diff --git a/src/basic/architecture.c b/src/basic/architecture.c index b74dc0db78..5a3dc08a4a 100644 --- a/src/basic/architecture.c +++ b/src/basic/architecture.c @@ -123,7 +123,8 @@ int uname_architecture(void) { { "crisv32", ARCHITECTURE_CRIS }, #elif defined(__nios2__) { "nios2", ARCHITECTURE_NIOS2 }, -#elif defined(__riscv__) +#elif defined(__riscv__) || defined(__riscv) + /* __riscv__ is obsolete, remove in 2018 */ { "riscv32", ARCHITECTURE_RISCV32 }, { "riscv64", ARCHITECTURE_RISCV64 }, # if __SIZEOF_POINTER__ == 4 diff --git a/src/basic/architecture.h b/src/basic/architecture.h index b329df2f6d..46883719d1 100644 --- a/src/basic/architecture.h +++ b/src/basic/architecture.h @@ -124,13 +124,21 @@ int uname_architecture(void); #elif defined(__sparc__) # define native_architecture() ARCHITECTURE_SPARC # define LIB_ARCH_TUPLE "sparc-linux-gnu" -#elif defined(__mips64__) +#elif defined(__mips64) && defined(__LP64__) # if __BYTE_ORDER == __BIG_ENDIAN # define native_architecture() ARCHITECTURE_MIPS64 -# error "Missing LIB_ARCH_TUPLE for MIPS64" +# define LIB_ARCH_TUPLE "mips64-linux-gnuabi64" # else # define native_architecture() ARCHITECTURE_MIPS64_LE -# error "Missing LIB_ARCH_TUPLE for MIPS64_LE" +# define LIB_ARCH_TUPLE "mips64el-linux-gnuabi64" +# endif +#elif defined(__mips64) +# if __BYTE_ORDER == __BIG_ENDIAN +# define native_architecture() ARCHITECTURE_MIPS64 +# define LIB_ARCH_TUPLE "mips64-linux-gnuabin32" +# else +# define native_architecture() ARCHITECTURE_MIPS64_LE +# define LIB_ARCH_TUPLE "mips64el-linux-gnuabin32" # endif #elif defined(__mips__) # if __BYTE_ORDER == __BIG_ENDIAN @@ -187,14 +195,15 @@ int uname_architecture(void); # define LIB_ARCH_TUPLE "m68k-linux-gnu" #elif defined(__tilegx__) # define native_architecture() ARCHITECTURE_TILEGX -# error "Missing LIB_ARCH_TUPLE for TILEGX" +# define LIB_ARCH_TUPLE "tilegx-linux-gnu" #elif defined(__cris__) # define native_architecture() ARCHITECTURE_CRIS # error "Missing LIB_ARCH_TUPLE for CRIS" #elif defined(__nios2__) # define native_architecture() ARCHITECTURE_NIOS2 # define LIB_ARCH_TUPLE "nios2-linux-gnu" -#elif defined(__riscv__) +#elif defined(__riscv__) || defined(__riscv) + /* __riscv__ is obsolete, remove in 2018 */ # if __SIZEOF_POINTER__ == 4 # define native_architecture() ARCHITECTURE_RISCV32 # define LIB_ARCH_TUPLE "riscv32-linux-gnu" diff --git a/src/basic/btrfs-util.c b/src/basic/btrfs-util.c index 5f9e21dcba..5505499312 100644 --- a/src/basic/btrfs-util.c +++ b/src/basic/btrfs-util.c @@ -1737,7 +1737,7 @@ int btrfs_subvol_snapshot_fd(int old_fd, const char *new_path, BtrfsSnapshotFlag } else if (r < 0) return r; - r = copy_directory_fd(old_fd, new_path, true); + r = copy_directory_fd(old_fd, new_path, COPY_MERGE|COPY_REFLINK); if (r < 0) goto fallback_fail; diff --git a/src/basic/build.h b/src/basic/build.h index 633c2aaccb..91312bd2a3 100644 --- a/src/basic/build.h +++ b/src/basic/build.h @@ -133,6 +133,8 @@ #define _IDN_FEATURE_ "-IDN" #endif +#define _CGROUP_HIEARCHY_ "default-hierarchy=" DEFAULT_HIERARCHY_NAME + #define SYSTEMD_FEATURES \ _PAM_FEATURE_ " " \ _AUDIT_FEATURE_ " " \ @@ -152,4 +154,5 @@ _BLKID_FEATURE_ " " \ _ELFUTILS_FEATURE_ " " \ _KMOD_FEATURE_ " " \ - _IDN_FEATURE_ + _IDN_FEATURE_ " " \ + _CGROUP_HIEARCHY_ diff --git a/src/basic/calendarspec.c b/src/basic/calendarspec.c index 3fa1c51ace..2323eb8555 100644 --- a/src/basic/calendarspec.c +++ b/src/basic/calendarspec.c @@ -116,8 +116,7 @@ static void normalize_chain(CalendarComponent **c) { /* Drop non-unique entries */ for (k = n-1; k > 0; k--) { - if (b[k-1]->start == next->start && - b[k-1]->repeat == next->repeat) { + if (component_compare(&b[k-1], &next) == 0) { free(b[k-1]); continue; } diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index 6948ed3931..bda5c555ad 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -208,6 +208,18 @@ int cg_rmdir(const char *controller, const char *path) { if (r < 0 && errno != ENOENT) return -errno; + r = cg_hybrid_unified(); + if (r < 0) + return r; + if (r == 0) + return 0; + + if (streq(controller, SYSTEMD_CGROUP_CONTROLLER)) { + r = cg_rmdir(SYSTEMD_CGROUP_CONTROLLER_LEGACY, path); + if (r < 0) + log_warning_errno(r, "Failed to remove compat systemd cgroup %s: %m", path); + } + return 0; } @@ -542,6 +554,13 @@ static const char *controller_to_dirname(const char *controller) { * just cuts off the name= prefixed used for named * hierarchies, if it is specified. */ + if (streq(controller, SYSTEMD_CGROUP_CONTROLLER)) { + if (cg_hybrid_unified() > 0) + controller = SYSTEMD_CGROUP_CONTROLLER_HYBRID; + else + controller = SYSTEMD_CGROUP_CONTROLLER_LEGACY; + } + e = startswith(controller, "name="); if (e) return e; @@ -594,7 +613,7 @@ static int join_path_unified(const char *path, const char *suffix, char **fs) { } int cg_get_path(const char *controller, const char *path, const char *suffix, char **fs) { - int unified, r; + int r; assert(fs); @@ -623,11 +642,10 @@ int cg_get_path(const char *controller, const char *path, const char *suffix, ch if (!cg_controller_is_valid(controller)) return -EINVAL; - unified = cg_all_unified(); - if (unified < 0) - return unified; - - if (unified > 0) + r = cg_all_unified(); + if (r < 0) + return r; + if (r > 0) r = join_path_unified(path, suffix, fs); else r = join_path_legacy(controller, path, suffix, fs); @@ -639,7 +657,7 @@ int cg_get_path(const char *controller, const char *path, const char *suffix, ch } static int controller_is_accessible(const char *controller) { - int unified; + int r; assert(controller); @@ -651,10 +669,10 @@ static int controller_is_accessible(const char *controller) { if (!cg_controller_is_valid(controller)) return -EINVAL; - unified = cg_all_unified(); - if (unified < 0) - return unified; - if (unified > 0) { + r = cg_all_unified(); + if (r < 0) + return r; + if (r > 0) { /* We don't support named hierarchies if we are using * the unified hierarchy. */ @@ -708,7 +726,7 @@ static int trim_cb(const char *path, const struct stat *sb, int typeflag, struct int cg_trim(const char *controller, const char *path, bool delete_root) { _cleanup_free_ char *fs = NULL; - int r = 0; + int r = 0, q; assert(path); @@ -731,6 +749,15 @@ int cg_trim(const char *controller, const char *path, bool delete_root) { return -errno; } + q = cg_hybrid_unified(); + if (q < 0) + return q; + if (q > 0 && streq(controller, SYSTEMD_CGROUP_CONTROLLER)) { + q = cg_trim(SYSTEMD_CGROUP_CONTROLLER_LEGACY, path, delete_root); + if (q < 0) + log_warning_errno(q, "Failed to trim compat systemd cgroup %s: %m", path); + } + return r; } @@ -754,6 +781,16 @@ int cg_create(const char *controller, const char *path) { return -errno; } + r = cg_hybrid_unified(); + if (r < 0) + return r; + + if (r > 0 && streq(controller, SYSTEMD_CGROUP_CONTROLLER)) { + r = cg_create(SYSTEMD_CGROUP_CONTROLLER_LEGACY, path); + if (r < 0) + log_warning_errno(r, "Failed to create compat systemd cgroup %s: %m", path); + } + return 1; } @@ -791,7 +828,21 @@ int cg_attach(const char *controller, const char *path, pid_t pid) { xsprintf(c, PID_FMT "\n", pid); - return write_string_file(fs, c, 0); + r = write_string_file(fs, c, 0); + if (r < 0) + return r; + + r = cg_hybrid_unified(); + if (r < 0) + return r; + + if (r > 0 && streq(controller, SYSTEMD_CGROUP_CONTROLLER)) { + r = cg_attach(SYSTEMD_CGROUP_CONTROLLER_LEGACY, path, pid); + if (r < 0) + log_warning_errno(r, "Failed to attach %d to compat systemd cgroup %s: %m", pid, path); + } + + return 0; } int cg_attach_fallback(const char *controller, const char *path, pid_t pid) { @@ -840,7 +891,20 @@ int cg_set_group_access( if (r < 0) return r; - return chmod_and_chown(fs, mode, uid, gid); + r = chmod_and_chown(fs, mode, uid, gid); + if (r < 0) + return r; + + r = cg_hybrid_unified(); + if (r < 0) + return r; + if (r > 0 && streq(controller, SYSTEMD_CGROUP_CONTROLLER)) { + r = cg_set_group_access(SYSTEMD_CGROUP_CONTROLLER_LEGACY, path, mode, uid, gid); + if (r < 0) + log_warning_errno(r, "Failed to set group access on compat systemd cgroup %s: %m", path); + } + + return 0; } int cg_set_task_access( @@ -851,7 +915,7 @@ int cg_set_task_access( gid_t gid) { _cleanup_free_ char *fs = NULL, *procs = NULL; - int r, unified; + int r; assert(path); @@ -869,16 +933,24 @@ int cg_set_task_access( if (r < 0) return r; - unified = cg_unified(controller); - if (unified < 0) - return unified; - if (unified) - return 0; + r = cg_unified_controller(controller); + if (r < 0) + return r; + if (r == 0) { + /* Compatibility, Always keep values for "tasks" in sync with + * "cgroup.procs" */ + if (cg_get_path(controller, path, "tasks", &procs) >= 0) + (void) chmod_and_chown(procs, mode, uid, gid); + } - /* Compatibility, Always keep values for "tasks" in sync with - * "cgroup.procs" */ - if (cg_get_path(controller, path, "tasks", &procs) >= 0) - (void) chmod_and_chown(procs, mode, uid, gid); + r = cg_hybrid_unified(); + if (r < 0) + return r; + if (r > 0 && streq(controller, SYSTEMD_CGROUP_CONTROLLER)) { + r = cg_set_task_access(SYSTEMD_CGROUP_CONTROLLER_LEGACY, path, mode, uid, gid); + if (r < 0) + log_warning_errno(r, "Failed to set task access on compat systemd cgroup %s: %m", path); + } return 0; } @@ -923,7 +995,7 @@ int cg_get_xattr(const char *controller, const char *path, const char *name, voi int cg_pid_get_path(const char *controller, pid_t pid, char **path) { _cleanup_fclose_ FILE *f = NULL; char line[LINE_MAX]; - const char *fs; + const char *fs, *controller_str; size_t cs = 0; int unified; @@ -936,11 +1008,17 @@ int cg_pid_get_path(const char *controller, pid_t pid, char **path) { } else controller = SYSTEMD_CGROUP_CONTROLLER; - unified = cg_unified(controller); + unified = cg_unified_controller(controller); if (unified < 0) return unified; - if (unified == 0) - cs = strlen(controller); + if (unified == 0) { + if (streq(controller, SYSTEMD_CGROUP_CONTROLLER)) + controller_str = SYSTEMD_CGROUP_CONTROLLER_LEGACY; + else + controller_str = controller; + + cs = strlen(controller_str); + } fs = procfs_file_alloca(pid, "cgroup"); f = fopen(fs, "re"); @@ -977,7 +1055,7 @@ int cg_pid_get_path(const char *controller, pid_t pid, char **path) { *e = 0; FOREACH_WORD_SEPARATOR(word, k, l, ",", state) { - if (k == cs && memcmp(word, controller, cs) == 0) { + if (k == cs && memcmp(word, controller_str, cs) == 0) { found = true; break; } @@ -1001,14 +1079,14 @@ int cg_pid_get_path(const char *controller, pid_t pid, char **path) { int cg_install_release_agent(const char *controller, const char *agent) { _cleanup_free_ char *fs = NULL, *contents = NULL; const char *sc; - int r, unified; + int r; assert(agent); - unified = cg_unified(controller); - if (unified < 0) - return unified; - if (unified) /* doesn't apply to unified hierarchy */ + r = cg_unified_controller(controller); + if (r < 0) + return r; + if (r > 0) /* doesn't apply to unified hierarchy */ return -EOPNOTSUPP; r = cg_get_path(controller, NULL, "release_agent", &fs); @@ -1054,12 +1132,12 @@ int cg_install_release_agent(const char *controller, const char *agent) { int cg_uninstall_release_agent(const char *controller) { _cleanup_free_ char *fs = NULL; - int r, unified; + int r; - unified = cg_unified(controller); - if (unified < 0) - return unified; - if (unified) /* Doesn't apply to unified hierarchy */ + r = cg_unified_controller(controller); + if (r < 0) + return r; + if (r > 0) /* Doesn't apply to unified hierarchy */ return -EOPNOTSUPP; r = cg_get_path(controller, NULL, "notify_on_release", &fs); @@ -1104,7 +1182,7 @@ int cg_is_empty(const char *controller, const char *path) { } int cg_is_empty_recursive(const char *controller, const char *path) { - int unified, r; + int r; assert(path); @@ -1112,11 +1190,10 @@ int cg_is_empty_recursive(const char *controller, const char *path) { if (controller && (isempty(path) || path_equal(path, "/"))) return false; - unified = cg_unified(controller); - if (unified < 0) - return unified; - - if (unified > 0) { + r = cg_unified_controller(controller); + if (r < 0) + return r; + if (r > 0) { _cleanup_free_ char *t = NULL; /* On the unified hierarchy we can check empty state @@ -1833,6 +1910,9 @@ bool cg_controller_is_valid(const char *p) { if (!p) return false; + if (streq(p, SYSTEMD_CGROUP_CONTROLLER)) + return true; + s = startswith(p, "name="); if (s) p = s; @@ -1986,7 +2066,7 @@ int cg_get_keyed_attribute(const char *controller, const char *path, const char int cg_create_everywhere(CGroupMask supported, CGroupMask mask, const char *path) { CGroupController c; - int r, unified; + int r; /* This one will create a cgroup in our private tree, but also * duplicate it in the trees specified in mask, and remove it @@ -1998,10 +2078,10 @@ int cg_create_everywhere(CGroupMask supported, CGroupMask mask, const char *path return r; /* If we are in the unified hierarchy, we are done now */ - unified = cg_all_unified(); - if (unified < 0) - return unified; - if (unified > 0) + r = cg_all_unified(); + if (r < 0) + return r; + if (r > 0) return 0; /* Otherwise, do the same in the other hierarchies */ @@ -2022,16 +2102,16 @@ int cg_create_everywhere(CGroupMask supported, CGroupMask mask, const char *path int cg_attach_everywhere(CGroupMask supported, const char *path, pid_t pid, cg_migrate_callback_t path_callback, void *userdata) { CGroupController c; - int r, unified; + int r; r = cg_attach(SYSTEMD_CGROUP_CONTROLLER, path, pid); if (r < 0) return r; - unified = cg_all_unified(); - if (unified < 0) - return unified; - if (unified > 0) + r = cg_all_unified(); + if (r < 0) + return r; + if (r > 0) return 0; for (c = 0; c < _CGROUP_CONTROLLER_MAX; c++) { @@ -2072,7 +2152,7 @@ int cg_attach_many_everywhere(CGroupMask supported, const char *path, Set* pids, int cg_migrate_everywhere(CGroupMask supported, const char *from, const char *to, cg_migrate_callback_t to_callback, void *userdata) { CGroupController c; - int r = 0, unified; + int r = 0, q; if (!path_equal(from, to)) { r = cg_migrate_recursive(SYSTEMD_CGROUP_CONTROLLER, from, SYSTEMD_CGROUP_CONTROLLER, to, CGROUP_REMOVE); @@ -2080,10 +2160,10 @@ int cg_migrate_everywhere(CGroupMask supported, const char *from, const char *to return r; } - unified = cg_all_unified(); - if (unified < 0) - return unified; - if (unified > 0) + q = cg_all_unified(); + if (q < 0) + return q; + if (q > 0) return r; for (c = 0; c < _CGROUP_CONTROLLER_MAX; c++) { @@ -2107,16 +2187,16 @@ int cg_migrate_everywhere(CGroupMask supported, const char *from, const char *to int cg_trim_everywhere(CGroupMask supported, const char *path, bool delete_root) { CGroupController c; - int r, unified; + int r, q; r = cg_trim(SYSTEMD_CGROUP_CONTROLLER, path, delete_root); if (r < 0) return r; - unified = cg_all_unified(); - if (unified < 0) - return unified; - if (unified > 0) + q = cg_all_unified(); + if (q < 0) + return q; + if (q > 0) return r; for (c = 0; c < _CGROUP_CONTROLLER_MAX; c++) { @@ -2133,16 +2213,16 @@ int cg_trim_everywhere(CGroupMask supported, const char *path, bool delete_root) int cg_mask_supported(CGroupMask *ret) { CGroupMask mask = 0; - int r, unified; + int r; /* Determines the mask of supported cgroup controllers. Only * includes controllers we can make sense of and that are * actually accessible. */ - unified = cg_all_unified(); - if (unified < 0) - return unified; - if (unified > 0) { + r = cg_all_unified(); + if (r < 0) + return r; + if (r > 0) { _cleanup_free_ char *root = NULL, *controllers = NULL, *path = NULL; const char *c; @@ -2262,7 +2342,18 @@ int cg_kernel_controllers(Set *controllers) { static thread_local CGroupUnified unified_cache = CGROUP_UNIFIED_UNKNOWN; -static int cg_update_unified(void) { +/* The hybrid mode was initially implemented in v232 and simply mounted cgroup v2 on /sys/fs/cgroup/systemd. This + * unfortunately broke other tools (such as docker) which expected the v1 "name=systemd" hierarchy on + * /sys/fs/cgroup/systemd. From v233 and on, the hybrid mode mountnbs v2 on /sys/fs/cgroup/unified and maintains + * "name=systemd" hierarchy on /sys/fs/cgroup/systemd for compatibility with other tools. + * + * To keep live upgrade working, we detect and support v232 layout. When v232 layout is detected, to keep cgroup v2 + * process management but disable the compat dual layout, we return %true on + * cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER) and %false on cg_hybrid_unified(). + */ +static thread_local bool unified_systemd_v232; + +static int cg_unified_update(void) { struct statfs fs; @@ -2280,54 +2371,83 @@ static int cg_update_unified(void) { if (F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC)) unified_cache = CGROUP_UNIFIED_ALL; else if (F_TYPE_EQUAL(fs.f_type, TMPFS_MAGIC)) { - if (statfs("/sys/fs/cgroup/systemd/", &fs) < 0) - return -errno; - - unified_cache = F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC) ? - CGROUP_UNIFIED_SYSTEMD : CGROUP_UNIFIED_NONE; + if (statfs("/sys/fs/cgroup/unified/", &fs) == 0 && + F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC)) { + unified_cache = CGROUP_UNIFIED_SYSTEMD; + unified_systemd_v232 = false; + } else if (statfs("/sys/fs/cgroup/systemd/", &fs) == 0 && + F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC)) { + unified_cache = CGROUP_UNIFIED_SYSTEMD; + unified_systemd_v232 = true; + } else { + if (statfs("/sys/fs/cgroup/systemd/", &fs) < 0) + return -errno; + if (!F_TYPE_EQUAL(fs.f_type, CGROUP_SUPER_MAGIC)) + return -ENOMEDIUM; + unified_cache = CGROUP_UNIFIED_NONE; + } } else return -ENOMEDIUM; return 0; } -int cg_unified(const char *controller) { - +int cg_unified_controller(const char *controller) { int r; - r = cg_update_unified(); + r = cg_unified_update(); if (r < 0) return r; - if (streq_ptr(controller, SYSTEMD_CGROUP_CONTROLLER)) - return unified_cache >= CGROUP_UNIFIED_SYSTEMD; - else - return unified_cache >= CGROUP_UNIFIED_ALL; + if (unified_cache == CGROUP_UNIFIED_NONE) + return false; + + if (unified_cache >= CGROUP_UNIFIED_ALL) + return true; + + return streq_ptr(controller, SYSTEMD_CGROUP_CONTROLLER); } int cg_all_unified(void) { + int r; + + r = cg_unified_update(); + if (r < 0) + return r; - return cg_unified(NULL); + return unified_cache >= CGROUP_UNIFIED_ALL; } -void cg_unified_flush(void) { +int cg_hybrid_unified(void) { + int r; + + r = cg_unified_update(); + if (r < 0) + return r; + + return unified_cache == CGROUP_UNIFIED_SYSTEMD && !unified_systemd_v232; +} + +int cg_unified_flush(void) { unified_cache = CGROUP_UNIFIED_UNKNOWN; + + return cg_unified_update(); } int cg_enable_everywhere(CGroupMask supported, CGroupMask mask, const char *p) { _cleanup_free_ char *fs = NULL; CGroupController c; - int r, unified; + int r; assert(p); if (supported == 0) return 0; - unified = cg_all_unified(); - if (unified < 0) - return unified; - if (!unified) /* on the legacy hiearchy there's no joining of controllers defined */ + r = cg_all_unified(); + if (r < 0) + return r; + if (r == 0) /* on the legacy hiearchy there's no joining of controllers defined */ return 0; r = cg_get_path(SYSTEMD_CGROUP_CONTROLLER, p, "cgroup.subtree_control", &fs); @@ -2359,63 +2479,69 @@ int cg_enable_everywhere(CGroupMask supported, CGroupMask mask, const char *p) { bool cg_is_unified_wanted(void) { static thread_local int wanted = -1; - int r, unified; + int r; bool b; + const bool is_default = DEFAULT_HIERARCHY == CGROUP_UNIFIED_ALL; - /* If the hierarchy is already mounted, then follow whatever - * was chosen for it. */ - unified = cg_all_unified(); - if (unified >= 0) - return unified; - - /* Otherwise, let's see what the kernel command line has to - * say. Since checking that is expensive, let's cache the - * result. */ + /* If we have a cached value, return that. */ if (wanted >= 0) return wanted; + /* If the hierarchy is already mounted, then follow whatever + * was chosen for it. */ + if (cg_unified_flush() >= 0) + return (wanted = unified_cache >= CGROUP_UNIFIED_ALL); + + /* Otherwise, let's see what the kernel command line has to say. + * Since checking is expensive, cache a non-error result. */ r = proc_cmdline_get_bool("systemd.unified_cgroup_hierarchy", &b); - if (r < 0) - return false; - return (wanted = r > 0 ? b : false); + return (wanted = r > 0 ? b : is_default); } bool cg_is_legacy_wanted(void) { - return !cg_is_unified_wanted(); + static thread_local int wanted = -1; + + /* If we have a cached value, return that. */ + if (wanted >= 0) + return wanted; + + /* Check if we have cgroups2 already mounted. */ + if (cg_unified_flush() >= 0 && + unified_cache == CGROUP_UNIFIED_ALL) + return (wanted = false); + + /* Otherwise, assume that at least partial legacy is wanted, + * since cgroups2 should already be mounted at this point. */ + return (wanted = true); } -bool cg_is_unified_systemd_controller_wanted(void) { +bool cg_is_hybrid_wanted(void) { static thread_local int wanted = -1; - int r, unified; + int r; bool b; + const bool is_default = DEFAULT_HIERARCHY >= CGROUP_UNIFIED_SYSTEMD; + /* We default to true if the default is "hybrid", obviously, + * but also when the default is "unified", because if we get + * called, it means that unified hierarchy was not mounted. */ - /* If the unified hierarchy is requested in full, no need to - * bother with this. */ - if (cg_is_unified_wanted()) - return 0; + /* If we have a cached value, return that. */ + if (wanted >= 0) + return wanted; /* If the hierarchy is already mounted, then follow whatever * was chosen for it. */ - unified = cg_unified(SYSTEMD_CGROUP_CONTROLLER); - if (unified >= 0) - return unified; - - /* Otherwise, let's see what the kernel command line has to - * say. Since checking that is expensive, let's cache the - * result. */ - if (wanted >= 0) - return wanted; + if (cg_unified_flush() >= 0 && + unified_cache == CGROUP_UNIFIED_ALL) + return (wanted = false); + /* Otherwise, let's see what the kernel command line has to say. + * Since checking is expensive, cache a non-error result. */ r = proc_cmdline_get_bool("systemd.legacy_systemd_cgroup_controller", &b); - if (r < 0) - return false; - - return (wanted = r > 0 ? b : false); -} -bool cg_is_legacy_systemd_controller_wanted(void) { - return cg_is_legacy_wanted() && !cg_is_unified_systemd_controller_wanted(); + /* The meaning of the kernel option is reversed wrt. to the return value + * of this function, hence the negation. */ + return (wanted = r > 0 ? !b : is_default); } int cg_weight_parse(const char *s, uint64_t *ret) { diff --git a/src/basic/cgroup-util.h b/src/basic/cgroup-util.h index 0aa27c4cd7..a522095d95 100644 --- a/src/basic/cgroup-util.h +++ b/src/basic/cgroup-util.h @@ -241,13 +241,13 @@ int cg_kernel_controllers(Set *controllers); bool cg_ns_supported(void); int cg_all_unified(void); -int cg_unified(const char *controller); -void cg_unified_flush(void); +int cg_hybrid_unified(void); +int cg_unified_controller(const char *controller); +int cg_unified_flush(void); bool cg_is_unified_wanted(void); bool cg_is_legacy_wanted(void); -bool cg_is_unified_systemd_controller_wanted(void); -bool cg_is_legacy_systemd_controller_wanted(void); +bool cg_is_hybrid_wanted(void); const char* cgroup_controller_to_string(CGroupController c) _const_; CGroupController cgroup_controller_from_string(const char *s) _pure_; diff --git a/src/basic/conf-files.c b/src/basic/conf-files.c index b5780194df..b8f0f5d03d 100644 --- a/src/basic/conf-files.c +++ b/src/basic/conf-files.c @@ -137,7 +137,6 @@ int conf_files_list(char ***strv, const char *suffix, const char *root, const ch va_list ap; assert(strv); - assert(suffix); va_start(ap, dir); dirs = strv_new_ap(dir, ap); @@ -153,7 +152,6 @@ int conf_files_list_nulstr(char ***strv, const char *suffix, const char *root, c _cleanup_strv_free_ char **dirs = NULL; assert(strv); - assert(suffix); dirs = strv_split_nulstr(d); if (!dirs) diff --git a/src/basic/copy.c b/src/basic/copy.c index e9a7efd232..e120b9eb4e 100644 --- a/src/basic/copy.c +++ b/src/basic/copy.c @@ -45,6 +45,7 @@ #include "strv.h" #include "time-util.h" #include "umask-util.h" +#include "user-util.h" #include "xattr-util.h" #define COPY_BUFFER_SIZE (16*1024u) @@ -68,7 +69,7 @@ static ssize_t try_copy_file_range(int fd_in, loff_t *off_in, return -errno; } -int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) { +int copy_bytes(int fdf, int fdt, uint64_t max_bytes, CopyFlags copy_flags) { bool try_cfr = true, try_sendfile = true, try_splice = true; int r; size_t m = SSIZE_MAX; /* that is the maximum that sendfile and c_f_r accept */ @@ -77,7 +78,7 @@ int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) { assert(fdt >= 0); /* Try btrfs reflinks first. */ - if (try_reflink && + if ((copy_flags & COPY_REFLINK) && max_bytes == (uint64_t) -1 && lseek(fdf, 0, SEEK_CUR) == 0 && lseek(fdt, 0, SEEK_CUR) == 0) { @@ -176,7 +177,16 @@ int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) { return 0; /* return 0 if we hit EOF earlier than the size limit */ } -static int fd_copy_symlink(int df, const char *from, const struct stat *st, int dt, const char *to) { +static int fd_copy_symlink( + int df, + const char *from, + const struct stat *st, + int dt, + const char *to, + uid_t override_uid, + gid_t override_gid, + CopyFlags copy_flags) { + _cleanup_free_ char *target = NULL; int r; @@ -191,13 +201,25 @@ static int fd_copy_symlink(int df, const char *from, const struct stat *st, int if (symlinkat(target, dt, to) < 0) return -errno; - if (fchownat(dt, to, st->st_uid, st->st_gid, AT_SYMLINK_NOFOLLOW) < 0) + if (fchownat(dt, to, + uid_is_valid(override_uid) ? override_uid : st->st_uid, + gid_is_valid(override_gid) ? override_gid : st->st_gid, + AT_SYMLINK_NOFOLLOW) < 0) return -errno; return 0; } -static int fd_copy_regular(int df, const char *from, const struct stat *st, int dt, const char *to) { +static int fd_copy_regular( + int df, + const char *from, + const struct stat *st, + int dt, + const char *to, + uid_t override_uid, + gid_t override_gid, + CopyFlags copy_flags) { + _cleanup_close_ int fdf = -1, fdt = -1; struct timespec ts[2]; int r, q; @@ -214,13 +236,15 @@ static int fd_copy_regular(int df, const char *from, const struct stat *st, int if (fdt < 0) return -errno; - r = copy_bytes(fdf, fdt, (uint64_t) -1, true); + r = copy_bytes(fdf, fdt, (uint64_t) -1, copy_flags); if (r < 0) { unlinkat(dt, to, 0); return r; } - if (fchown(fdt, st->st_uid, st->st_gid) < 0) + if (fchown(fdt, + uid_is_valid(override_uid) ? override_uid : st->st_uid, + gid_is_valid(override_gid) ? override_gid : st->st_gid) < 0) r = -errno; if (fchmod(fdt, st->st_mode & 07777) < 0) @@ -229,7 +253,6 @@ static int fd_copy_regular(int df, const char *from, const struct stat *st, int ts[0] = st->st_atim; ts[1] = st->st_mtim; (void) futimens(fdt, ts); - (void) copy_xattr(fdf, fdt); q = close(fdt); @@ -243,7 +266,15 @@ static int fd_copy_regular(int df, const char *from, const struct stat *st, int return r; } -static int fd_copy_fifo(int df, const char *from, const struct stat *st, int dt, const char *to) { +static int fd_copy_fifo( + int df, + const char *from, + const struct stat *st, + int dt, + const char *to, + uid_t override_uid, + gid_t override_gid, + CopyFlags copy_flags) { int r; assert(from); @@ -254,7 +285,10 @@ static int fd_copy_fifo(int df, const char *from, const struct stat *st, int dt, if (r < 0) return -errno; - if (fchownat(dt, to, st->st_uid, st->st_gid, AT_SYMLINK_NOFOLLOW) < 0) + if (fchownat(dt, to, + uid_is_valid(override_uid) ? override_uid : st->st_uid, + gid_is_valid(override_gid) ? override_gid : st->st_gid, + AT_SYMLINK_NOFOLLOW) < 0) r = -errno; if (fchmodat(dt, to, st->st_mode & 07777, 0) < 0) @@ -263,7 +297,15 @@ static int fd_copy_fifo(int df, const char *from, const struct stat *st, int dt, return r; } -static int fd_copy_node(int df, const char *from, const struct stat *st, int dt, const char *to) { +static int fd_copy_node( + int df, + const char *from, + const struct stat *st, + int dt, + const char *to, + uid_t override_uid, + gid_t override_gid, + CopyFlags copy_flags) { int r; assert(from); @@ -274,7 +316,10 @@ static int fd_copy_node(int df, const char *from, const struct stat *st, int dt, if (r < 0) return -errno; - if (fchownat(dt, to, st->st_uid, st->st_gid, AT_SYMLINK_NOFOLLOW) < 0) + if (fchownat(dt, to, + uid_is_valid(override_uid) ? override_uid : st->st_uid, + gid_is_valid(override_gid) ? override_gid : st->st_gid, + AT_SYMLINK_NOFOLLOW) < 0) r = -errno; if (fchmodat(dt, to, st->st_mode & 07777, 0) < 0) @@ -290,7 +335,9 @@ static int fd_copy_directory( int dt, const char *to, dev_t original_device, - bool merge) { + uid_t override_uid, + gid_t override_gid, + CopyFlags copy_flags) { _cleanup_close_ int fdf = -1, fdt = -1; _cleanup_closedir_ DIR *d = NULL; @@ -316,7 +363,7 @@ static int fd_copy_directory( r = mkdirat(dt, to, st->st_mode & 07777); if (r >= 0) created = true; - else if (errno == EEXIST && merge) + else if (errno == EEXIST && (copy_flags & COPY_MERGE)) created = false; else return -errno; @@ -343,19 +390,19 @@ static int fd_copy_directory( continue; if (S_ISREG(buf.st_mode)) - q = fd_copy_regular(dirfd(d), de->d_name, &buf, fdt, de->d_name); + q = fd_copy_regular(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags); else if (S_ISDIR(buf.st_mode)) - q = fd_copy_directory(dirfd(d), de->d_name, &buf, fdt, de->d_name, original_device, merge); + q = fd_copy_directory(dirfd(d), de->d_name, &buf, fdt, de->d_name, original_device, override_uid, override_gid, copy_flags); else if (S_ISLNK(buf.st_mode)) - q = fd_copy_symlink(dirfd(d), de->d_name, &buf, fdt, de->d_name); + q = fd_copy_symlink(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags); else if (S_ISFIFO(buf.st_mode)) - q = fd_copy_fifo(dirfd(d), de->d_name, &buf, fdt, de->d_name); + q = fd_copy_fifo(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags); else if (S_ISBLK(buf.st_mode) || S_ISCHR(buf.st_mode) || S_ISSOCK(buf.st_mode)) - q = fd_copy_node(dirfd(d), de->d_name, &buf, fdt, de->d_name); + q = fd_copy_node(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags); else q = -EOPNOTSUPP; - if (q == -EEXIST && merge) + if (q == -EEXIST && (copy_flags & COPY_MERGE)) q = 0; if (q < 0) @@ -368,7 +415,9 @@ static int fd_copy_directory( st->st_mtim }; - if (fchown(fdt, st->st_uid, st->st_gid) < 0) + if (fchown(fdt, + uid_is_valid(override_uid) ? override_uid : st->st_uid, + gid_is_valid(override_gid) ? override_gid : st->st_gid) < 0) r = -errno; if (fchmod(fdt, st->st_mode & 07777) < 0) @@ -381,7 +430,7 @@ static int fd_copy_directory( return r; } -int copy_tree_at(int fdf, const char *from, int fdt, const char *to, bool merge) { +int copy_tree_at(int fdf, const char *from, int fdt, const char *to, uid_t override_uid, gid_t override_gid, CopyFlags copy_flags) { struct stat st; assert(from); @@ -391,24 +440,24 @@ int copy_tree_at(int fdf, const char *from, int fdt, const char *to, bool merge) return -errno; if (S_ISREG(st.st_mode)) - return fd_copy_regular(fdf, from, &st, fdt, to); + return fd_copy_regular(fdf, from, &st, fdt, to, override_uid, override_gid, copy_flags); else if (S_ISDIR(st.st_mode)) - return fd_copy_directory(fdf, from, &st, fdt, to, st.st_dev, merge); + return fd_copy_directory(fdf, from, &st, fdt, to, st.st_dev, override_uid, override_gid, copy_flags); else if (S_ISLNK(st.st_mode)) - return fd_copy_symlink(fdf, from, &st, fdt, to); + return fd_copy_symlink(fdf, from, &st, fdt, to, override_uid, override_gid, copy_flags); else if (S_ISFIFO(st.st_mode)) - return fd_copy_fifo(fdf, from, &st, fdt, to); + return fd_copy_fifo(fdf, from, &st, fdt, to, override_uid, override_gid, copy_flags); else if (S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode) || S_ISSOCK(st.st_mode)) - return fd_copy_node(fdf, from, &st, fdt, to); + return fd_copy_node(fdf, from, &st, fdt, to, override_uid, override_gid, copy_flags); else return -EOPNOTSUPP; } -int copy_tree(const char *from, const char *to, bool merge) { - return copy_tree_at(AT_FDCWD, from, AT_FDCWD, to, merge); +int copy_tree(const char *from, const char *to, uid_t override_uid, gid_t override_gid, CopyFlags copy_flags) { + return copy_tree_at(AT_FDCWD, from, AT_FDCWD, to, override_uid, override_gid, copy_flags); } -int copy_directory_fd(int dirfd, const char *to, bool merge) { +int copy_directory_fd(int dirfd, const char *to, CopyFlags copy_flags) { struct stat st; assert(dirfd >= 0); @@ -420,10 +469,10 @@ int copy_directory_fd(int dirfd, const char *to, bool merge) { if (!S_ISDIR(st.st_mode)) return -ENOTDIR; - return fd_copy_directory(dirfd, NULL, &st, AT_FDCWD, to, st.st_dev, merge); + return fd_copy_directory(dirfd, NULL, &st, AT_FDCWD, to, st.st_dev, UID_INVALID, GID_INVALID, copy_flags); } -int copy_directory(const char *from, const char *to, bool merge) { +int copy_directory(const char *from, const char *to, CopyFlags copy_flags) { struct stat st; assert(from); @@ -435,10 +484,10 @@ int copy_directory(const char *from, const char *to, bool merge) { if (!S_ISDIR(st.st_mode)) return -ENOTDIR; - return fd_copy_directory(AT_FDCWD, from, &st, AT_FDCWD, to, st.st_dev, merge); + return fd_copy_directory(AT_FDCWD, from, &st, AT_FDCWD, to, st.st_dev, UID_INVALID, GID_INVALID, copy_flags); } -int copy_file_fd(const char *from, int fdt, bool try_reflink) { +int copy_file_fd(const char *from, int fdt, CopyFlags copy_flags) { _cleanup_close_ int fdf = -1; int r; @@ -449,7 +498,7 @@ int copy_file_fd(const char *from, int fdt, bool try_reflink) { if (fdf < 0) return -errno; - r = copy_bytes(fdf, fdt, (uint64_t) -1, try_reflink); + r = copy_bytes(fdf, fdt, (uint64_t) -1, copy_flags); (void) copy_times(fdf, fdt); (void) copy_xattr(fdf, fdt); @@ -457,7 +506,7 @@ int copy_file_fd(const char *from, int fdt, bool try_reflink) { return r; } -int copy_file(const char *from, const char *to, int flags, mode_t mode, unsigned chattr_flags) { +int copy_file(const char *from, const char *to, int flags, mode_t mode, unsigned chattr_flags, CopyFlags copy_flags) { int fdt = -1, r; assert(from); @@ -472,7 +521,7 @@ int copy_file(const char *from, const char *to, int flags, mode_t mode, unsigned if (chattr_flags != 0) (void) chattr_fd(fdt, chattr_flags, (unsigned) -1); - r = copy_file_fd(from, fdt, true); + r = copy_file_fd(from, fdt, copy_flags); if (r < 0) { close(fdt); unlink(to); @@ -487,7 +536,7 @@ int copy_file(const char *from, const char *to, int flags, mode_t mode, unsigned return 0; } -int copy_file_atomic(const char *from, const char *to, mode_t mode, bool replace, unsigned chattr_flags) { +int copy_file_atomic(const char *from, const char *to, mode_t mode, unsigned chattr_flags, CopyFlags copy_flags) { _cleanup_free_ char *t = NULL; int r; @@ -498,18 +547,18 @@ int copy_file_atomic(const char *from, const char *to, mode_t mode, bool replace if (r < 0) return r; - r = copy_file(from, t, O_NOFOLLOW|O_EXCL, mode, chattr_flags); + r = copy_file(from, t, O_NOFOLLOW|O_EXCL, mode, chattr_flags, copy_flags); if (r < 0) return r; - if (replace) { + if (copy_flags & COPY_REPLACE) { r = renameat(AT_FDCWD, t, AT_FDCWD, to); if (r < 0) r = -errno; } else r = rename_noreplace(AT_FDCWD, t, AT_FDCWD, to); if (r < 0) { - (void) unlink_noerrno(t); + (void) unlink(t); return r; } diff --git a/src/basic/copy.h b/src/basic/copy.h index b5d08ebafe..4f3e11423e 100644 --- a/src/basic/copy.h +++ b/src/basic/copy.h @@ -24,13 +24,19 @@ #include <stdint.h> #include <sys/types.h> -int copy_file_fd(const char *from, int to, bool try_reflink); -int copy_file(const char *from, const char *to, int flags, mode_t mode, unsigned chattr_flags); -int copy_file_atomic(const char *from, const char *to, mode_t mode, bool replace, unsigned chattr_flags); -int copy_tree(const char *from, const char *to, bool merge); -int copy_tree_at(int fdf, const char *from, int fdt, const char *to, bool merge); -int copy_directory_fd(int dirfd, const char *to, bool merge); -int copy_directory(const char *from, const char *to, bool merge); -int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink); +typedef enum CopyFlags { + COPY_REFLINK = 0x1, /* try to reflink */ + COPY_MERGE = 0x2, /* merge existing trees with our new one to copy */ + COPY_REPLACE = 0x4, /* replace an existing file if there's one */ +} CopyFlags; + +int copy_file_fd(const char *from, int to, CopyFlags copy_flags); +int copy_file(const char *from, const char *to, int open_flags, mode_t mode, unsigned chattr_flags, CopyFlags copy_flags); +int copy_file_atomic(const char *from, const char *to, mode_t mode, unsigned chattr_flags, CopyFlags copy_flags); +int copy_tree(const char *from, const char *to, uid_t override_uid, gid_t override_gid, CopyFlags copy_flags); +int copy_tree_at(int fdf, const char *from, int fdt, const char *to, uid_t override_uid, gid_t override_gid, CopyFlags copy_flags); +int copy_directory_fd(int dirfd, const char *to, CopyFlags copy_flags); +int copy_directory(const char *from, const char *to, CopyFlags copy_flags); +int copy_bytes(int fdf, int fdt, uint64_t max_bytes, CopyFlags copy_flags); int copy_times(int fdf, int fdt); int copy_xattr(int fdf, int fdt); diff --git a/src/basic/def.h b/src/basic/def.h index 2266eff650..200ea973c1 100644 --- a/src/basic/def.h +++ b/src/basic/def.h @@ -36,7 +36,9 @@ /* The default value for the net.unix.max_dgram_qlen sysctl */ #define DEFAULT_UNIX_MAX_DGRAM_QLEN 512UL -#define SYSTEMD_CGROUP_CONTROLLER "name=systemd" +#define SYSTEMD_CGROUP_CONTROLLER_LEGACY "name=systemd" +#define SYSTEMD_CGROUP_CONTROLLER_HYBRID "name=unified" +#define SYSTEMD_CGROUP_CONTROLLER "_systemd" #define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT #define SIGNALS_IGNORE SIGPIPE @@ -73,18 +75,18 @@ #define NOTIFY_BUFFER_MAX PIPE_BUF #ifdef HAVE_SPLIT_USR -#define _CONF_PATHS_SPLIT_USR(n) "/lib/" n "\0" +# define _CONF_PATHS_SPLIT_USR(n) "/lib/" n "\0" #else -#define _CONF_PATHS_SPLIT_USR(n) +# define _CONF_PATHS_SPLIT_USR(n) #endif /* Return a nulstr for a standard cascade of configuration paths, * suitable to pass to conf_files_list_nulstr() or config_parse_many_nulstr() * to implement drop-in directories for extending configuration * files. */ -#define CONF_PATHS_NULSTR(n) \ - "/etc/" n "\0" \ - "/run/" n "\0" \ - "/usr/local/lib/" n "\0" \ - "/usr/lib/" n "\0" \ +#define CONF_PATHS_NULSTR(n) \ + "/etc/" n "\0" \ + "/run/" n "\0" \ + "/usr/local/lib/" n "\0" \ + "/usr/lib/" n "\0" \ _CONF_PATHS_SPLIT_USR(n) diff --git a/src/basic/env-util.c b/src/basic/env-util.c index 96da38d45e..1ec574e8a0 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -26,6 +26,7 @@ #include "alloc-util.h" #include "env-util.h" +#include "escape.h" #include "extract-word.h" #include "macro.h" #include "parse-util.h" @@ -247,7 +248,7 @@ fail: return NULL; } -_pure_ static bool env_match(const char *t, const char *pattern) { +static bool env_match(const char *t, const char *pattern) { assert(t); assert(pattern); @@ -273,6 +274,19 @@ _pure_ static bool env_match(const char *t, const char *pattern) { return false; } +static bool env_entry_has_name(const char *entry, const char *name) { + const char *t; + + assert(entry); + assert(name); + + t = startswith(entry, name); + if (!t) + return false; + + return *t == '='; +} + char **strv_env_delete(char **x, unsigned n_lists, ...) { size_t n, i = 0; char **k, **r; @@ -386,18 +400,24 @@ char **strv_env_unset_many(char **l, ...) { int strv_env_replace(char ***l, char *p) { char **f; + const char *t, *name; assert(p); /* Replace first occurrence of the env var or add a new one in the * string list. Drop other occurences. Edits in-place. Does not copy p. + * p must be a valid key=value assignment. */ + t = strchr(p, '='); + assert(t); + + name = strndupa(p, t - p); + for (f = *l; f && *f; f++) - if (env_match(*f, p)) { - free(*f); - *f = p; - strv_env_unset(f + 1, p); + if (env_entry_has_name(*f, name)) { + free_and_replace(*f, p); + strv_env_unset(f + 1, *f); return 0; } @@ -434,7 +454,7 @@ fail: return NULL; } -char *strv_env_get_n(char **l, const char *name, size_t k) { +char *strv_env_get_n(char **l, const char *name, size_t k, unsigned flags) { char **i; assert(name); @@ -442,18 +462,25 @@ char *strv_env_get_n(char **l, const char *name, size_t k) { if (k <= 0) return NULL; - STRV_FOREACH(i, l) + STRV_FOREACH_BACKWARDS(i, l) if (strneq(*i, name, k) && (*i)[k] == '=') return *i + k + 1; + if (flags & REPLACE_ENV_USE_ENVIRONMENT) { + const char *t; + + t = strndupa(name, k); + return getenv(t); + }; + return NULL; } char *strv_env_get(char **l, const char *name) { assert(name); - return strv_env_get_n(l, name, strlen(name)); + return strv_env_get_n(l, name, strlen(name), 0); } char **strv_env_clean_with_callback(char **e, void (*invalid_callback)(const char *p, void *userdata), void *userdata) { @@ -492,19 +519,26 @@ char **strv_env_clean_with_callback(char **e, void (*invalid_callback)(const cha return e; } -char *replace_env(const char *format, char **env) { +char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { enum { WORD, CURLY, - VARIABLE + VARIABLE, + VARIABLE_RAW, + TEST, + DEFAULT_VALUE, + ALTERNATE_VALUE, } state = WORD; - const char *e, *word = format; - char *r = NULL, *k; + const char *e, *word = format, *test_value; + char *k; + _cleanup_free_ char *r = NULL; + size_t i, len; + int nest = 0; assert(format); - for (e = format; *e; e ++) { + for (e = format, i = 0; *e && i < n; e ++, i ++) { switch (state) { @@ -517,24 +551,36 @@ char *replace_env(const char *format, char **env) { if (*e == '{') { k = strnappend(r, word, e-word-1); if (!k) - goto fail; + return NULL; free(r); r = k; word = e-1; state = VARIABLE; - + nest++; } else if (*e == '$') { k = strnappend(r, word, e-word); if (!k) - goto fail; + return NULL; free(r); r = k; word = e+1; state = WORD; + + } else if (flags & REPLACE_ENV_ALLOW_BRACELESS && strchr(VALID_CHARS_ENV_NAME, *e)) { + k = strnappend(r, word, e-word-1); + if (!k) + return NULL; + + free(r); + r = k; + + word = e-1; + state = VARIABLE_RAW; + } else state = WORD; break; @@ -543,31 +589,109 @@ char *replace_env(const char *format, char **env) { if (*e == '}') { const char *t; - t = strempty(strv_env_get_n(env, word+2, e-word-2)); + t = strv_env_get_n(env, word+2, e-word-2, flags); k = strappend(r, t); if (!k) - goto fail; + return NULL; free(r); r = k; word = e+1; state = WORD; + } else if (*e == ':') { + if (!(flags & REPLACE_ENV_ALLOW_EXTENDED)) + /* Treat this as unsupported syntax, i.e. do no replacement */ + state = WORD; + else { + len = e-word-2; + state = TEST; + } + } + break; + + case TEST: + if (*e == '-') + state = DEFAULT_VALUE; + else if (*e == '+') + state = ALTERNATE_VALUE; + else { + state = WORD; + break; + } + + test_value = e+1; + break; + + case DEFAULT_VALUE: /* fall through */ + case ALTERNATE_VALUE: + assert(flags & REPLACE_ENV_ALLOW_EXTENDED); + + if (*e == '{') { + nest++; + break; + } + + if (*e != '}') + break; + + nest--; + if (nest == 0) { + const char *t; + _cleanup_free_ char *v = NULL; + + t = strv_env_get_n(env, word+2, len, flags); + + if (t && state == ALTERNATE_VALUE) + t = v = replace_env_n(test_value, e-test_value, env, flags); + else if (!t && state == DEFAULT_VALUE) + t = v = replace_env_n(test_value, e-test_value, env, flags); + + k = strappend(r, t); + if (!k) + return NULL; + + free(r); + r = k; + + word = e+1; + state = WORD; + } + break; + + case VARIABLE_RAW: + assert(flags & REPLACE_ENV_ALLOW_BRACELESS); + + if (!strchr(VALID_CHARS_ENV_NAME, *e)) { + const char *t; + + t = strv_env_get_n(env, word+1, e-word-1, flags); + + k = strappend(r, t); + if (!k) + return NULL; + + free(r); + r = k; + + word = e--; + i--; + state = WORD; } break; } } - k = strnappend(r, word, e-word); - if (!k) - goto fail; + if (state == VARIABLE_RAW) { + const char *t; - free(r); - return k; + assert(flags & REPLACE_ENV_ALLOW_BRACELESS); -fail: - return mfree(r); + t = strv_env_get_n(env, word+1, e-word-1, flags); + return strappend(r, t); + } else + return strnappend(r, word, e-word); } char **replace_env_argv(char **argv, char **env) { @@ -623,7 +747,7 @@ char **replace_env_argv(char **argv, char **env) { } /* If ${FOO} appears as part of a word, replace it by the variable as-is */ - ret[k] = replace_env(*i, env); + ret[k] = replace_env(*i, env, 0); if (!ret[k]) { strv_free(ret); return NULL; @@ -644,3 +768,39 @@ int getenv_bool(const char *p) { return parse_boolean(e); } + +int serialize_environment(FILE *f, char **environment) { + char **e; + + STRV_FOREACH(e, environment) { + _cleanup_free_ char *ce; + + ce = cescape(*e); + if (!ce) + return -ENOMEM; + + fprintf(f, "env=%s\n", *e); + } + + /* caller should call ferror() */ + + return 0; +} + +int deserialize_environment(char ***environment, const char *line) { + char *uce = NULL; + int r; + + assert(line); + assert(environment); + + assert(startswith(line, "env=")); + r = cunescape(line + 4, UNESCAPE_RELAX, &uce); + if (r < 0) + return r; + + if (!env_assignment_is_valid(uce)) + return -EINVAL; + + return strv_env_replace(environment, uce); +} diff --git a/src/basic/env-util.h b/src/basic/env-util.h index 8cb0fc2131..e88fa6aac0 100644 --- a/src/basic/env-util.h +++ b/src/basic/env-util.h @@ -21,6 +21,7 @@ #include <stdbool.h> #include <stddef.h> +#include <stdio.h> #include "macro.h" @@ -28,9 +29,19 @@ bool env_name_is_valid(const char *e); bool env_value_is_valid(const char *e); bool env_assignment_is_valid(const char *e); -char *replace_env(const char *format, char **env); +enum { + REPLACE_ENV_USE_ENVIRONMENT = 1u, + REPLACE_ENV_ALLOW_BRACELESS = 2u, + REPLACE_ENV_ALLOW_EXTENDED = 4u, +}; + +char *replace_env_n(const char *format, size_t n, char **env, unsigned flags); char **replace_env_argv(char **argv, char **env); +static inline char *replace_env(const char *format, char **env, unsigned flags) { + return replace_env_n(format, strlen(format), env, flags); +} + bool strv_env_is_valid(char **e); #define strv_env_clean(l) strv_env_clean_with_callback(l, NULL, NULL) char **strv_env_clean_with_callback(char **l, void (*invalid_callback)(const char *p, void *userdata), void *userdata); @@ -46,7 +57,10 @@ char **strv_env_unset(char **l, const char *p); /* In place ... */ char **strv_env_unset_many(char **l, ...) _sentinel_; int strv_env_replace(char ***l, char *p); /* In place ... */ -char *strv_env_get_n(char **l, const char *name, size_t k) _pure_; +char *strv_env_get_n(char **l, const char *name, size_t k, unsigned flags) _pure_; char *strv_env_get(char **x, const char *n) _pure_; int getenv_bool(const char *p); + +int serialize_environment(FILE *f, char **environment); +int deserialize_environment(char ***environment, const char *line); diff --git a/src/basic/exec-util.c b/src/basic/exec-util.c new file mode 100644 index 0000000000..aced9e8e3d --- /dev/null +++ b/src/basic/exec-util.c @@ -0,0 +1,360 @@ +/*** + This file is part of systemd. + + Copyright 2010 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <dirent.h> +#include <errno.h> +#include <sys/prctl.h> +#include <sys/types.h> +#include <unistd.h> +#include <stdio.h> + +#include "alloc-util.h" +#include "conf-files.h" +#include "env-util.h" +#include "exec-util.h" +#include "fd-util.h" +#include "fileio.h" +#include "hashmap.h" +#include "macro.h" +#include "process-util.h" +#include "set.h" +#include "signal-util.h" +#include "stat-util.h" +#include "string-util.h" +#include "strv.h" +#include "terminal-util.h" +#include "util.h" + +/* Put this test here for a lack of better place */ +assert_cc(EAGAIN == EWOULDBLOCK); + +static int do_spawn(const char *path, char *argv[], int stdout_fd, pid_t *pid) { + + pid_t _pid; + + if (null_or_empty_path(path)) { + log_debug("%s is empty (a mask).", path); + return 0; + } + + _pid = fork(); + if (_pid < 0) + return log_error_errno(errno, "Failed to fork: %m"); + if (_pid == 0) { + char *_argv[2]; + + assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); + + if (stdout_fd >= 0) { + /* If the fd happens to be in the right place, go along with that */ + if (stdout_fd != STDOUT_FILENO && + dup2(stdout_fd, STDOUT_FILENO) < 0) + return -errno; + + fd_cloexec(STDOUT_FILENO, false); + } + + if (!argv) { + _argv[0] = (char*) path; + _argv[1] = NULL; + argv = _argv; + } else + argv[0] = (char*) path; + + execv(path, argv); + log_error_errno(errno, "Failed to execute %s: %m", path); + _exit(EXIT_FAILURE); + } + + log_debug("Spawned %s as " PID_FMT ".", path, _pid); + *pid = _pid; + return 1; +} + +static int do_execute( + char **directories, + usec_t timeout, + gather_stdout_callback_t const callbacks[_STDOUT_CONSUME_MAX], + void* const callback_args[_STDOUT_CONSUME_MAX], + int output_fd, + char *argv[]) { + + _cleanup_hashmap_free_free_ Hashmap *pids = NULL; + _cleanup_strv_free_ char **paths = NULL; + char **path; + int r; + + /* We fork this all off from a child process so that we can somewhat cleanly make + * use of SIGALRM to set a time limit. + * + * If callbacks is nonnull, execution is serial. Otherwise, we default to parallel. + */ + + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + + assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); + + r = conf_files_list_strv(&paths, NULL, NULL, (const char* const*) directories); + if (r < 0) + return r; + + if (!callbacks) { + pids = hashmap_new(NULL); + if (!pids) + return log_oom(); + } + + /* Abort execution of this process after the timout. We simply rely on SIGALRM as + * default action terminating the process, and turn on alarm(). */ + + if (timeout != USEC_INFINITY) + alarm((timeout + USEC_PER_SEC - 1) / USEC_PER_SEC); + + STRV_FOREACH(path, paths) { + _cleanup_free_ char *t = NULL; + _cleanup_close_ int fd = -1; + pid_t pid; + + t = strdup(*path); + if (!t) + return log_oom(); + + if (callbacks) { + fd = open_serialization_fd(basename(*path)); + if (fd < 0) + return log_error_errno(fd, "Failed to open serialization file: %m"); + } + + r = do_spawn(t, argv, fd, &pid); + if (r <= 0) + continue; + + if (pids) { + r = hashmap_put(pids, PID_TO_PTR(pid), t); + if (r < 0) + return log_oom(); + t = NULL; + } else { + r = wait_for_terminate_and_warn(t, pid, true); + if (r < 0) + continue; + + if (lseek(fd, 0, SEEK_SET) < 0) + return log_error_errno(errno, "Failed to seek on serialization fd: %m"); + + r = callbacks[STDOUT_GENERATE](fd, callback_args[STDOUT_GENERATE]); + fd = -1; + if (r < 0) + return log_error_errno(r, "Failed to process output from %s: %m", *path); + } + } + + if (callbacks) { + r = callbacks[STDOUT_COLLECT](output_fd, callback_args[STDOUT_COLLECT]); + if (r < 0) + return log_error_errno(r, "Callback two failed: %m"); + } + + while (!hashmap_isempty(pids)) { + _cleanup_free_ char *t = NULL; + pid_t pid; + + pid = PTR_TO_PID(hashmap_first_key(pids)); + assert(pid > 0); + + t = hashmap_remove(pids, PID_TO_PTR(pid)); + assert(t); + + wait_for_terminate_and_warn(t, pid, true); + } + + return 0; +} + +int execute_directories( + const char* const* directories, + usec_t timeout, + gather_stdout_callback_t const callbacks[_STDOUT_CONSUME_MAX], + void* const callback_args[_STDOUT_CONSUME_MAX], + char *argv[]) { + + pid_t executor_pid; + char *name; + char **dirs = (char**) directories; + _cleanup_close_ int fd = -1; + int r; + + assert(!strv_isempty(dirs)); + + name = basename(dirs[0]); + assert(!isempty(name)); + + if (callbacks) { + assert(callback_args); + assert(callbacks[STDOUT_GENERATE]); + assert(callbacks[STDOUT_COLLECT]); + assert(callbacks[STDOUT_CONSUME]); + + fd = open_serialization_fd(name); + if (fd < 0) + return log_error_errno(fd, "Failed to open serialization file: %m"); + } + + /* Executes all binaries in the directories serially or in parallel and waits for + * them to finish. Optionally a timeout is applied. If a file with the same name + * exists in more than one directory, the earliest one wins. */ + + executor_pid = fork(); + if (executor_pid < 0) + return log_error_errno(errno, "Failed to fork: %m"); + + if (executor_pid == 0) { + r = do_execute(dirs, timeout, callbacks, callback_args, fd, argv); + _exit(r < 0 ? EXIT_FAILURE : EXIT_SUCCESS); + } + + r = wait_for_terminate_and_warn(name, executor_pid, true); + if (r < 0) + return log_error_errno(r, "Execution failed: %m"); + if (r > 0) { + /* non-zero return code from child */ + log_error("Forker process failed."); + return -EREMOTEIO; + } + + if (!callbacks) + return 0; + + if (lseek(fd, 0, SEEK_SET) < 0) + return log_error_errno(errno, "Failed to rewind serialization fd: %m"); + + r = callbacks[STDOUT_CONSUME](fd, callback_args[STDOUT_CONSUME]); + fd = -1; + if (r < 0) + return log_error_errno(r, "Failed to parse returned data: %m"); + return 0; +} + +static int gather_environment_generate(int fd, void *arg) { + char ***env = arg, **x, **y; + _cleanup_fclose_ FILE *f = NULL; + _cleanup_strv_free_ char **new; + int r; + + /* Read a series of VAR=value assignments from fd, use them to update the list of + * variables in env. Also update the exported environment. + * + * fd is always consumed, even on error. + */ + + assert(env); + + f = fdopen(fd, "r"); + if (!f) { + safe_close(fd); + return -errno; + } + + r = load_env_file_pairs(f, NULL, NULL, &new); + if (r < 0) + return r; + + STRV_FOREACH_PAIR(x, y, new) { + char *p; + + if (!env_name_is_valid(*x)) { + log_warning("Invalid variable assignment \"%s=...\", ignoring.", *x); + continue; + } + + p = strjoin(*x, "=", *y); + if (!p) + return -ENOMEM; + + r = strv_env_replace(env, p); + if (r < 0) + return r; + + if (setenv(*x, *y, true) < 0) + return -errno; + } + + return r; +} + +static int gather_environment_collect(int fd, void *arg) { + char ***env = arg; + _cleanup_fclose_ FILE *f = NULL; + int r; + + /* Write out a series of env=cescape(VAR=value) assignments to fd. */ + + assert(env); + + f = fdopen(fd, "w"); + if (!f) { + safe_close(fd); + return -errno; + } + + r = serialize_environment(f, *env); + if (r < 0) + return r; + + if (ferror(f)) + return errno > 0 ? -errno : -EIO; + + return 0; +} + +static int gather_environment_consume(int fd, void *arg) { + char ***env = arg; + _cleanup_fclose_ FILE *f = NULL; + char line[LINE_MAX]; + int r = 0, k; + + /* Read a series of env=cescape(VAR=value) assignments from fd into env. */ + + assert(env); + + f = fdopen(fd, "r"); + if (!f) { + safe_close(fd); + return -errno; + } + + FOREACH_LINE(line, f, return -EIO) { + truncate_nl(line); + + k = deserialize_environment(env, line); + if (k < 0) + log_error_errno(k, "Invalid line \"%s\": %m", line); + if (k < 0 && r == 0) + r = k; + } + + return r; +} + +const gather_stdout_callback_t gather_environment[] = { + gather_environment_generate, + gather_environment_collect, + gather_environment_consume, +}; diff --git a/src/basic/exec-util.h b/src/basic/exec-util.h new file mode 100644 index 0000000000..72009799b2 --- /dev/null +++ b/src/basic/exec-util.h @@ -0,0 +1,40 @@ +/*** + This file is part of systemd. + + Copyright 2017 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <stdbool.h> + +#include "time-util.h" + +typedef int (*gather_stdout_callback_t) (int fd, void *arg); + +enum { + STDOUT_GENERATE, /* from generators to helper process */ + STDOUT_COLLECT, /* from helper process to main process */ + STDOUT_CONSUME, /* process data in main process */ + _STDOUT_CONSUME_MAX, +}; + +int execute_directories( + const char* const* directories, + usec_t timeout, + gather_stdout_callback_t const callbacks[_STDOUT_CONSUME_MAX], + void* const callback_args[_STDOUT_CONSUME_MAX], + char *argv[]); + +extern const gather_stdout_callback_t gather_environment[_STDOUT_CONSUME_MAX]; diff --git a/src/basic/fileio.c b/src/basic/fileio.c index c43b0583a4..7c2c2b38f5 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -30,6 +30,7 @@ #include "alloc-util.h" #include "ctype.h" +#include "env-util.h" #include "escape.h" #include "fd-util.h" #include "fileio.h" @@ -553,13 +554,14 @@ static int parse_env_file_internal( } } - if (state == PRE_VALUE || - state == VALUE || - state == VALUE_ESCAPE || - state == SINGLE_QUOTE_VALUE || - state == SINGLE_QUOTE_VALUE_ESCAPE || - state == DOUBLE_QUOTE_VALUE || - state == DOUBLE_QUOTE_VALUE_ESCAPE) { + if (IN_SET(state, + PRE_VALUE, + VALUE, + VALUE_ESCAPE, + SINGLE_QUOTE_VALUE, + SINGLE_QUOTE_VALUE_ESCAPE, + DOUBLE_QUOTE_VALUE, + DOUBLE_QUOTE_VALUE_ESCAPE)) { key[n_key] = 0; @@ -586,14 +588,9 @@ fail: return r; } -static int parse_env_file_push( +static int check_utf8ness_and_warn( const char *filename, unsigned line, - const char *key, char *value, - void *userdata, - int *n_pushed) { - - const char *k; - va_list aq, *ap = userdata; + const char *key, char *value) { if (!utf8_is_valid(key)) { _cleanup_free_ char *p = NULL; @@ -611,6 +608,23 @@ static int parse_env_file_push( return -EINVAL; } + return 0; +} + +static int parse_env_file_push( + const char *filename, unsigned line, + const char *key, char *value, + void *userdata, + int *n_pushed) { + + const char *k; + va_list aq, *ap = userdata; + int r; + + r = check_utf8ness_and_warn(filename, line, key, value); + if (r < 0) + return r; + va_copy(aq, *ap); while ((k = va_arg(aq, const char *))) { @@ -662,27 +676,19 @@ static int load_env_file_push( char *p; int r; - if (!utf8_is_valid(key)) { - _cleanup_free_ char *t = utf8_escape_invalid(key); - - log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", strna(filename), line, t); - return -EINVAL; - } - - if (value && !utf8_is_valid(value)) { - _cleanup_free_ char *t = utf8_escape_invalid(value); - - log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", strna(filename), line, key, t); - return -EINVAL; - } + r = check_utf8ness_and_warn(filename, line, key, value); + if (r < 0) + return r; - p = strjoin(key, "=", strempty(value)); + p = strjoin(key, "=", value); if (!p) return -ENOMEM; - r = strv_consume(m, p); - if (r < 0) + r = strv_env_replace(m, p); + if (r < 0) { + free(p); return r; + } if (n_pushed) (*n_pushed)++; @@ -716,19 +722,9 @@ static int load_env_file_push_pairs( char ***m = userdata; int r; - if (!utf8_is_valid(key)) { - _cleanup_free_ char *t = utf8_escape_invalid(key); - - log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", strna(filename), line, t); - return -EINVAL; - } - - if (value && !utf8_is_valid(value)) { - _cleanup_free_ char *t = utf8_escape_invalid(value); - - log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", strna(filename), line, key, t); - return -EINVAL; - } + r = check_utf8ness_and_warn(filename, line, key, value); + if (r < 0) + return r; r = strv_extend(m, key); if (r < 0) @@ -767,6 +763,52 @@ int load_env_file_pairs(FILE *f, const char *fname, const char *newline, char ** return 0; } +static int merge_env_file_push( + const char *filename, unsigned line, + const char *key, char *value, + void *userdata, + int *n_pushed) { + + char ***env = userdata; + char *expanded_value; + + assert(env); + + if (!value) { + log_error("%s:%u: invalid syntax (around \"%s\"), ignoring.", strna(filename), line, key); + return 0; + } + + if (!env_name_is_valid(key)) { + log_error("%s:%u: invalid variable name \"%s\", ignoring.", strna(filename), line, key); + free(value); + return 0; + } + + expanded_value = replace_env(value, *env, + REPLACE_ENV_USE_ENVIRONMENT| + REPLACE_ENV_ALLOW_BRACELESS| + REPLACE_ENV_ALLOW_EXTENDED); + if (!expanded_value) + return -ENOMEM; + + free_and_replace(value, expanded_value); + + return load_env_file_push(filename, line, key, value, env, n_pushed); +} + +int merge_env_file( + char ***env, + FILE *f, + const char *fname) { + + /* NOTE: this function supports braceful and braceless variable expansions, + * plus "extended" substitutions, unlike other exported parsing functions. + */ + + return parse_env_file_internal(f, fname, NEWLINE, merge_env_file_push, env, NULL); +} + static void write_env_var(FILE *f, const char *v) { const char *p; @@ -1342,6 +1384,25 @@ int open_tmpfile_linkable(const char *target, int flags, char **ret_path) { return fd; } +int open_serialization_fd(const char *ident) { + int fd = -1; + + fd = memfd_create(ident, MFD_CLOEXEC); + if (fd < 0) { + const char *path; + + path = getpid() == 1 ? "/run/systemd" : "/tmp"; + fd = open_tmpfile_unlinkable(path, O_RDWR|O_CLOEXEC); + if (fd < 0) + return fd; + + log_debug("Serializing %s to %s.", ident, path); + } else + log_debug("Serializing %s to memfd.", ident); + + return fd; +} + int link_tmpfile(int fd, const char *path, const char *target) { assert(fd >= 0); diff --git a/src/basic/fileio.h b/src/basic/fileio.h index 17b38a5d60..e547614cc4 100644 --- a/src/basic/fileio.h +++ b/src/basic/fileio.h @@ -48,6 +48,8 @@ int parse_env_file(const char *fname, const char *separator, ...) _sentinel_; int load_env_file(FILE *f, const char *fname, const char *separator, char ***l); int load_env_file_pairs(FILE *f, const char *fname, const char *separator, char ***l); +int merge_env_file(char ***env, FILE *f, const char *fname); + int write_env_file(const char *fname, char **l); int executable_is_script(const char *path, char **interpreter); @@ -84,6 +86,7 @@ int fputs_with_space(FILE *f, const char *s, const char *separator, bool *space) int open_tmpfile_unlinkable(const char *directory, int flags); int open_tmpfile_linkable(const char *target, int flags, char **ret_path); +int open_serialization_fd(const char *ident); int link_tmpfile(int fd, const char *path, const char *target); diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h index 5fe5c71ff0..094acf1799 100644 --- a/src/basic/fs-util.h +++ b/src/basic/fs-util.h @@ -91,3 +91,9 @@ static inline void rmdir_and_free(char *p) { free(p); } DEFINE_TRIVIAL_CLEANUP_FUNC(char*, rmdir_and_free); + +static inline void unlink_and_free(char *p) { + (void) unlink(p); + free(p); +} +DEFINE_TRIVIAL_CLEANUP_FUNC(char*, unlink_and_free); diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c index e44a357287..a94037b303 100644 --- a/src/basic/hostname-util.c +++ b/src/basic/hostname-util.c @@ -55,7 +55,7 @@ char* gethostname_malloc(void) { assert_se(uname(&u) >= 0); if (isempty(u.nodename) || streq(u.nodename, "(none)")) - return strdup(u.sysname); + return strdup(FALLBACK_HOSTNAME); return strdup(u.nodename); } diff --git a/src/basic/in-addr-util.c b/src/basic/in-addr-util.c index 3b06cb00ad..3927df2955 100644 --- a/src/basic/in-addr-util.c +++ b/src/basic/in-addr-util.c @@ -66,6 +66,18 @@ int in_addr_is_link_local(int family, const union in_addr_union *u) { return -EAFNOSUPPORT; } +int in_addr_is_multicast(int family, const union in_addr_union *u) { + assert(u); + + if (family == AF_INET) + return IN_MULTICAST(be32toh(u->in.s_addr)); + + if (family == AF_INET6) + return IN6_IS_ADDR_MULTICAST(&u->in6); + + return -EAFNOSUPPORT; +} + bool in4_addr_is_localhost(const struct in_addr *a) { assert(a); diff --git a/src/basic/in-addr-util.h b/src/basic/in-addr-util.h index 64a812c322..51a5aa67e4 100644 --- a/src/basic/in-addr-util.h +++ b/src/basic/in-addr-util.h @@ -39,6 +39,8 @@ struct in_addr_data { bool in4_addr_is_null(const struct in_addr *a); int in_addr_is_null(int family, const union in_addr_union *u); +int in_addr_is_multicast(int family, const union in_addr_union *u); + bool in4_addr_is_link_local(const struct in_addr *a); int in_addr_is_link_local(int family, const union in_addr_union *u); diff --git a/src/basic/journal-importer.c b/src/basic/journal-importer.c new file mode 100644 index 0000000000..4c13e46a49 --- /dev/null +++ b/src/basic/journal-importer.c @@ -0,0 +1,481 @@ +/*** + This file is part of systemd. + + Copyright 2014 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <unistd.h> + +#include "alloc-util.h" +#include "journal-importer.h" +#include "fd-util.h" +#include "parse-util.h" +#include "string-util.h" + +enum { + IMPORTER_STATE_LINE = 0, /* waiting to read, or reading line */ + IMPORTER_STATE_DATA_START, /* reading binary data header */ + IMPORTER_STATE_DATA, /* reading binary data */ + IMPORTER_STATE_DATA_FINISH, /* expecting newline */ + IMPORTER_STATE_EOF, /* done */ +}; + +static int iovw_put(struct iovec_wrapper *iovw, void* data, size_t len) { + if (!GREEDY_REALLOC(iovw->iovec, iovw->size_bytes, iovw->count + 1)) + return log_oom(); + + iovw->iovec[iovw->count++] = (struct iovec) {data, len}; + return 0; +} + +static void iovw_free_contents(struct iovec_wrapper *iovw) { + iovw->iovec = mfree(iovw->iovec); + iovw->size_bytes = iovw->count = 0; +} + +static void iovw_rebase(struct iovec_wrapper *iovw, char *old, char *new) { + size_t i; + + for (i = 0; i < iovw->count; i++) + iovw->iovec[i].iov_base = (char*) iovw->iovec[i].iov_base - old + new; +} + +size_t iovw_size(struct iovec_wrapper *iovw) { + size_t n = 0, i; + + for (i = 0; i < iovw->count; i++) + n += iovw->iovec[i].iov_len; + + return n; +} + +void journal_importer_cleanup(JournalImporter *imp) { + if (imp->fd >= 0 && !imp->passive_fd) { + log_debug("Closing %s (fd=%d)", imp->name ?: "importer", imp->fd); + safe_close(imp->fd); + } + + free(imp->buf); + iovw_free_contents(&imp->iovw); +} + +static char* realloc_buffer(JournalImporter *imp, size_t size) { + char *b, *old = imp->buf; + + b = GREEDY_REALLOC(imp->buf, imp->size, size); + if (!b) + return NULL; + + iovw_rebase(&imp->iovw, old, imp->buf); + + return b; +} + +static int get_line(JournalImporter *imp, char **line, size_t *size) { + ssize_t n; + char *c = NULL; + + assert(imp); + assert(imp->state == IMPORTER_STATE_LINE); + assert(imp->offset <= imp->filled); + assert(imp->filled <= imp->size); + assert(imp->buf == NULL || imp->size > 0); + assert(imp->fd >= 0); + + for (;;) { + if (imp->buf) { + size_t start = MAX(imp->scanned, imp->offset); + + c = memchr(imp->buf + start, '\n', + imp->filled - start); + if (c != NULL) + break; + } + + imp->scanned = imp->filled; + if (imp->scanned >= DATA_SIZE_MAX) { + log_error("Entry is bigger than %u bytes.", DATA_SIZE_MAX); + return -E2BIG; + } + + if (imp->passive_fd) + /* we have to wait for some data to come to us */ + return -EAGAIN; + + /* We know that imp->filled is at most DATA_SIZE_MAX, so if + we reallocate it, we'll increase the size at least a bit. */ + assert_cc(DATA_SIZE_MAX < ENTRY_SIZE_MAX); + if (imp->size - imp->filled < LINE_CHUNK && + !realloc_buffer(imp, MIN(imp->filled + LINE_CHUNK, ENTRY_SIZE_MAX))) + return log_oom(); + + assert(imp->buf); + assert(imp->size - imp->filled >= LINE_CHUNK || + imp->size == ENTRY_SIZE_MAX); + + n = read(imp->fd, + imp->buf + imp->filled, + imp->size - imp->filled); + if (n < 0) { + if (errno != EAGAIN) + log_error_errno(errno, "read(%d, ..., %zu): %m", + imp->fd, + imp->size - imp->filled); + return -errno; + } else if (n == 0) + return 0; + + imp->filled += n; + } + + *line = imp->buf + imp->offset; + *size = c + 1 - imp->buf - imp->offset; + imp->offset += *size; + + return 1; +} + +static int fill_fixed_size(JournalImporter *imp, void **data, size_t size) { + + assert(imp); + assert(imp->state == IMPORTER_STATE_DATA_START || + imp->state == IMPORTER_STATE_DATA || + imp->state == IMPORTER_STATE_DATA_FINISH); + assert(size <= DATA_SIZE_MAX); + assert(imp->offset <= imp->filled); + assert(imp->filled <= imp->size); + assert(imp->buf != NULL || imp->size == 0); + assert(imp->buf == NULL || imp->size > 0); + assert(imp->fd >= 0); + assert(data); + + while (imp->filled - imp->offset < size) { + int n; + + if (imp->passive_fd) + /* we have to wait for some data to come to us */ + return -EAGAIN; + + if (!realloc_buffer(imp, imp->offset + size)) + return log_oom(); + + n = read(imp->fd, imp->buf + imp->filled, + imp->size - imp->filled); + if (n < 0) { + if (errno != EAGAIN) + log_error_errno(errno, "read(%d, ..., %zu): %m", imp->fd, + imp->size - imp->filled); + return -errno; + } else if (n == 0) + return 0; + + imp->filled += n; + } + + *data = imp->buf + imp->offset; + imp->offset += size; + + return 1; +} + +static int get_data_size(JournalImporter *imp) { + int r; + void *data; + + assert(imp); + assert(imp->state == IMPORTER_STATE_DATA_START); + assert(imp->data_size == 0); + + r = fill_fixed_size(imp, &data, sizeof(uint64_t)); + if (r <= 0) + return r; + + imp->data_size = le64toh( *(uint64_t *) data ); + if (imp->data_size > DATA_SIZE_MAX) { + log_error("Stream declares field with size %zu > DATA_SIZE_MAX = %u", + imp->data_size, DATA_SIZE_MAX); + return -EINVAL; + } + if (imp->data_size == 0) + log_warning("Binary field with zero length"); + + return 1; +} + +static int get_data_data(JournalImporter *imp, void **data) { + int r; + + assert(imp); + assert(data); + assert(imp->state == IMPORTER_STATE_DATA); + + r = fill_fixed_size(imp, data, imp->data_size); + if (r <= 0) + return r; + + return 1; +} + +static int get_data_newline(JournalImporter *imp) { + int r; + char *data; + + assert(imp); + assert(imp->state == IMPORTER_STATE_DATA_FINISH); + + r = fill_fixed_size(imp, (void**) &data, 1); + if (r <= 0) + return r; + + assert(data); + if (*data != '\n') { + log_error("expected newline, got '%c'", *data); + return -EINVAL; + } + + return 1; +} + +static int process_dunder(JournalImporter *imp, char *line, size_t n) { + const char *timestamp; + int r; + + assert(line); + assert(n > 0); + assert(line[n-1] == '\n'); + + /* XXX: is it worth to support timestamps in extended format? + * We don't produce them, but who knows... */ + + timestamp = startswith(line, "__CURSOR="); + if (timestamp) + /* ignore __CURSOR */ + return 1; + + timestamp = startswith(line, "__REALTIME_TIMESTAMP="); + if (timestamp) { + long long unsigned x; + line[n-1] = '\0'; + r = safe_atollu(timestamp, &x); + if (r < 0) + log_warning("Failed to parse __REALTIME_TIMESTAMP: '%s'", timestamp); + else + imp->ts.realtime = x; + return r < 0 ? r : 1; + } + + timestamp = startswith(line, "__MONOTONIC_TIMESTAMP="); + if (timestamp) { + long long unsigned x; + line[n-1] = '\0'; + r = safe_atollu(timestamp, &x); + if (r < 0) + log_warning("Failed to parse __MONOTONIC_TIMESTAMP: '%s'", timestamp); + else + imp->ts.monotonic = x; + return r < 0 ? r : 1; + } + + timestamp = startswith(line, "__"); + if (timestamp) { + log_notice("Unknown dunder line %s", line); + return 1; + } + + /* no dunder */ + return 0; +} + +int journal_importer_process_data(JournalImporter *imp) { + int r; + + switch(imp->state) { + case IMPORTER_STATE_LINE: { + char *line, *sep; + size_t n = 0; + + assert(imp->data_size == 0); + + r = get_line(imp, &line, &n); + if (r < 0) + return r; + if (r == 0) { + imp->state = IMPORTER_STATE_EOF; + return r; + } + assert(n > 0); + assert(line[n-1] == '\n'); + + if (n == 1) { + log_trace("Received empty line, event is ready"); + return 1; + } + + r = process_dunder(imp, line, n); + if (r != 0) + return r < 0 ? r : 0; + + /* MESSAGE=xxx\n + or + COREDUMP\n + LLLLLLLL0011223344...\n + */ + sep = memchr(line, '=', n); + if (sep) { + /* chomp newline */ + n--; + + r = iovw_put(&imp->iovw, line, n); + if (r < 0) + return r; + } else { + /* replace \n with = */ + line[n-1] = '='; + + imp->field_len = n; + imp->state = IMPORTER_STATE_DATA_START; + + /* we cannot put the field in iovec until we have all data */ + } + + log_trace("Received: %.*s (%s)", (int) n, line, sep ? "text" : "binary"); + + return 0; /* continue */ + } + + case IMPORTER_STATE_DATA_START: + assert(imp->data_size == 0); + + r = get_data_size(imp); + // log_debug("get_data_size() -> %d", r); + if (r < 0) + return r; + if (r == 0) { + imp->state = IMPORTER_STATE_EOF; + return 0; + } + + imp->state = imp->data_size > 0 ? + IMPORTER_STATE_DATA : IMPORTER_STATE_DATA_FINISH; + + return 0; /* continue */ + + case IMPORTER_STATE_DATA: { + void *data; + char *field; + + assert(imp->data_size > 0); + + r = get_data_data(imp, &data); + // log_debug("get_data_data() -> %d", r); + if (r < 0) + return r; + if (r == 0) { + imp->state = IMPORTER_STATE_EOF; + return 0; + } + + assert(data); + + field = (char*) data - sizeof(uint64_t) - imp->field_len; + memmove(field + sizeof(uint64_t), field, imp->field_len); + + r = iovw_put(&imp->iovw, field + sizeof(uint64_t), imp->field_len + imp->data_size); + if (r < 0) + return r; + + imp->state = IMPORTER_STATE_DATA_FINISH; + + return 0; /* continue */ + } + + case IMPORTER_STATE_DATA_FINISH: + r = get_data_newline(imp); + // log_debug("get_data_newline() -> %d", r); + if (r < 0) + return r; + if (r == 0) { + imp->state = IMPORTER_STATE_EOF; + return 0; + } + + imp->data_size = 0; + imp->state = IMPORTER_STATE_LINE; + + return 0; /* continue */ + default: + assert_not_reached("wtf?"); + } +} + +int journal_importer_push_data(JournalImporter *imp, const char *data, size_t size) { + assert(imp); + assert(imp->state != IMPORTER_STATE_EOF); + + if (!realloc_buffer(imp, imp->filled + size)) { + log_error("Failed to store received data of size %zu " + "(in addition to existing %zu bytes with %zu filled): %s", + size, imp->size, imp->filled, strerror(ENOMEM)); + return -ENOMEM; + } + + memcpy(imp->buf + imp->filled, data, size); + imp->filled += size; + + return 0; +} + +void journal_importer_drop_iovw(JournalImporter *imp) { + size_t remain, target; + + /* This function drops processed data that along with the iovw that points at it */ + + iovw_free_contents(&imp->iovw); + + /* possibly reset buffer position */ + remain = imp->filled - imp->offset; + + if (remain == 0) /* no brainer */ + imp->offset = imp->scanned = imp->filled = 0; + else if (imp->offset > imp->size - imp->filled && + imp->offset > remain) { + memcpy(imp->buf, imp->buf + imp->offset, remain); + imp->offset = imp->scanned = 0; + imp->filled = remain; + } + + target = imp->size; + while (target > 16 * LINE_CHUNK && imp->filled < target / 2) + target /= 2; + if (target < imp->size) { + char *tmp; + + tmp = realloc(imp->buf, target); + if (!tmp) + log_warning("Failed to reallocate buffer to (smaller) size %zu", + target); + else { + log_debug("Reallocated buffer from %zu to %zu bytes", + imp->size, target); + imp->buf = tmp; + imp->size = target; + } + } +} + +bool journal_importer_eof(const JournalImporter *imp) { + return imp->state == IMPORTER_STATE_EOF; +} diff --git a/src/basic/journal-importer.h b/src/basic/journal-importer.h new file mode 100644 index 0000000000..b3e308dd6d --- /dev/null +++ b/src/basic/journal-importer.h @@ -0,0 +1,70 @@ +/*** + This file is part of systemd. + + Copyright 2016 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#pragma once + +#include <stddef.h> +#include <stdbool.h> +#include <sys/uio.h> + +#include "time-util.h" + +/* Make sure not to make this smaller than the maximum coredump size. + * See COREDUMP_MAX in coredump.c */ +#define ENTRY_SIZE_MAX (1024*1024*770u) +#define DATA_SIZE_MAX (1024*1024*768u) +#define LINE_CHUNK 8*1024u + +struct iovec_wrapper { + struct iovec *iovec; + size_t size_bytes; + size_t count; +}; + +size_t iovw_size(struct iovec_wrapper *iovw); + +typedef struct JournalImporter { + int fd; + bool passive_fd; + char *name; + + char *buf; + size_t size; /* total size of the buffer */ + size_t offset; /* offset to the beginning of live data in the buffer */ + size_t scanned; /* number of bytes since the beginning of data without a newline */ + size_t filled; /* total number of bytes in the buffer */ + + size_t field_len; /* used for binary fields: the field name length */ + size_t data_size; /* and the size of the binary data chunk being processed */ + + struct iovec_wrapper iovw; + + int state; + dual_timestamp ts; +} JournalImporter; + +void journal_importer_cleanup(JournalImporter *); +int journal_importer_process_data(JournalImporter *); +int journal_importer_push_data(JournalImporter *, const char *data, size_t size); +void journal_importer_drop_iovw(JournalImporter *); +bool journal_importer_eof(const JournalImporter *); + +static inline size_t journal_importer_bytes_remaining(const JournalImporter *imp) { + return imp->filled; +} diff --git a/src/basic/khash.h b/src/basic/khash.h index f404a68236..410f3020e0 100644 --- a/src/basic/khash.h +++ b/src/basic/khash.h @@ -28,7 +28,7 @@ typedef struct khash khash; /* For plain hash functions. Hash functions commonly supported on today's kernels are: crc32c, crct10dif, crc32, - * sha224, sha256, sha512, sha384, sha1, md5, md4, sha3-224, sha3-256, sha3-384, sha3-512, and more.*/ + * sha224, sha256, sha512, sha384, sha1, md5, md4, sha3-224, sha3-256, sha3-384, sha3-512, and more. */ int khash_new(khash **ret, const char *algorithm); /* For keyed hash functions. Hash functions commonly supported on today's kernels are: hmac(sha256), cmac(aes), diff --git a/src/basic/log.c b/src/basic/log.c index 1362b1c086..36efc9ac7d 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -72,6 +72,7 @@ static bool show_color = false; static bool show_location = false; static bool upgrade_syslog_to_journal = false; +static bool always_reopen_console = false; /* Akin to glibc's __abort_msg; which is private and we hence cannot * use here. */ @@ -95,7 +96,7 @@ static int log_open_console(void) { if (console_fd >= 0) return 0; - if (getpid() == 1) { + if (always_reopen_console) { console_fd = open_terminal("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC); if (console_fd < 0) return console_fd; @@ -1164,10 +1165,14 @@ int log_syntax_internal( return log_struct_internal( level, error, file, line, func, - LOG_MESSAGE_ID(SD_MESSAGE_INVALID_CONFIGURATION), + "MESSAGE_ID=" SD_MESSAGE_INVALID_CONFIGURATION_STR, "CONFIG_FILE=%s", config_file, "CONFIG_LINE=%u", config_line, LOG_MESSAGE("%s:%u: %s", config_file, config_line, buffer), unit_fmt, unit, NULL); } + +void log_set_always_reopen_console(bool b) { + always_reopen_console = b; +} diff --git a/src/basic/log.h b/src/basic/log.h index 2afee20bb5..72714e02e5 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -214,13 +214,13 @@ bool log_on_console(void) _pure_; const char *log_target_to_string(LogTarget target) _const_; LogTarget log_target_from_string(const char *s) _pure_; -/* Helpers to prepare various fields for structured logging */ +/* Helper to prepare various field for structured logging */ #define LOG_MESSAGE(fmt, ...) "MESSAGE=" fmt, ##__VA_ARGS__ -#define LOG_MESSAGE_ID(x) "MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(x) void log_received_signal(int level, const struct signalfd_siginfo *si); void log_set_upgrade_syslog_to_journal(bool b); +void log_set_always_reopen_console(bool b); int log_syntax_internal( const char *unit, diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h index e6fd67cb9d..9fc4156564 100644 --- a/src/basic/missing_syscall.h +++ b/src/basic/missing_syscall.h @@ -194,6 +194,8 @@ static inline pid_t raw_getpid(void) { # define __NR_renameat2 316 # elif defined __arm__ # define __NR_renameat2 382 +# elif defined __aarch64__ +# define __NR_renameat2 276 # elif defined _MIPS_SIM # if _MIPS_SIM == _MIPS_SIM_ABI32 # define __NR_renameat2 4351 diff --git a/src/basic/mount-util.c b/src/basic/mount-util.c index f0bc9cac18..a8fd63fb45 100644 --- a/src/basic/mount-util.c +++ b/src/basic/mount-util.c @@ -112,9 +112,10 @@ int fd_is_mount_point(int fd, const char *filename, int flags) { r = name_to_handle_at(fd, filename, &h.handle, &mount_id, flags); if (r < 0) { - if (errno == ENOSYS) - /* This kernel does not support name_to_handle_at() - * fall back to simpler logic. */ + if (IN_SET(errno, ENOSYS, EACCES, EPERM)) + /* This kernel does not support name_to_handle_at() at all, or the syscall was blocked (maybe + * through seccomp, because we are running inside of a container?): fall back to simpler + * logic. */ goto fallback_fdinfo; else if (errno == EOPNOTSUPP) /* This kernel or file system does not support @@ -163,7 +164,7 @@ int fd_is_mount_point(int fd, const char *filename, int flags) { fallback_fdinfo: r = fd_fdinfo_mnt_id(fd, filename, flags, &mount_id); - if (IN_SET(r, -EOPNOTSUPP, -EACCES)) + if (IN_SET(r, -EOPNOTSUPP, -EACCES, -EPERM)) goto fallback_fstat; if (r < 0) return r; diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c index f703e7f145..8592a428d5 100644 --- a/src/basic/proc-cmdline.c +++ b/src/basic/proc-cmdline.c @@ -154,7 +154,7 @@ int proc_cmdline_get_key(const char *key, unsigned flags, char **value) { * * c) The "value" parameter is NULL. In this case a search for the exact "key" parameter is performed. * - * In all three cases, > 0 is returned if the key is found, 0 if not.*/ + * In all three cases, > 0 is returned if the key is found, 0 if not. */ if (isempty(key)) return -EINVAL; diff --git a/src/basic/process-util.c b/src/basic/process-util.c index eead8b00da..0df3fed640 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -311,7 +311,7 @@ int rename_process(const char name[]) { /* Third step, completely replace the argv[] array the kernel maintains for us. This requires privileges, but * has the advantage that the argv[] array is exactly what we want it to be, and not filled up with zeros at - * the end. This is the best option for changing /proc/self/cmdline.*/ + * the end. This is the best option for changing /proc/self/cmdline. */ if (mm_size < l+1) { size_t nn_size; char *nn; @@ -703,7 +703,7 @@ int kill_and_sigcont(pid_t pid, int sig) { /* If this worked, also send SIGCONT, unless we already just sent a SIGCONT, or SIGKILL was sent which isn't * affected by a process being suspended anyway. */ - if (r >= 0 && !IN_SET(SIGCONT, SIGKILL)) + if (r >= 0 && !IN_SET(sig, SIGCONT, SIGKILL)) (void) kill(pid, SIGCONT); return r; diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index 17e90a8994..e5847dce00 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -900,6 +900,26 @@ bool ifname_valid(const char *p) { return true; } +bool address_label_valid(const char *p) { + + if (isempty(p)) + return false; + + if (strlen(p) >= IFNAMSIZ) + return false; + + while (*p) { + if ((uint8_t) *p >= 127U) + return false; + + if ((uint8_t) *p <= 31U) + return false; + p++; + } + + return true; +} + int getpeercred(int fd, struct ucred *ucred) { socklen_t n = sizeof(struct ucred); struct ucred u; diff --git a/src/basic/socket-util.h b/src/basic/socket-util.h index 3c42e220e5..73c3a339fc 100644 --- a/src/basic/socket-util.h +++ b/src/basic/socket-util.h @@ -126,6 +126,7 @@ int ip_tos_to_string_alloc(int i, char **s); int ip_tos_from_string(const char *s); bool ifname_valid(const char *p); +bool address_label_valid(const char *p); int getpeercred(int fd, struct ucred *ucred); int getpeersec(int fd, char **ret); diff --git a/src/basic/util.c b/src/basic/util.c index 6204906f37..3dce0ea92e 100644 --- a/src/basic/util.c +++ b/src/basic/util.c @@ -59,9 +59,6 @@ #include "user-util.h" #include "util.h" -/* Put this test here for a lack of better place */ -assert_cc(EAGAIN == EWOULDBLOCK); - int saved_argc = 0; char **saved_argv = NULL; static int saved_in_initrd = -1; @@ -80,146 +77,6 @@ size_t page_size(void) { return pgsz; } -static int do_execute(char **directories, usec_t timeout, char *argv[]) { - _cleanup_hashmap_free_free_ Hashmap *pids = NULL; - _cleanup_set_free_free_ Set *seen = NULL; - char **directory; - - /* We fork this all off from a child process so that we can - * somewhat cleanly make use of SIGALRM to set a time limit */ - - (void) reset_all_signal_handlers(); - (void) reset_signal_mask(); - - assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); - - pids = hashmap_new(NULL); - if (!pids) - return log_oom(); - - seen = set_new(&string_hash_ops); - if (!seen) - return log_oom(); - - STRV_FOREACH(directory, directories) { - _cleanup_closedir_ DIR *d; - struct dirent *de; - - d = opendir(*directory); - if (!d) { - if (errno == ENOENT) - continue; - - return log_error_errno(errno, "Failed to open directory %s: %m", *directory); - } - - FOREACH_DIRENT(de, d, break) { - _cleanup_free_ char *path = NULL; - pid_t pid; - int r; - - if (!dirent_is_file(de)) - continue; - - if (set_contains(seen, de->d_name)) { - log_debug("%1$s/%2$s skipped (%2$s was already seen).", *directory, de->d_name); - continue; - } - - r = set_put_strdup(seen, de->d_name); - if (r < 0) - return log_oom(); - - path = strjoin(*directory, "/", de->d_name); - if (!path) - return log_oom(); - - if (null_or_empty_path(path)) { - log_debug("%s is empty (a mask).", path); - continue; - } - - pid = fork(); - if (pid < 0) { - log_error_errno(errno, "Failed to fork: %m"); - continue; - } else if (pid == 0) { - char *_argv[2]; - - assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); - - if (!argv) { - _argv[0] = path; - _argv[1] = NULL; - argv = _argv; - } else - argv[0] = path; - - execv(path, argv); - return log_error_errno(errno, "Failed to execute %s: %m", path); - } - - log_debug("Spawned %s as " PID_FMT ".", path, pid); - - r = hashmap_put(pids, PID_TO_PTR(pid), path); - if (r < 0) - return log_oom(); - path = NULL; - } - } - - /* Abort execution of this process after the timout. We simply - * rely on SIGALRM as default action terminating the process, - * and turn on alarm(). */ - - if (timeout != USEC_INFINITY) - alarm((timeout + USEC_PER_SEC - 1) / USEC_PER_SEC); - - while (!hashmap_isempty(pids)) { - _cleanup_free_ char *path = NULL; - pid_t pid; - - pid = PTR_TO_PID(hashmap_first_key(pids)); - assert(pid > 0); - - path = hashmap_remove(pids, PID_TO_PTR(pid)); - assert(path); - - wait_for_terminate_and_warn(path, pid, true); - } - - return 0; -} - -void execute_directories(const char* const* directories, usec_t timeout, char *argv[]) { - pid_t executor_pid; - int r; - char *name; - char **dirs = (char**) directories; - - assert(!strv_isempty(dirs)); - - name = basename(dirs[0]); - assert(!isempty(name)); - - /* Executes all binaries in the directories in parallel and waits - * for them to finish. Optionally a timeout is applied. If a file - * with the same name exists in more than one directory, the - * earliest one wins. */ - - executor_pid = fork(); - if (executor_pid < 0) { - log_error_errno(errno, "Failed to fork: %m"); - return; - - } else if (executor_pid == 0) { - r = do_execute(dirs, timeout, argv); - _exit(r < 0 ? EXIT_FAILURE : EXIT_SUCCESS); - } - - wait_for_terminate_and_warn(name, executor_pid, true); -} - bool plymouth_running(void) { return access("/run/plymouth/pid", F_OK) >= 0; } diff --git a/src/basic/util.h b/src/basic/util.h index c3802a811c..c7da6c39bf 100644 --- a/src/basic/util.h +++ b/src/basic/util.h @@ -65,8 +65,6 @@ static inline const char* enable_disable(bool b) { return b ? "enable" : "disable"; } -void execute_directories(const char* const* directories, usec_t timeout, char *argv[]); - bool plymouth_running(void); bool display_is_local(const char *display) _pure_; diff --git a/src/basic/virt.c b/src/basic/virt.c index 03ce71a728..ff4491d6d6 100644 --- a/src/basic/virt.c +++ b/src/basic/virt.c @@ -28,7 +28,6 @@ #include "env-util.h" #include "fd-util.h" #include "fileio.h" -#include "fs-util.h" #include "macro.h" #include "process-util.h" #include "stat-util.h" @@ -316,25 +315,31 @@ static int detect_vm_zvm(void) { /* Returns a short identifier for the various VM implementations */ int detect_vm(void) { static thread_local int cached_found = _VIRTUALIZATION_INVALID; - int r; + int r, dmi; if (cached_found >= 0) return cached_found; /* We have to use the correct order here: - * Some virtualization technologies do use KVM hypervisor but are - * expected to be detected as something else. So detect DMI first. * - * An example is Virtualbox since version 5.0, which uses KVM backend. - * Detection via DMI works corretly, the CPU ID would find KVM - * only. */ - r = detect_vm_dmi(); + * -> First try to detect Oracle Virtualbox, even if it uses KVM. + * -> Second try to detect from cpuid, this will report KVM for + * whatever software is used even if info in dmi is overwritten. + * -> Third try to detect from dmi. */ + + dmi = detect_vm_dmi(); + if (dmi == VIRTUALIZATION_ORACLE) { + r = dmi; + goto finish; + } + + r = detect_vm_cpuid(); if (r < 0) return r; if (r != VIRTUALIZATION_NONE) goto finish; - r = detect_vm_cpuid(); + r = dmi; if (r < 0) return r; if (r != VIRTUALIZATION_NONE) @@ -564,30 +569,16 @@ int running_in_userns(void) { } int running_in_chroot(void) { - _cleanup_free_ char *self_mnt = NULL, *pid1_mnt = NULL; - int r; - - /* Try to detect whether we are running in a chroot() environment. Specifically, check whether we have a - * different root directory than PID 1, even though we live in the same mount namespace as it. */ + int ret; if (getenv_bool("SYSTEMD_IGNORE_CHROOT") > 0) return 0; - r = files_same("/proc/1/root", "/"); - if (r < 0) - return r; - if (r > 0) - return 0; - - r = readlink_malloc("/proc/self/ns/mnt", &self_mnt); - if (r < 0) - return r; - - r = readlink_malloc("/proc/1/ns/mnt", &pid1_mnt); - if (r < 0) - return r; + ret = files_same("/proc/1/root", "/"); + if (ret < 0) + return ret; - return streq(self_mnt, pid1_mnt); /* Only if we live in the same namespace! */ + return ret == 0; } static const char *const virtualization_table[_VIRTUALIZATION_MAX] = { diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index b747a95133..155bf278b2 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -38,20 +38,22 @@ #include "alloc-util.h" #include "blkid-util.h" +#include "copy.h" #include "dirent-util.h" #include "efivars.h" #include "fd-util.h" #include "fileio.h" +#include "fs-util.h" #include "locale-util.h" #include "parse-util.h" #include "rm-rf.h" +#include "stat-util.h" #include "string-util.h" #include "strv.h" #include "umask-util.h" #include "util.h" #include "verbs.h" #include "virt.h" -#include "stat-util.h" static char *arg_path = NULL; static bool arg_touch_variables = true; @@ -123,12 +125,8 @@ static int verify_esp( errno = 0; b = blkid_new_probe_from_filename(t); - if (!b) { - if (errno == 0) - return log_oom(); - - return log_error_errno(errno, "Failed to open file system \"%s\": %m", p); - } + if (!b) + return log_error_errno(errno ?: ENOMEM, "Failed to open file system \"%s\": %m", p); blkid_probe_enable_superblocks(b, 1); blkid_probe_set_superblocks_flags(b, BLKID_SUBLKS_TYPE); @@ -143,17 +141,13 @@ static int verify_esp( } else if (r == 1) { log_error("File system \"%s\" does not contain a label.", p); return -ENODEV; - } else if (r != 0) { - r = errno ? -errno : -EIO; - return log_error_errno(r, "Failed to probe file system \"%s\": %m", p); - } + } else if (r != 0) + return log_error_errno(errno ?: EIO, "Failed to probe file system \"%s\": %m", p); errno = 0; r = blkid_probe_lookup_value(b, "TYPE", &v, NULL); - if (r != 0) { - r = errno ? -errno : -EIO; - return log_error_errno(r, "Failed to probe file system type \"%s\": %m", p); - } + if (r != 0) + return log_error_errno(errno ?: EIO, "Failed to probe file system type \"%s\": %m", p); if (!streq(v, "vfat")) { log_error("File system \"%s\" is not FAT.", p); return -ENODEV; @@ -161,10 +155,8 @@ static int verify_esp( errno = 0; r = blkid_probe_lookup_value(b, "PART_ENTRY_SCHEME", &v, NULL); - if (r != 0) { - r = errno ? -errno : -EIO; - return log_error_errno(r, "Failed to probe partition scheme \"%s\": %m", p); - } + if (r != 0) + return log_error_errno(errno ?: EIO, "Failed to probe partition scheme \"%s\": %m", p); if (!streq(v, "gpt")) { log_error("File system \"%s\" is not on a GPT partition table.", p); return -ENODEV; @@ -172,10 +164,8 @@ static int verify_esp( errno = 0; r = blkid_probe_lookup_value(b, "PART_ENTRY_TYPE", &v, NULL); - if (r != 0) { - r = errno ? -errno : -EIO; - return log_error_errno(r, "Failed to probe partition type UUID \"%s\": %m", p); - } + if (r != 0) + return log_error_errno(errno ?: EIO, "Failed to probe partition type UUID \"%s\": %m", p); if (!streq(v, "c12a7328-f81f-11d2-ba4b-00a0c93ec93b")) { log_error("File system \"%s\" has wrong type for an EFI System Partition (ESP).", p); return -ENODEV; @@ -183,10 +173,8 @@ static int verify_esp( errno = 0; r = blkid_probe_lookup_value(b, "PART_ENTRY_UUID", &v, NULL); - if (r != 0) { - r = errno ? -errno : -EIO; - return log_error_errno(r, "Failed to probe partition entry UUID \"%s\": %m", p); - } + if (r != 0) + return log_error_errno(errno ?: EIO, "Failed to probe partition entry UUID \"%s\": %m", p); r = sd_id128_from_string(v, &uuid); if (r < 0) { log_error("Partition \"%s\" has invalid UUID \"%s\".", p, v); @@ -195,30 +183,24 @@ static int verify_esp( errno = 0; r = blkid_probe_lookup_value(b, "PART_ENTRY_NUMBER", &v, NULL); - if (r != 0) { - r = errno ? -errno : -EIO; - return log_error_errno(r, "Failed to probe partition number \"%s\": m", p); - } + if (r != 0) + return log_error_errno(errno ?: EIO, "Failed to probe partition number \"%s\": m", p); r = safe_atou32(v, &part); if (r < 0) return log_error_errno(r, "Failed to parse PART_ENTRY_NUMBER field."); errno = 0; r = blkid_probe_lookup_value(b, "PART_ENTRY_OFFSET", &v, NULL); - if (r != 0) { - r = errno ? -errno : -EIO; - return log_error_errno(r, "Failed to probe partition offset \"%s\": %m", p); - } + if (r != 0) + return log_error_errno(errno ?: EIO, "Failed to probe partition offset \"%s\": %m", p); r = safe_atou64(v, &pstart); if (r < 0) return log_error_errno(r, "Failed to parse PART_ENTRY_OFFSET field."); errno = 0; r = blkid_probe_lookup_value(b, "PART_ENTRY_SIZE", &v, NULL); - if (r != 0) { - r = errno ? -errno : -EIO; - return log_error_errno(r, "Failed to probe partition size \"%s\": %m", p); - } + if (r != 0) + return log_error_errno(errno ?: EIO, "Failed to probe partition size \"%s\": %m", p); r = safe_atou64(v, &psize); if (r < 0) return log_error_errno(r, "Failed to parse PART_ENTRY_SIZE field."); @@ -476,16 +458,16 @@ static int compare_version(const char *a, const char *b) { return strverscmp(a, b); } -static int version_check(int fd, const char *from, const char *to) { +static int version_check(int fd_from, const char *from, int fd_to, const char *to) { _cleanup_free_ char *a = NULL, *b = NULL; - _cleanup_close_ int fd2 = -1; int r; - assert(fd >= 0); + assert(fd_from >= 0); assert(from); + assert(fd_to >= 0); assert(to); - r = get_file_version(fd, &a); + r = get_file_version(fd_from, &a); if (r < 0) return r; if (r == 0) { @@ -493,15 +475,7 @@ static int version_check(int fd, const char *from, const char *to) { return -EINVAL; } - fd2 = open(to, O_RDONLY|O_CLOEXEC); - if (fd2 < 0) { - if (errno == ENOENT) - return 0; - - return log_error_errno(errno, "Failed to open \"%s\" for reading: %m", to); - } - - r = get_file_version(fd2, &b); + r = get_file_version(fd_to, &b); if (r < 0) return r; if (r == 0 || compare_product(a, b) != 0) { @@ -517,90 +491,59 @@ static int version_check(int fd, const char *from, const char *to) { return 0; } -static int copy_file(const char *from, const char *to, bool force) { - _cleanup_fclose_ FILE *f = NULL, *g = NULL; - char *p; +static int copy_file_with_version_check(const char *from, const char *to, bool force) { + _cleanup_close_ int fd_from = -1, fd_to = -1; + _cleanup_free_ char *t = NULL; int r; - struct timespec t[2]; - struct stat st; - assert(from); - assert(to); - - f = fopen(from, "re"); - if (!f) + fd_from = open(from, O_RDONLY|O_CLOEXEC|O_NOCTTY); + if (fd_from < 0) return log_error_errno(errno, "Failed to open \"%s\" for reading: %m", from); if (!force) { - /* If this is an update, then let's compare versions first */ - r = version_check(fileno(f), from, to); - if (r < 0) - return r; - } - - p = strjoina(to, "~"); - g = fopen(p, "wxe"); - if (!g) { - /* Directory doesn't exist yet? Then let's skip this... */ - if (!force && errno == ENOENT) - return 0; - - return log_error_errno(errno, "Failed to open \"%s\" for writing: %m", to); - } + fd_to = open(to, O_RDONLY|O_CLOEXEC|O_NOCTTY); + if (fd_to < 0) { + if (errno != -ENOENT) + return log_error_errno(errno, "Failed to open \"%s\" for reading: %m", to); + } else { + r = version_check(fd_from, from, fd_to, to); + if (r < 0) + return r; - rewind(f); - do { - size_t k; - uint8_t buf[32*1024]; + if (lseek(fd_from, 0, SEEK_SET) == (off_t) -1) + return log_error_errno(errno, "Failed to seek in \%s\": %m", from); - k = fread(buf, 1, sizeof(buf), f); - if (ferror(f)) { - r = log_error_errno(EIO, "Failed to read \"%s\": %m", from); - goto error; + fd_to = safe_close(fd_to); } + } - if (k == 0) - break; - - fwrite(buf, 1, k, g); - if (ferror(g)) { - r = log_error_errno(EIO, "Failed to write \"%s\": %m", to); - goto error; - } - } while (!feof(f)); + r = tempfn_random(to, NULL, &t); + if (r < 0) + return log_oom(); - r = fflush_and_check(g); - if (r < 0) { - log_error_errno(r, "Failed to write \"%s\": %m", to); - goto error; + RUN_WITH_UMASK(0000) { + fd_to = open(t, O_WRONLY|O_CREAT|O_CLOEXEC|O_EXCL|O_NOFOLLOW, 0644); + if (fd_to < 0) + return log_error_errno(errno, "Failed to open \"%s\" for writing: %m", t); } - r = fstat(fileno(f), &st); + r = copy_bytes(fd_from, fd_to, (uint64_t) -1, COPY_REFLINK); if (r < 0) { - r = log_error_errno(errno, "Failed to get file timestamps of \"%s\": %m", from); - goto error; + unlink(t); + return log_error_errno(errno, "Failed to copy data from \"%s\" to \"%s\": %m", from, t); } - t[0] = st.st_atim; - t[1] = st.st_mtim; + (void) copy_times(fd_from, fd_to); - r = futimens(fileno(g), t); + r = renameat(AT_FDCWD, t, AT_FDCWD, to); if (r < 0) { - r = log_error_errno(errno, "Failed to set file timestamps on \"%s\": %m", p); - goto error; - } - - if (rename(p, to) < 0) { - r = log_error_errno(errno, "Failed to rename \"%s\" to \"%s\": %m", p, to); - goto error; + (void) unlink_noerrno(t); + return log_error_errno(errno, "Failed to rename \"%s\" to \"%s\": %m", t, to); } log_info("Copied \"%s\" to \"%s\".", from, to); - return 0; -error: - (void) unlink(p); - return r; + return 0; } static int mkdir_one(const char *prefix, const char *suffix) { @@ -644,7 +587,7 @@ static int copy_one_file(const char *esp_path, const char *name, bool force) { p = strjoina(BOOTLIBDIR "/", name); q = strjoina(esp_path, "/EFI/systemd/", name); - r = copy_file(p, q, force); + r = copy_file_with_version_check(p, q, force); if (startswith(name, "systemd-boot")) { int k; @@ -654,7 +597,7 @@ static int copy_one_file(const char *esp_path, const char *name, bool force) { v = strjoina(esp_path, "/EFI/BOOT/BOOT", name + strlen("systemd-boot")); ascii_strupper(strrchr(v, '/') + 1); - k = copy_file(p, v, force); + k = copy_file_with_version_check(p, v, force); if (k < 0 && r == 0) r = k; } @@ -950,20 +893,31 @@ static int remove_variables(sd_id128_t uuid, const char *path, bool in_order) { static int install_loader_config(const char *esp_path) { - _cleanup_fclose_ FILE *f = NULL; char machine_string[SD_ID128_STRING_MAX]; + _cleanup_(unlink_and_freep) char *t = NULL; + _cleanup_fclose_ FILE *f = NULL; sd_id128_t machine_id; const char *p; - int r; + int r, fd; r = sd_id128_get_machine(&machine_id); if (r < 0) return log_error_errno(r, "Failed to get machine did: %m"); p = strjoina(esp_path, "/loader/loader.conf"); - f = fopen(p, "wxe"); - if (!f) - return log_error_errno(errno, "Failed to open loader.conf for writing: %m"); + + if (access(p, F_OK) >= 0) /* Silently skip creation if the file already exists (early check) */ + return 0; + + fd = open_tmpfile_linkable(p, O_WRONLY|O_CLOEXEC, &t); + if (fd < 0) + return log_error_errno(fd, "Failed to open \"%s\" for writing: %m", p); + + f = fdopen(fd, "we"); + if (!f) { + safe_close(fd); + return log_oom(); + } fprintf(f, "#timeout 3\n"); fprintf(f, "default %s-*\n", sd_id128_to_string(machine_id, machine_string)); @@ -972,7 +926,15 @@ static int install_loader_config(const char *esp_path) { if (r < 0) return log_error_errno(r, "Failed to write \"%s\": %m", p); - return 0; + r = link_tmpfile(fd, t, p); + if (r == -EEXIST) + return 0; /* Silently skip creation if the file exists now (recheck) */ + if (r < 0) + return log_error_errno(r, "Failed to move \"%s\" into place: %m", p); + + t = mfree(t); + + return 1; } static int help(int argc, char *argv[], void *userdata) { diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c index 7cc54a8cdd..681e783f2e 100644 --- a/src/boot/efi/boot.c +++ b/src/boot/efi/boot.c @@ -1787,7 +1787,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { config_title_generate(&config); - /* select entry by configured pattern or EFI LoaderDefaultEntry= variable*/ + /* select entry by configured pattern or EFI LoaderDefaultEntry= variable */ config_default_entry_select(&config); /* if no configured entry to select from was found, enable the menu */ diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c index 7c1ffb1bca..b7d5d3cdae 100644 --- a/src/boot/efi/stub.c +++ b/src/boot/efi/stub.c @@ -87,7 +87,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { cmdline_len = szs[0]; /* if we are not in secure boot mode, accept a custom command line and replace the built-in one */ - if (!secure && loaded_image->LoadOptionsSize > 0) { + if (!secure && loaded_image->LoadOptionsSize > 0 && *(CHAR16 *)loaded_image->LoadOptions != 0) { CHAR16 *options; CHAR8 *line; UINTN i; diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c index 5574c14555..1b746a0e13 100644 --- a/src/cgls/cgls.c +++ b/src/cgls/cgls.c @@ -158,7 +158,7 @@ static int parse_argv(int argc, char *argv[]) { static void show_cg_info(const char *controller, const char *path) { - if (cg_all_unified() <= 0 && controller && !streq(controller, SYSTEMD_CGROUP_CONTROLLER)) + if (cg_all_unified() == 0 && controller && !streq(controller, SYSTEMD_CGROUP_CONTROLLER)) printf("Controller %s; ", controller); printf("Control group %s:\n", isempty(path) ? "/" : path); diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c index 50ac6a58b0..a1c0f48c89 100644 --- a/src/cgtop/cgtop.c +++ b/src/cgtop/cgtop.c @@ -133,12 +133,16 @@ static int process( Group **ret) { Group *g; - int r; + int r, all_unified; assert(controller); assert(path); assert(a); + all_unified = cg_all_unified(); + if (all_unified < 0) + return all_unified; + g = hashmap_get(a, path); if (!g) { g = hashmap_get(b, path); @@ -214,7 +218,7 @@ static int process( uint64_t new_usage; nsec_t timestamp; - if (cg_all_unified() > 0) { + if (all_unified) { const char *keys[] = { "usage_usec", NULL }; _cleanup_free_ char *val = NULL; @@ -274,10 +278,10 @@ static int process( } else if (streq(controller, "memory")) { _cleanup_free_ char *p = NULL, *v = NULL; - if (cg_all_unified() <= 0) - r = cg_get_path(controller, path, "memory.usage_in_bytes", &p); - else + if (all_unified) r = cg_get_path(controller, path, "memory.current", &p); + else + r = cg_get_path(controller, path, "memory.usage_in_bytes", &p); if (r < 0) return r; @@ -294,15 +298,14 @@ static int process( if (g->memory > 0) g->memory_valid = true; - } else if ((streq(controller, "io") && cg_all_unified() > 0) || - (streq(controller, "blkio") && cg_all_unified() <= 0)) { + } else if ((streq(controller, "io") && all_unified) || + (streq(controller, "blkio") && !all_unified)) { _cleanup_fclose_ FILE *f = NULL; _cleanup_free_ char *p = NULL; - bool unified = cg_all_unified() > 0; uint64_t wr = 0, rd = 0; nsec_t timestamp; - r = cg_get_path(controller, path, unified ? "io.stat" : "blkio.io_service_bytes", &p); + r = cg_get_path(controller, path, all_unified ? "io.stat" : "blkio.io_service_bytes", &p); if (r < 0) return r; @@ -325,7 +328,7 @@ static int process( l += strcspn(l, WHITESPACE); l += strspn(l, WHITESPACE); - if (unified) { + if (all_unified) { while (!isempty(l)) { if (sscanf(l, "rbytes=%" SCNu64, &k)) rd += k; diff --git a/src/core/automount.c b/src/core/automount.c index 8ff1ca90f7..99e8047620 100644 --- a/src/core/automount.c +++ b/src/core/automount.c @@ -101,17 +101,17 @@ static void unmount_autofs(Automount *a) { a->pipe_event_source = sd_event_source_unref(a->pipe_event_source); a->pipe_fd = safe_close(a->pipe_fd); - /* If we reload/reexecute things we keep the mount point - * around */ - if (a->where && - (UNIT(a)->manager->exit_code != MANAGER_RELOAD && - UNIT(a)->manager->exit_code != MANAGER_REEXECUTE)) { + /* If we reload/reexecute things we keep the mount point around */ + if (!IN_SET(UNIT(a)->manager->exit_code, MANAGER_RELOAD, MANAGER_REEXECUTE)) { + automount_send_ready(a, a->tokens, -EHOSTDOWN); automount_send_ready(a, a->expire_tokens, -EHOSTDOWN); - r = repeat_unmount(a->where, MNT_DETACH); - if (r < 0) - log_error_errno(r, "Failed to unmount: %m"); + if (a->where) { + r = repeat_unmount(a->where, MNT_DETACH); + if (r < 0) + log_error_errno(r, "Failed to unmount: %m"); + } } } @@ -186,6 +186,22 @@ static int automount_verify(Automount *a) { return 0; } +static int automount_set_where(Automount *a) { + int r; + + assert(a); + + if (a->where) + return 0; + + r = unit_name_to_path(UNIT(a)->id, &a->where); + if (r < 0) + return r; + + path_kill_slashes(a->where); + return 1; +} + static int automount_load(Unit *u) { Automount *a = AUTOMOUNT(u); int r; @@ -201,13 +217,9 @@ static int automount_load(Unit *u) { if (u->load_state == UNIT_LOADED) { Unit *x; - if (!a->where) { - r = unit_name_to_path(u->id, &a->where); - if (r < 0) - return r; - } - - path_kill_slashes(a->where); + r = automount_set_where(a); + if (r < 0) + return r; r = unit_load_related_unit(u, ".mount", &x); if (r < 0) @@ -256,26 +268,30 @@ static int automount_coldplug(Unit *u) { assert(a); assert(a->state == AUTOMOUNT_DEAD); - if (a->deserialized_state != a->state) { + if (a->deserialized_state == a->state) + return 0; + + if (IN_SET(a->deserialized_state, AUTOMOUNT_WAITING, AUTOMOUNT_RUNNING)) { + + r = automount_set_where(a); + if (r < 0) + return r; r = open_dev_autofs(u->manager); if (r < 0) return r; - if (a->deserialized_state == AUTOMOUNT_WAITING || - a->deserialized_state == AUTOMOUNT_RUNNING) { - assert(a->pipe_fd >= 0); + assert(a->pipe_fd >= 0); - r = sd_event_add_io(u->manager->event, &a->pipe_event_source, a->pipe_fd, EPOLLIN, automount_dispatch_io, u); - if (r < 0) - return r; + r = sd_event_add_io(u->manager->event, &a->pipe_event_source, a->pipe_fd, EPOLLIN, automount_dispatch_io, u); + if (r < 0) + return r; - (void) sd_event_source_set_description(a->pipe_event_source, "automount-io"); - if (a->deserialized_state == AUTOMOUNT_RUNNING) { - r = automount_start_expire(a); - if (r < 0) - log_unit_warning_errno(UNIT(a), r, "Failed to start expiration timer, ignoring: %m"); - } + (void) sd_event_source_set_description(a->pipe_event_source, "automount-io"); + if (a->deserialized_state == AUTOMOUNT_RUNNING) { + r = automount_start_expire(a); + if (r < 0) + log_unit_warning_errno(UNIT(a), r, "Failed to start expiration timer, ignoring: %m"); } automount_set_state(a, a->deserialized_state); @@ -733,6 +749,12 @@ static void automount_enter_runnning(Automount *a) { assert(a); + /* If the user masked our unit in the meantime, fail */ + if (UNIT(a)->load_state != UNIT_LOADED) { + log_unit_error(UNIT(a), "Suppressing automount event since unit is no longer loaded."); + goto fail; + } + /* We don't take mount requests anymore if we are supposed to * shut down anyway */ if (unit_stop_pending(UNIT(a))) { diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 5789e2aa82..774b832a63 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -859,8 +859,7 @@ static void cgroup_context_apply(Unit *u, CGroupMask mask, ManagerState state) { if ((mask & CGROUP_MASK_MEMORY) && !is_root) { if (cg_all_unified() > 0) { - uint64_t max; - uint64_t swap_max = CGROUP_LIMIT_MAX; + uint64_t max, swap_max = CGROUP_LIMIT_MAX; if (cgroup_context_has_unified_memory_config(c)) { max = c->memory_max; @@ -1260,9 +1259,9 @@ int unit_watch_cgroup(Unit *u) { return 0; /* Only applies to the unified hierarchy */ - r = cg_unified(SYSTEMD_CGROUP_CONTROLLER); + r = cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER); if (r < 0) - return log_unit_error_errno(u, r, "Failed detect whether the unified hierarchy is used: %m"); + return log_error_errno(r, "Failed to determine whether the name=systemd hierarchy is unified: %m"); if (r == 0) return 0; @@ -1673,6 +1672,8 @@ static int unit_watch_pids_in_path(Unit *u, const char *path) { } int unit_watch_all_pids(Unit *u) { + int r; + assert(u); /* Adds all PIDs from our cgroup to the set of PIDs we @@ -1683,7 +1684,10 @@ int unit_watch_all_pids(Unit *u) { if (!u->cgroup_path) return -ENOENT; - if (cg_unified(SYSTEMD_CGROUP_CONTROLLER) > 0) /* On unified we can use proper notifications */ + r = cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER); + if (r < 0) + return r; + if (r > 0) /* On unified we can use proper notifications */ return 0; return unit_watch_pids_in_path(u, u->cgroup_path); @@ -1756,7 +1760,7 @@ static int on_cgroup_inotify_event(sd_event_source *s, int fd, uint32_t revents, int manager_setup_cgroup(Manager *m) { _cleanup_free_ char *path = NULL; CGroupController c; - int r, all_unified, systemd_unified; + int r, all_unified; char *e; assert(m); @@ -1793,25 +1797,30 @@ int manager_setup_cgroup(Manager *m) { if (r < 0) return log_error_errno(r, "Cannot find cgroup mount point: %m"); - all_unified = cg_all_unified(); - systemd_unified = cg_unified(SYSTEMD_CGROUP_CONTROLLER); - - if (all_unified < 0 || systemd_unified < 0) - return log_error_errno(all_unified < 0 ? all_unified : systemd_unified, - "Couldn't determine if we are running in the unified hierarchy: %m"); + r = cg_unified_flush(); + if (r < 0) + return log_error_errno(r, "Couldn't determine if we are running in the unified hierarchy: %m"); - if (all_unified > 0) + all_unified = cg_all_unified(); + if (r < 0) + return log_error_errno(r, "Couldn't determine whether we are in all unified mode: %m"); + if (r > 0) log_debug("Unified cgroup hierarchy is located at %s.", path); - else if (systemd_unified > 0) - log_debug("Unified cgroup hierarchy is located at %s. Controllers are on legacy hierarchies.", path); - else - log_debug("Using cgroup controller " SYSTEMD_CGROUP_CONTROLLER ". File system hierarchy is at %s.", path); + else { + r = cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER); + if (r < 0) + return log_error_errno(r, "Failed to determine whether systemd's own controller is in unified mode: %m"); + if (r > 0) + log_debug("Unified cgroup hierarchy is located at %s. Controllers are on legacy hierarchies.", path); + else + log_debug("Using cgroup controller " SYSTEMD_CGROUP_CONTROLLER_LEGACY ". File system hierarchy is at %s.", path); + } if (!m->test_run) { const char *scope_path; /* 3. Install agent */ - if (systemd_unified) { + if (cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER) > 0) { /* In the unified hierarchy we can get * cgroup empty notifications via inotify. */ @@ -1997,10 +2006,13 @@ int unit_get_memory_current(Unit *u, uint64_t *ret) { if ((u->cgroup_realized_mask & CGROUP_MASK_MEMORY) == 0) return -ENODATA; - if (cg_all_unified() <= 0) - r = cg_get_attribute("memory", u->cgroup_path, "memory.usage_in_bytes", &v); - else + r = cg_all_unified(); + if (r < 0) + return r; + if (r > 0) r = cg_get_attribute("memory", u->cgroup_path, "memory.current", &v); + else + r = cg_get_attribute("memory", u->cgroup_path, "memory.usage_in_bytes", &v); if (r == -ENOENT) return -ENODATA; if (r < 0) @@ -2042,7 +2054,10 @@ static int unit_get_cpu_usage_raw(Unit *u, nsec_t *ret) { if (!u->cgroup_path) return -ENODATA; - if (cg_all_unified() > 0) { + r = cg_all_unified(); + if (r < 0) + return r; + if (r > 0) { const char *keys[] = { "usage_usec", NULL }; _cleanup_free_ char *val = NULL; uint64_t us; diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 0136d38833..f87b52a266 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -848,13 +848,9 @@ static int method_get_unit_processes(sd_bus_message *message, void *userdata, sd if (r < 0) return r; - r = manager_load_unit(m, name, NULL, error, &u); - if (r < 0) - return r; - - r = bus_unit_check_load_state(u, error); - if (r < 0) - return r; + u = manager_get_unit(m, name); + if (!u) + return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s not loaded.", name); return bus_unit_method_get_processes(message, u, error); } @@ -1342,7 +1338,7 @@ static int verify_run_space(const char *message, sd_bus_error *error) { } int verify_run_space_and_log(const char *message) { - sd_bus_error error = SD_BUS_ERROR_NULL; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; int r; r = verify_run_space(message, &error); @@ -1916,63 +1912,6 @@ static int send_unit_files_changed(sd_bus *bus, void *userdata) { return sd_bus_send(bus, message, NULL); } -static int reply_unit_file_changes_and_free( - Manager *m, - sd_bus_message *message, - int carries_install_info, - UnitFileChange *changes, - unsigned n_changes) { - - _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; - unsigned i; - int r; - - if (unit_file_changes_have_modification(changes, n_changes)) { - r = bus_foreach_bus(m, NULL, send_unit_files_changed, NULL); - if (r < 0) - log_debug_errno(r, "Failed to send UnitFilesChanged signal: %m"); - } - - r = sd_bus_message_new_method_return(message, &reply); - if (r < 0) - goto fail; - - if (carries_install_info >= 0) { - r = sd_bus_message_append(reply, "b", carries_install_info); - if (r < 0) - goto fail; - } - - r = sd_bus_message_open_container(reply, 'a', "(sss)"); - if (r < 0) - goto fail; - - for (i = 0; i < n_changes; i++) - if (changes[i].type >= 0) { - const char *change = unit_file_change_type_to_string(changes[i].type); - assert(change != NULL); - - r = sd_bus_message_append( - reply, "(sss)", - change, - changes[i].path, - changes[i].source); - if (r < 0) - goto fail; - } - - r = sd_bus_message_close_container(reply); - if (r < 0) - goto fail; - - unit_file_changes_free(changes, n_changes); - return sd_bus_send(NULL, reply, NULL); - -fail: - unit_file_changes_free(changes, n_changes); - return r; -} - /* Create an error reply, using the error information from changes[] * if possible, and fall back to generating an error from error code c. * The error message only describes the first error. @@ -1986,12 +1925,14 @@ static int install_error( unsigned n_changes) { int r; unsigned i; - assert(c < 0); for (i = 0; i < n_changes; i++) + switch(changes[i].type) { + case 0 ... INT_MAX: continue; + case -EEXIST: if (changes[i].source) r = sd_bus_error_setf(error, BUS_ERROR_UNIT_EXISTS, @@ -2002,29 +1943,106 @@ static int install_error( "File %s already exists.", changes[i].path); goto found; + case -ERFKILL: r = sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED, "Unit file %s is masked.", changes[i].path); goto found; + case -EADDRNOTAVAIL: r = sd_bus_error_setf(error, BUS_ERROR_UNIT_GENERATED, "Unit %s is transient or generated.", changes[i].path); goto found; + case -ELOOP: r = sd_bus_error_setf(error, BUS_ERROR_UNIT_LINKED, "Refusing to operate on linked unit file %s", changes[i].path); goto found; + + case -ENOENT: + r = sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT, "Unit file %s does not exist.", changes[i].path); + goto found; + default: r = sd_bus_error_set_errnof(error, changes[i].type, "File %s: %m", changes[i].path); goto found; } - r = c; + r = c < 0 ? c : -EINVAL; + found: unit_file_changes_free(changes, n_changes); return r; } +static int reply_unit_file_changes_and_free( + Manager *m, + sd_bus_message *message, + int carries_install_info, + UnitFileChange *changes, + unsigned n_changes, + sd_bus_error *error) { + + _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; + bool bad = false, good = false; + unsigned i; + int r; + + if (unit_file_changes_have_modification(changes, n_changes)) { + r = bus_foreach_bus(m, NULL, send_unit_files_changed, NULL); + if (r < 0) + log_debug_errno(r, "Failed to send UnitFilesChanged signal: %m"); + } + + r = sd_bus_message_new_method_return(message, &reply); + if (r < 0) + goto fail; + + if (carries_install_info >= 0) { + r = sd_bus_message_append(reply, "b", carries_install_info); + if (r < 0) + goto fail; + } + + r = sd_bus_message_open_container(reply, 'a', "(sss)"); + if (r < 0) + goto fail; + + for (i = 0; i < n_changes; i++) { + + if (changes[i].type < 0) { + bad = true; + continue; + } + + r = sd_bus_message_append( + reply, "(sss)", + unit_file_change_type_to_string(changes[i].type), + changes[i].path, + changes[i].source); + if (r < 0) + goto fail; + + good = true; + } + + /* If there was a failed change, and no successful change, then return the first failure as proper method call + * error. */ + if (bad && !good) + return install_error(error, 0, changes, n_changes); + + r = sd_bus_message_close_container(reply); + if (r < 0) + goto fail; + + unit_file_changes_free(changes, n_changes); + return sd_bus_send(NULL, reply, NULL); + +fail: + unit_file_changes_free(changes, n_changes); + return r; +} + static int method_enable_unit_files_generic( sd_bus_message *message, Manager *m, @@ -2061,7 +2079,7 @@ static int method_enable_unit_files_generic( if (r < 0) return install_error(error, r, changes, n_changes); - return reply_unit_file_changes_and_free(m, message, carries_install_info ? r : -1, changes, n_changes); + return reply_unit_file_changes_and_free(m, message, carries_install_info ? r : -1, changes, n_changes, error); } static int method_enable_unit_files(sd_bus_message *message, void *userdata, sd_bus_error *error) { @@ -2130,7 +2148,7 @@ static int method_preset_unit_files_with_mode(sd_bus_message *message, void *use if (r < 0) return install_error(error, r, changes, n_changes); - return reply_unit_file_changes_and_free(m, message, r, changes, n_changes); + return reply_unit_file_changes_and_free(m, message, r, changes, n_changes, error); } static int method_disable_unit_files_generic( @@ -2165,7 +2183,7 @@ static int method_disable_unit_files_generic( if (r < 0) return install_error(error, r, changes, n_changes); - return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes); + return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes, error); } static int method_disable_unit_files(sd_bus_message *message, void *userdata, sd_bus_error *error) { @@ -2200,7 +2218,7 @@ static int method_revert_unit_files(sd_bus_message *message, void *userdata, sd_ if (r < 0) return install_error(error, r, changes, n_changes); - return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes); + return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes, error); } static int method_set_default_target(sd_bus_message *message, void *userdata, sd_bus_error *error) { @@ -2231,7 +2249,7 @@ static int method_set_default_target(sd_bus_message *message, void *userdata, sd if (r < 0) return install_error(error, r, changes, n_changes); - return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes); + return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes, error); } static int method_preset_all_unit_files(sd_bus_message *message, void *userdata, sd_bus_error *error) { @@ -2274,7 +2292,7 @@ static int method_preset_all_unit_files(sd_bus_message *message, void *userdata, if (r < 0) return install_error(error, r, changes, n_changes); - return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes); + return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes, error); } static int method_add_dependency_unit_files(sd_bus_message *message, void *userdata, sd_bus_error *error) { @@ -2314,7 +2332,7 @@ static int method_add_dependency_unit_files(sd_bus_message *message, void *userd if (r < 0) return install_error(error, r, changes, n_changes); - return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes); + return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes, error); } static int method_get_unit_file_links(sd_bus_message *message, void *userdata, sd_bus_error *error) { diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index 60e889e1ef..f15bb2196c 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -1006,6 +1006,10 @@ int bus_unit_method_get_processes(sd_bus_message *message, void *userdata, sd_bu assert(message); + r = mac_selinux_unit_access_check(u, message, "status", error); + if (r < 0) + return r; + pids = set_new(NULL); if (!pids) return -ENOMEM; @@ -1127,7 +1131,7 @@ void bus_unit_send_change_signal(Unit *u) { if (!u->id) return; - r = bus_foreach_bus(u->manager, NULL, u->sent_dbus_new_signal ? send_changed_signal : send_new_signal, u); + r = bus_foreach_bus(u->manager, u->bus_track, u->sent_dbus_new_signal ? send_changed_signal : send_new_signal, u); if (r < 0) log_unit_debug_errno(u, r, "Failed to send unit change signal for %s: %m", u->id); @@ -1173,7 +1177,7 @@ void bus_unit_send_removed_signal(Unit *u) { if (!u->id) return; - r = bus_foreach_bus(u->manager, NULL, send_removed_signal, u); + r = bus_foreach_bus(u->manager, u->bus_track, send_removed_signal, u); if (r < 0) log_unit_debug_errno(u, r, "Failed to send unit remove signal for %s: %m", u->id); } diff --git a/src/core/dbus.c b/src/core/dbus.c index a3f701c064..065f2d81d6 100644 --- a/src/core/dbus.c +++ b/src/core/dbus.c @@ -298,7 +298,7 @@ static int bus_job_find(sd_bus *bus, const char *path, const char *interface, vo } static int find_unit(Manager *m, sd_bus *bus, const char *path, Unit **unit, sd_bus_error *error) { - Unit *u; + Unit *u = NULL; /* just to appease gcc, initialization is not really necessary */ int r; assert(m); @@ -323,15 +323,15 @@ static int find_unit(Manager *m, sd_bus *bus, const char *path, Unit **unit, sd_ return r; u = manager_get_unit_by_pid(m, pid); + if (!u) + return 0; } else { r = manager_load_unit_from_dbus_path(m, path, error, &u); if (r < 0) return 0; + assert(u); } - if (!u) - return 0; - *unit = u; return 1; } @@ -1041,6 +1041,7 @@ int bus_init(Manager *m, bool try_bus_connect) { static void destroy_bus(Manager *m, sd_bus **bus) { Iterator i; + Unit *u; Job *j; assert(m); @@ -1049,6 +1050,17 @@ static void destroy_bus(Manager *m, sd_bus **bus) { if (!*bus) return; + /* Make sure all bus slots watching names are released. */ + HASHMAP_FOREACH(u, m->watch_bus, i) { + if (!u->match_bus_slot) + continue; + + if (sd_bus_slot_get_bus(u->match_bus_slot) != *bus) + continue; + + u->match_bus_slot = sd_bus_slot_unref(u->match_bus_slot); + } + /* Get rid of tracked clients on this bus */ if (m->subscribed && sd_bus_track_get_bus(m->subscribed) == *bus) m->subscribed = sd_bus_track_unref(m->subscribed); diff --git a/src/core/execute.c b/src/core/execute.c index 6041da46d6..d7798387c5 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -1144,11 +1144,13 @@ static int setup_pam( /* Tell the parent that our setup is done. This is especially * important regarding dropping privileges. Otherwise, unit - * setup might race against our setresuid(2) call. */ - barrier_place(&barrier); + * setup might race against our setresuid(2) call. + * + * If the parent aborted, we'll detect this below, hence ignore + * return failure here. */ + (void) barrier_place(&barrier); - /* Check if our parent process might already have - * died? */ + /* Check if our parent process might already have died? */ if (getppid() == parent_pid) { sigset_t ss; @@ -1938,10 +1940,13 @@ static int compile_read_write_paths( return 0; } -static int apply_mount_namespace(Unit *u, const ExecContext *context, - const ExecParameters *params, - ExecRuntime *runtime) { - int r; +static int apply_mount_namespace( + Unit *u, + ExecCommand *command, + const ExecContext *context, + const ExecParameters *params, + ExecRuntime *runtime) { + _cleanup_strv_free_ char **rw = NULL; char *tmp = NULL, *var = NULL; const char *root_dir = NULL, *root_image = NULL; @@ -1953,6 +1958,8 @@ static int apply_mount_namespace(Unit *u, const ExecContext *context, .protect_kernel_modules = context->protect_kernel_modules, .mount_apivfs = context->mount_apivfs, }; + bool apply_restrictions; + int r; assert(context); @@ -1986,16 +1993,18 @@ static int apply_mount_namespace(Unit *u, const ExecContext *context, if (!context->dynamic_user && root_dir) ns_info.ignore_protect_paths = true; + apply_restrictions = (params->flags & EXEC_APPLY_PERMISSIONS) && !command->privileged; + r = setup_namespace(root_dir, root_image, &ns_info, rw, - context->read_only_paths, - context->inaccessible_paths, + apply_restrictions ? context->read_only_paths : NULL, + apply_restrictions ? context->inaccessible_paths : NULL, context->bind_mounts, context->n_bind_mounts, tmp, var, - context->protect_home, - context->protect_system, + apply_restrictions ? context->protect_home : PROTECT_HOME_NO, + apply_restrictions ? context->protect_system : PROTECT_SYSTEM_NO, context->mount_flags, DISSECT_IMAGE_DISCARD_ON_LOOP); @@ -2606,7 +2615,7 @@ static int exec_child( needs_mount_namespace = exec_needs_mount_namespace(context, params, runtime); if (needs_mount_namespace) { - r = apply_mount_namespace(unit, context, params, runtime); + r = apply_mount_namespace(unit, command, context, params, runtime); if (r < 0) { *exit_status = EXIT_NAMESPACE; return r; @@ -2974,7 +2983,7 @@ int exec_spawn(Unit *unit, log_open(); if (error_message) log_struct_errno(LOG_ERR, r, - LOG_MESSAGE_ID(SD_MESSAGE_SPAWN_FAILED), + "MESSAGE_ID=" SD_MESSAGE_SPAWN_FAILED_STR, LOG_UNIT_ID(unit), LOG_UNIT_MESSAGE(unit, "%s: %m", error_message), @@ -2982,7 +2991,7 @@ int exec_spawn(Unit *unit, NULL); else log_struct_errno(LOG_ERR, r, - LOG_MESSAGE_ID(SD_MESSAGE_SPAWN_FAILED), + "MESSAGE_ID=" SD_MESSAGE_SPAWN_FAILED_STR, LOG_UNIT_ID(unit), LOG_UNIT_MESSAGE(unit, "Failed at step %s spawning %s: %m", exit_status_to_string(exit_status, EXIT_STATUS_SYSTEMD), diff --git a/src/core/hostname-setup.c b/src/core/hostname-setup.c index 68be52856b..845e31e1c5 100644 --- a/src/core/hostname-setup.c +++ b/src/core/hostname-setup.c @@ -31,10 +31,10 @@ #include "util.h" int hostname_setup(void) { - int r; _cleanup_free_ char *b = NULL; - const char *hn; bool enoent = false; + const char *hn; + int r; r = read_hostname_config("/etc/hostname", &b); if (r < 0) { @@ -56,7 +56,7 @@ int hostname_setup(void) { if (enoent) log_info("No hostname configured."); - hn = "localhost"; + hn = FALLBACK_HOSTNAME; } r = sethostname_idempotent(hn); diff --git a/src/core/job.c b/src/core/job.c index 00f7d7998f..e2349830a8 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -627,6 +627,8 @@ int job_run_and_invalidate(Job *j) { r = job_finish_and_invalidate(j, JOB_ASSERT, true, false); else if (r == -EOPNOTSUPP) r = job_finish_and_invalidate(j, JOB_UNSUPPORTED, true, false); + else if (r == -ENOLINK) + r = job_finish_and_invalidate(j, JOB_DEPENDENCY, true, false); else if (r == -EAGAIN) job_set_state(j, JOB_WAITING); else if (r < 0) @@ -744,9 +746,8 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) { } static void job_log_status_message(Unit *u, JobType t, JobResult result) { - const char *format; + const char *format, *mid; char buf[LINE_MAX]; - sd_id128_t mid; static const int job_result_log_level[_JOB_RESULT_MAX] = { [JOB_DONE] = LOG_INFO, [JOB_CANCELED] = LOG_INFO, @@ -782,16 +783,19 @@ static void job_log_status_message(Unit *u, JobType t, JobResult result) { switch (t) { case JOB_START: - mid = result == JOB_DONE ? SD_MESSAGE_UNIT_STARTED : SD_MESSAGE_UNIT_FAILED; + if (result == JOB_DONE) + mid = "MESSAGE_ID=" SD_MESSAGE_UNIT_STARTED_STR; + else + mid = "MESSAGE_ID=" SD_MESSAGE_UNIT_FAILED_STR; break; case JOB_RELOAD: - mid = SD_MESSAGE_UNIT_RELOADED; + mid = "MESSAGE_ID=" SD_MESSAGE_UNIT_RELOADED_STR; break; case JOB_STOP: case JOB_RESTART: - mid = SD_MESSAGE_UNIT_STOPPED; + mid = "MESSAGE_ID=" SD_MESSAGE_UNIT_STOPPED_STR; break; default: @@ -804,7 +808,7 @@ static void job_log_status_message(Unit *u, JobType t, JobResult result) { } log_struct(job_result_log_level[result], - LOG_MESSAGE_ID(mid), + mid, LOG_UNIT_ID(u), LOG_MESSAGE("%s", buf), "RESULT=%s", job_result_to_string(result), diff --git a/src/core/killall.c b/src/core/killall.c index 7a9df546ee..3fe9fa2ed0 100644 --- a/src/core/killall.c +++ b/src/core/killall.c @@ -213,7 +213,8 @@ static int killall(int sig, Set *pids, bool send_sighup) { if (get_ctty_devnr(pid, NULL) >= 0) - kill(pid, SIGHUP); + /* it's OK if the process is gone, just ignore the result */ + (void) kill(pid, SIGHUP); } } diff --git a/src/core/macros.systemd.in b/src/core/macros.systemd.in index 8d7ce1c238..a2a7edd1ee 100644 --- a/src/core/macros.systemd.in +++ b/src/core/macros.systemd.in @@ -31,6 +31,8 @@ %_binfmtdir @binfmtdir@ %_systemdgeneratordir @systemgeneratordir@ %_systemdusergeneratordir @usergeneratordir@ +%_systemd_system_env_generator_dir @systemenvgeneratordir@ +%_systemd_user_env_generator_dir @userenvgeneratordir@ %systemd_requires \ Requires(post): systemd \ diff --git a/src/core/main.c b/src/core/main.c index ad2ce1330e..bcf9ea5f25 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1414,10 +1414,17 @@ int main(int argc, char *argv[]) { log_set_upgrade_syslog_to_journal(true); - /* Disable the umask logic */ - if (getpid() == 1) + if (getpid() == 1) { + /* Disable the umask logic */ umask(0); + /* Always reopen /dev/console when running as PID 1 or one of its pre-execve() children. This is + * important so that we never end up logging to any foreign stderr, for example if we have to log in a + * child process right before execve()'ing the actual binary, at a point in time where socket + * activation stderr/stdout area already set up. */ + log_set_always_reopen_console(true); + } + if (getpid() == 1 && detect_container() <= 0) { /* Running outside of a container as PID 1 */ @@ -1830,8 +1837,10 @@ int main(int argc, char *argv[]) { before_startup = now(CLOCK_MONOTONIC); r = manager_startup(m, arg_serialization, fds); - if (r < 0) + if (r < 0) { log_error_errno(r, "Failed to fully start up daemon: %m"); + goto finish; + } /* This will close all file descriptors that were opened, but * not claimed by any unit. */ diff --git a/src/core/manager.c b/src/core/manager.c index e4da945777..cff38e28de 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -52,6 +52,7 @@ #include "dirent-util.h" #include "env-util.h" #include "escape.h" +#include "exec-util.h" #include "exit-status.h" #include "fd-util.h" #include "fileio.h" @@ -102,6 +103,7 @@ static int manager_dispatch_idle_pipe_fd(sd_event_source *source, int fd, uint32 static int manager_dispatch_user_lookup_fd(sd_event_source *source, int fd, uint32_t revents, void *userdata); static int manager_dispatch_jobs_in_progress(sd_event_source *source, usec_t usec, void *userdata); static int manager_dispatch_run_queue(sd_event_source *source, void *userdata); +static int manager_run_environment_generators(Manager *m); static int manager_run_generators(Manager *m); static void manager_watch_jobs_in_progress(Manager *m) { @@ -530,9 +532,9 @@ static int manager_default_environment(Manager *m) { if (MANAGER_IS_SYSTEM(m)) { /* The system manager always starts with a clean * environment for its children. It does not import - * the kernel or the parents exported variables. + * the kernel's or the parents' exported variables. * - * The initial passed environ is untouched to keep + * The initial passed environment is untouched to keep * /proc/self/environ valid; it is used for tagging * the init process inside containers. */ m->environment = strv_new("PATH=" DEFAULT_PATH, @@ -540,11 +542,10 @@ static int manager_default_environment(Manager *m) { /* Import locale variables LC_*= from configuration */ locale_setup(&m->environment); - } else { + } else /* The user manager passes its own environment * along to its children. */ m->environment = strv_copy(environ); - } if (!m->environment) return -ENOMEM; @@ -775,7 +776,10 @@ static int manager_setup_cgroups_agent(Manager *m) { if (!MANAGER_IS_SYSTEM(m)) return 0; - if (cg_unified(SYSTEMD_CGROUP_CONTROLLER) > 0) /* We don't need this anymore on the unified hierarchy */ + r = cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER); + if (r < 0) + return log_error_errno(r, "Failed to determine whether unified cgroups hierarchy is used: %m"); + if (r > 0) /* We don't need this anymore on the unified hierarchy */ return 0; if (m->cgroups_agent_fd < 0) { @@ -1262,6 +1266,10 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds) { if (r < 0) return r; + r = manager_run_environment_generators(m); + if (r < 0) + return r; + /* Make sure the transient directory always exists, so that it remains in the search path */ if (!m->test_run) { r = mkdir_p_label(m->lookup_paths.transient, 0755); @@ -1398,7 +1406,7 @@ tr_abort: } int manager_add_job_by_name(Manager *m, JobType type, const char *name, JobMode mode, sd_bus_error *e, Job **ret) { - Unit *unit; + Unit *unit = NULL; /* just to appease gcc, initialization is not really necessary */ int r; assert(m); @@ -1409,6 +1417,7 @@ int manager_add_job_by_name(Manager *m, JobType type, const char *name, JobMode r = manager_load_unit(m, name, NULL, NULL, &unit); if (r < 0) return r; + assert(unit); return manager_add_job(m, type, unit, mode, e, ret); } @@ -1481,6 +1490,7 @@ int manager_load_unit_prepare( assert(m); assert(name || path); + assert(_ret); /* This will prepare the unit for loading, but not actually * load anything from disk. */ @@ -1528,8 +1538,7 @@ int manager_load_unit_prepare( unit_add_to_dbus_queue(ret); unit_add_to_gc_queue(ret); - if (_ret) - *_ret = ret; + *_ret = ret; return 0; } @@ -1544,6 +1553,7 @@ int manager_load_unit( int r; assert(m); + assert(_ret); /* This will load the service information files, but not actually * start any services or anything. */ @@ -1554,8 +1564,7 @@ int manager_load_unit( manager_dispatch_load_queue(m); - if (_ret) - *_ret = unit_follow_merge(*_ret); + *_ret = unit_follow_merge(*_ret); return 0; } @@ -2170,7 +2179,7 @@ static int manager_dispatch_time_change_fd(sd_event_source *source, int fd, uint assert(m->time_change_fd == fd); log_struct(LOG_DEBUG, - LOG_MESSAGE_ID(SD_MESSAGE_TIME_CHANGE), + "MESSAGE_ID=" SD_MESSAGE_TIME_CHANGE_STR, LOG_MESSAGE("Time has been changed"), NULL); @@ -2436,22 +2445,14 @@ void manager_send_unit_plymouth(Manager *m, Unit *u) { } int manager_open_serialization(Manager *m, FILE **_f) { - int fd = -1; + int fd; FILE *f; assert(_f); - fd = memfd_create("systemd-serialization", MFD_CLOEXEC); - if (fd < 0) { - const char *path; - - path = MANAGER_IS_SYSTEM(m) ? "/run/systemd" : "/tmp"; - fd = open_tmpfile_unlinkable(path, O_RDWR|O_CLOEXEC); - if (fd < 0) - return -errno; - log_debug("Serializing state to %s.", path); - } else - log_debug("Serializing state to memfd."); + fd = open_serialization_fd("systemd-state"); + if (fd < 0) + return fd; f = fdopen(fd, "w+"); if (!f) { @@ -2460,7 +2461,6 @@ int manager_open_serialization(Manager *m, FILE **_f) { } *_f = f; - return 0; } @@ -2468,7 +2468,6 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool switching_root) { Iterator i; Unit *u; const char *t; - char **e; int r; assert(m); @@ -2498,17 +2497,8 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool switching_root) { dual_timestamp_serialize(f, "units-load-finish-timestamp", &m->units_load_finish_timestamp); } - if (!switching_root) { - STRV_FOREACH(e, m->environment) { - _cleanup_free_ char *ce; - - ce = cescape(*e); - if (!ce) - return -ENOMEM; - - fprintf(f, "env=%s\n", *e); - } - } + if (!switching_root) + (void) serialize_environment(f, m->environment); if (m->notify_fd >= 0) { int copy; @@ -2671,21 +2661,9 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) { else if ((val = startswith(l, "units-load-finish-timestamp="))) dual_timestamp_deserialize(val, &m->units_load_finish_timestamp); else if (startswith(l, "env=")) { - _cleanup_free_ char *uce = NULL; - char **e; - - r = cunescape(l + 4, UNESCAPE_RELAX, &uce); + r = deserialize_environment(&m->environment, l); if (r < 0) - goto finish; - - e = strv_env_set(m->environment, uce); - if (!e) { - r = -ENOMEM; - goto finish; - } - - strv_free(m->environment); - m->environment = e; + return r; } else if ((val = startswith(l, "notify-fd="))) { int fd; @@ -2826,6 +2804,10 @@ int manager_reload(Manager *m) { if (q < 0 && r >= 0) r = q; + q = manager_run_environment_generators(m); + if (q < 0 && r >= 0) + r = q; + /* Find new unit paths */ q = manager_run_generators(m); if (q < 0 && r >= 0) @@ -2929,7 +2911,7 @@ static void manager_notify_finished(Manager *m) { initrd_usec = m->userspace_timestamp.monotonic - m->initrd_timestamp.monotonic; log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_STARTUP_FINISHED), + "MESSAGE_ID=" SD_MESSAGE_STARTUP_FINISHED_STR, "KERNEL_USEC="USEC_FMT, kernel_usec, "INITRD_USEC="USEC_FMT, initrd_usec, "USERSPACE_USEC="USEC_FMT, userspace_usec, @@ -2944,7 +2926,7 @@ static void manager_notify_finished(Manager *m) { initrd_usec = 0; log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_STARTUP_FINISHED), + "MESSAGE_ID=" SD_MESSAGE_STARTUP_FINISHED_STR, "KERNEL_USEC="USEC_FMT, kernel_usec, "USERSPACE_USEC="USEC_FMT, userspace_usec, LOG_MESSAGE("Startup finished in %s (kernel) + %s (userspace) = %s.", @@ -2958,7 +2940,7 @@ static void manager_notify_finished(Manager *m) { total_usec = userspace_usec = m->finish_timestamp.monotonic - m->userspace_timestamp.monotonic; log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_USER_STARTUP_FINISHED), + "MESSAGE_ID=" SD_MESSAGE_USER_STARTUP_FINISHED_STR, "USERSPACE_USEC="USEC_FMT, userspace_usec, LOG_MESSAGE("Startup finished in %s.", format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC)), @@ -3017,10 +2999,56 @@ void manager_check_finished(Manager *m) { manager_invalidate_startup_units(m); } +static bool generator_path_any(const char* const* paths) { + char **path; + bool found = false; + + /* Optimize by skipping the whole process by not creating output directories + * if no generators are found. */ + STRV_FOREACH(path, (char**) paths) + if (access(*path, F_OK) == 0) + found = true; + else if (errno != ENOENT) + log_warning_errno(errno, "Failed to open generator directory %s: %m", *path); + + return found; +} + +static const char* system_env_generator_binary_paths[] = { + "/run/systemd/system-environment-generators", + "/etc/systemd/system-environment-generators", + "/usr/local/lib/systemd/system-environment-generators", + SYSTEM_ENV_GENERATOR_PATH, + NULL +}; + +static const char* user_env_generator_binary_paths[] = { + "/run/systemd/user-environment-generators", + "/etc/systemd/user-environment-generators", + "/usr/local/lib/systemd/user-environment-generators", + USER_ENV_GENERATOR_PATH, + NULL +}; + +static int manager_run_environment_generators(Manager *m) { + char **tmp = NULL; /* this is only used in the forked process, no cleanup here */ + const char **paths; + void* args[] = {&tmp, &tmp, &m->environment}; + + if (m->test_run) + return 0; + + paths = MANAGER_IS_SYSTEM(m) ? system_env_generator_binary_paths : user_env_generator_binary_paths; + + if (!generator_path_any(paths)) + return 0; + + return execute_directories(paths, DEFAULT_TIMEOUT_USEC, gather_environment, args, NULL); +} + static int manager_run_generators(Manager *m) { _cleanup_strv_free_ char **paths = NULL; const char *argv[5]; - char **path; int r; assert(m); @@ -3032,18 +3060,9 @@ static int manager_run_generators(Manager *m) { if (!paths) return log_oom(); - /* Optimize by skipping the whole process by not creating output directories - * if no generators are found. */ - STRV_FOREACH(path, paths) { - if (access(*path, F_OK) >= 0) - goto found; - if (errno != ENOENT) - log_warning_errno(errno, "Failed to open generator directory %s: %m", *path); - } - - return 0; + if (!generator_path_any((const char* const*) paths)) + return 0; - found: r = lookup_paths_mkdir_generator(&m->lookup_paths); if (r < 0) goto finish; @@ -3055,7 +3074,8 @@ static int manager_run_generators(Manager *m) { argv[4] = NULL; RUN_WITH_UMASK(0022) - execute_directories((const char* const*) paths, DEFAULT_TIMEOUT_USEC, (char**) argv); + execute_directories((const char* const*) paths, DEFAULT_TIMEOUT_USEC, + NULL, NULL, (char**) argv); finish: lookup_paths_trim_generator(&m->lookup_paths); diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index 9c2bf3a0ef..7295efbf31 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -96,15 +96,15 @@ static const MountPoint mount_table[] = { { "tmpfs", "/run", "tmpfs", "mode=755", MS_NOSUID|MS_NODEV|MS_STRICTATIME, NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "cgroup", "/sys/fs/cgroup", "cgroup2", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, - cg_is_unified_wanted, MNT_FATAL|MNT_IN_CONTAINER }, + cg_is_unified_wanted, MNT_IN_CONTAINER }, { "tmpfs", "/sys/fs/cgroup", "tmpfs", "mode=755", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME, cg_is_legacy_wanted, MNT_FATAL|MNT_IN_CONTAINER }, - { "cgroup", "/sys/fs/cgroup/systemd", "cgroup2", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, - cg_is_unified_systemd_controller_wanted, MNT_IN_CONTAINER }, + { "cgroup", "/sys/fs/cgroup/unified", "cgroup2", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, + cg_is_hybrid_wanted, MNT_IN_CONTAINER }, { "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd,xattr", MS_NOSUID|MS_NOEXEC|MS_NODEV, - cg_is_legacy_systemd_controller_wanted, MNT_IN_CONTAINER }, + cg_is_legacy_wanted, MNT_IN_CONTAINER }, { "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd", MS_NOSUID|MS_NOEXEC|MS_NODEV, - cg_is_legacy_systemd_controller_wanted, MNT_FATAL|MNT_IN_CONTAINER }, + cg_is_legacy_wanted, MNT_FATAL|MNT_IN_CONTAINER }, { "pstore", "/sys/fs/pstore", "pstore", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_NONE }, #ifdef ENABLE_EFI diff --git a/src/core/namespace.c b/src/core/namespace.c index 75dca5b791..4f29217bc4 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -799,7 +799,7 @@ static int make_read_only(MountEntry *m, char **blacklist) { if (mount_entry_read_only(m)) r = bind_remount_recursive(mount_entry_path(m), true, blacklist); - else if (m->mode == PRIVATE_DEV) { /* Superblock can be readonly but the submounts can't*/ + else if (m->mode == PRIVATE_DEV) { /* Superblock can be readonly but the submounts can't */ if (mount(NULL, mount_entry_path(m), NULL, MS_REMOUNT|DEV_MOUNT_OPTIONS|MS_RDONLY, NULL) < 0) r = -errno; } else diff --git a/src/core/scope.c b/src/core/scope.c index 9540fb67d9..a1d5c1cfd5 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -475,7 +475,7 @@ static void scope_sigchld_event(Unit *u, pid_t pid, int code, int status) { /* If the PID set is empty now, then let's finish this off (On unified we use proper notifications) */ - if (cg_unified(SYSTEMD_CGROUP_CONTROLLER) <= 0 && set_isempty(u->pids)) + if (cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER) == 0 && set_isempty(u->pids)) scope_notify_cgroup_empty_event(u); } diff --git a/src/core/service.c b/src/core/service.c index 54074ff7bc..74054887b9 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -849,11 +849,8 @@ static int service_load_pid_file(Service *s, bool may_warn) { return r; r = unit_watch_pid(UNIT(s), pid); - if (r < 0) { - /* FIXME: we need to do something here */ - log_unit_warning_errno(UNIT(s), r, "Failed to watch PID "PID_FMT" for service: %m", pid); - return r; - } + if (r < 0) /* FIXME: we need to do something here */ + return log_unit_warning_errno(UNIT(s), r, "Failed to watch PID "PID_FMT" for service: %m", pid); return 0; } @@ -1374,8 +1371,7 @@ static int service_spawn( return r; r = unit_watch_pid(UNIT(s), pid); - if (r < 0) - /* FIXME: we need to do something here */ + if (r < 0) /* FIXME: we need to do something here */ return r; *_pid = pid; @@ -2938,7 +2934,7 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) { /* If the PID set is empty now, then let's finish this off (On unified we use proper notifications) */ - if (cg_unified(SYSTEMD_CGROUP_CONTROLLER) <= 0 && set_isempty(u->pids)) + if (cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER) == 0 && set_isempty(u->pids)) service_notify_cgroup_empty_event(u); } @@ -3097,6 +3093,8 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags, FDSet *fds) log_unit_warning(u, "Failed to parse MAINPID= field in notification message: %s", e); else if (pid == s->control_pid) log_unit_warning(u, "A control process cannot also be the main process"); + else if (pid == getpid() || pid == 1) + log_unit_warning(u, "Service manager can't be main process, ignoring sd_notify() MAINPID= field"); else { service_set_main_pid(s, pid); unit_watch_pid(UNIT(s), pid); @@ -3286,7 +3284,7 @@ static void service_bus_name_owner_change( if (r >= 0) r = sd_bus_creds_get_pid(creds, &pid); if (r >= 0) { - log_unit_debug(u, "D-Bus name %s is now owned by process %u", name, (unsigned) pid); + log_unit_debug(u, "D-Bus name %s is now owned by process " PID_FMT, name, pid); service_set_main_pid(s, pid); unit_watch_pid(UNIT(s), pid); diff --git a/src/core/shutdown.c b/src/core/shutdown.c index a795d875bb..a2309b7726 100644 --- a/src/core/shutdown.c +++ b/src/core/shutdown.c @@ -32,6 +32,7 @@ #include "alloc-util.h" #include "cgroup-util.h" #include "def.h" +#include "exec-util.h" #include "fileio.h" #include "killall.h" #include "log.h" @@ -321,7 +322,7 @@ int main(int argc, char *argv[]) { arguments[0] = NULL; arguments[1] = arg_verb; arguments[2] = NULL; - execute_directories(dirs, DEFAULT_TIMEOUT_USEC, arguments); + execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, arguments); if (!in_container && !in_initrd() && access("/run/initramfs/shutdown", X_OK) == 0) { diff --git a/src/core/socket.c b/src/core/socket.c index a7b9ada65c..c4da227e09 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -1260,7 +1260,7 @@ static int usbffs_address_create(const char *path) { if (fstat(fd, &st) < 0) return -errno; - /* Check whether this is a regular file (ffs endpoint)*/ + /* Check whether this is a regular file (ffs endpoint) */ if (!S_ISREG(st.st_mode)) return -EEXIST; @@ -1340,11 +1340,11 @@ static int usbffs_write_descs(int fd, Service *s) { if (!s->usb_function_descriptors || !s->usb_function_strings) return -EINVAL; - r = copy_file_fd(s->usb_function_descriptors, fd, false); + r = copy_file_fd(s->usb_function_descriptors, fd, 0); if (r < 0) return r; - return copy_file_fd(s->usb_function_strings, fd, false); + return copy_file_fd(s->usb_function_strings, fd, 0); } static int usbffs_select_ep(const struct dirent *d) { diff --git a/src/core/unit.c b/src/core/unit.c index 90d7eea956..f76b6c30a8 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -402,6 +402,7 @@ void unit_add_to_dbus_queue(Unit *u) { /* Shortcut things if nobody cares */ if (sd_bus_track_count(u->manager->subscribed) <= 0 && + sd_bus_track_count(u->bus_track) <= 0 && set_isempty(u->manager->private_buses)) { u->sent_dbus_new_signal = true; return; @@ -1466,9 +1467,8 @@ static void unit_status_print_starting_stopping(Unit *u, JobType t) { } static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) { - const char *format; + const char *format, *mid; char buf[LINE_MAX]; - sd_id128_t mid; assert(u); @@ -1486,9 +1486,9 @@ static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) { snprintf(buf, sizeof buf, format, unit_description(u)); REENABLE_WARNING; - mid = t == JOB_START ? SD_MESSAGE_UNIT_STARTING : - t == JOB_STOP ? SD_MESSAGE_UNIT_STOPPING : - SD_MESSAGE_UNIT_RELOADING; + mid = t == JOB_START ? "MESSAGE_ID=" SD_MESSAGE_UNIT_STARTING_STR : + t == JOB_STOP ? "MESSAGE_ID=" SD_MESSAGE_UNIT_STOPPING_STR : + "MESSAGE_ID=" SD_MESSAGE_UNIT_RELOADING_STR; /* Note that we deliberately use LOG_MESSAGE() instead of * LOG_UNIT_MESSAGE() here, since this is supposed to mimic @@ -1497,7 +1497,7 @@ static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) { * possible, which means we should avoid the low-level unit * name. */ log_struct(LOG_INFO, - LOG_MESSAGE_ID(mid), + mid, LOG_UNIT_ID(u), LOG_MESSAGE("%s", buf), NULL); @@ -1527,6 +1527,7 @@ int unit_start_limit_test(Unit *u) { } bool unit_shall_confirm_spawn(Unit *u) { + assert(u); if (manager_is_confirm_spawn_disabled(u->manager)) return false; @@ -1537,6 +1538,31 @@ bool unit_shall_confirm_spawn(Unit *u) { return !unit_get_exec_context(u)->same_pgrp; } +static bool unit_verify_deps(Unit *u) { + Unit *other; + Iterator j; + + assert(u); + + /* Checks whether all BindsTo= dependencies of this unit are fulfilled — if they are also combined with + * After=. We do not check Requires= or Requisite= here as they only should have an effect on the job + * processing, but do not have any effect afterwards. We don't check BindsTo= dependencies that are not used in + * conjunction with After= as for them any such check would make things entirely racy. */ + + SET_FOREACH(other, u->dependencies[UNIT_BINDS_TO], j) { + + if (!set_contains(u->dependencies[UNIT_AFTER], other)) + continue; + + if (!UNIT_IS_ACTIVE_OR_RELOADING(unit_active_state(other))) { + log_unit_notice(u, "Bound to unit %s, but unit isn't active.", other->id); + return false; + } + } + + return true; +} + /* Errors: * -EBADR: This unit type does not support starting. * -EALREADY: Unit is already started. @@ -1545,6 +1571,7 @@ bool unit_shall_confirm_spawn(Unit *u) { * -EPROTO: Assert failed * -EINVAL: Unit not loaded * -EOPNOTSUPP: Unit type not supported + * -ENOLINK: The necessary dependencies are not fulfilled. */ int unit_start(Unit *u) { UnitActiveState state; @@ -1590,6 +1617,12 @@ int unit_start(Unit *u) { if (!unit_supported(u)) return -EOPNOTSUPP; + /* Let's make sure that the deps really are in order before we start this. Normally the job engine should have + * taken care of this already, but let's check this here again. After all, our dependencies might not be in + * effect anymore, due to a reload or due to a failed condition. */ + if (!unit_verify_deps(u)) + return -ENOLINK; + /* Forward to the main object, if we aren't it. */ following = unit_following(u); if (following) { @@ -2650,7 +2683,7 @@ void unit_unwatch_bus_name(Unit *u, const char *name) { assert(u); assert(name); - hashmap_remove_value(u->manager->watch_bus, name, u); + (void) hashmap_remove_value(u->manager->watch_bus, name, u); u->match_bus_slot = sd_bus_slot_unref(u->match_bus_slot); } @@ -3121,6 +3154,11 @@ static bool fragment_mtime_newer(const char *path, usec_t mtime, bool path_maske if (!path) return false; + /* If the source is some virtual kernel file system, then we assume we watch it anyway, and hence pretend we + * are never out-of-date. */ + if (PATH_STARTSWITH_SET(path, "/proc", "/sys")) + return false; + if (stat(path, &st) < 0) /* What, cannot access this anymore? */ return true; @@ -3863,10 +3901,10 @@ int unit_kill_context( * should not exist in non-delegated units. On * the unified hierarchy that's different, * there we get proper events. Hence rely on - * them.*/ + * them. */ - if (cg_unified(SYSTEMD_CGROUP_CONTROLLER) > 0 || - (detect_container() == 0 && !unit_cgroup_delegate(u))) + if (cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER) > 0 || + (detect_container() == 0 && !unit_cgroup_delegate(u))) wait_for_exit = true; if (send_sighup) { @@ -4036,7 +4074,7 @@ void unit_warn_if_dir_nonempty(Unit *u, const char* where) { } log_struct(LOG_NOTICE, - LOG_MESSAGE_ID(SD_MESSAGE_OVERMOUNTING), + "MESSAGE_ID=" SD_MESSAGE_OVERMOUNTING_STR, LOG_UNIT_ID(u), LOG_UNIT_MESSAGE(u, "Directory %s to mount over is not empty, mounting anyway.", where), "WHERE=%s", where, @@ -4058,7 +4096,7 @@ int unit_fail_if_symlink(Unit *u, const char* where) { return 0; log_struct(LOG_ERR, - LOG_MESSAGE_ID(SD_MESSAGE_OVERMOUNTING), + "MESSAGE_ID=" SD_MESSAGE_OVERMOUNTING_STR, LOG_UNIT_ID(u), LOG_UNIT_MESSAGE(u, "Mount on symlink %s not allowed.", where), "WHERE=%s", where, diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c index 1f6fb5de1e..4c4f36aea0 100644 --- a/src/coredump/coredump.c +++ b/src/coredump/coredump.c @@ -47,13 +47,14 @@ #include "fileio.h" #include "fs-util.h" #include "io-util.h" -#include "journald-native.h" +#include "journal-importer.h" #include "log.h" #include "macro.h" #include "missing.h" #include "mkdir.h" #include "parse-util.h" #include "process-util.h" +#include "signal-util.h" #include "socket-util.h" #include "special.h" #include "stacktrace.h" @@ -77,8 +78,22 @@ assert_cc(JOURNAL_SIZE_MAX <= DATA_SIZE_MAX); enum { - /* We use this as array indexes for a couple of special fields we use for naming coredumping files, and - * attaching xattrs */ + /* We use this as array indexes for a couple of special fields we use for + * naming coredump files, and attaching xattrs, and for indexing argv[]. + + * Our pattern for man:systectl(1) kernel.core_pattern is such that the + * kernel passes fields until CONTEXT_RLIMIT as arguments in argv[]. After + * that it gets complicated: the kernel passes "comm" as one or more fields + * starting at index CONTEXT_COMM (in other words, full "comm" is under index + * CONTEXT_COMM when it does not contain spaces, which is the common + * case). This mapping is not reversible, so we prefer to retrieve "comm" + * from /proc. We only fall back to argv[CONTEXT_COMM...] when that fails. + * + * In the internal context[] array, fields before CONTEXT_COMM are the + * strings from argv[], so they should not be freed. The strings at indices + * CONTEXT_COMM and higher are allocated by us and should be freed at the + * end. + */ CONTEXT_PID, CONTEXT_UID, CONTEXT_GID, @@ -87,6 +102,7 @@ enum { CONTEXT_RLIMIT, CONTEXT_COMM, CONTEXT_EXE, + CONTEXT_UNIT, _CONTEXT_MAX }; @@ -186,6 +202,7 @@ static int fix_xattr(int fd, const char *context[_CONTEXT_MAX]) { [CONTEXT_GID] = "user.coredump.gid", [CONTEXT_SIGNAL] = "user.coredump.signal", [CONTEXT_TIMESTAMP] = "user.coredump.timestamp", + [CONTEXT_RLIMIT] = "user.coredump.rlimit", [CONTEXT_COMM] = "user.coredump.comm", [CONTEXT_EXE] = "user.coredump.exe", }; @@ -308,7 +325,8 @@ static int save_external_coredump( char **ret_filename, int *ret_node_fd, int *ret_data_fd, - uint64_t *ret_size) { + uint64_t *ret_size, + bool *ret_truncated) { _cleanup_free_ char *fn = NULL, *tmp = NULL; _cleanup_close_ int fd = -1; @@ -352,15 +370,17 @@ static int save_external_coredump( if (fd < 0) return log_error_errno(fd, "Failed to create temporary file for coredump %s: %m", fn); - r = copy_bytes(input_fd, fd, max_size, false); + r = copy_bytes(input_fd, fd, max_size, 0); if (r < 0) { log_error_errno(r, "Cannot store coredump of %s (%s): %m", context[CONTEXT_PID], context[CONTEXT_COMM]); goto fail; - } else if (r == 1) + } + *ret_truncated = r == 1; + if (*ret_truncated) log_struct(LOG_INFO, LOG_MESSAGE("Core file was truncated to %zu bytes.", max_size), "SIZE_LIMIT=%zu", max_size, - LOG_MESSAGE_ID(SD_MESSAGE_TRUNCATED_CORE), + "MESSAGE_ID=" SD_MESSAGE_TRUNCATED_CORE_STR, NULL); if (fstat(fd, &st) < 0) { @@ -675,6 +695,21 @@ static int change_uid_gid(const char *context[]) { return drop_privileges(uid, gid, 0); } +static bool is_journald_crash(const char *context[_CONTEXT_MAX]) { + assert(context); + + return streq_ptr(context[CONTEXT_UNIT], SPECIAL_JOURNALD_SERVICE); +} + +static bool is_pid1_crash(const char *context[_CONTEXT_MAX]) { + assert(context); + + return streq_ptr(context[CONTEXT_UNIT], SPECIAL_INIT_SCOPE) || + streq_ptr(context[CONTEXT_PID], "1"); +} + +#define SUBMIT_COREDUMP_FIELDS 4 + static int submit_coredump( const char *context[_CONTEXT_MAX], struct iovec *iovec, @@ -685,18 +720,22 @@ static int submit_coredump( _cleanup_close_ int coredump_fd = -1, coredump_node_fd = -1; _cleanup_free_ char *core_message = NULL, *filename = NULL, *coredump_data = NULL; uint64_t coredump_size = UINT64_MAX; + bool truncated = false, journald_crash; int r; assert(context); assert(iovec); - assert(n_iovec_allocated >= n_iovec + 3); + assert(n_iovec_allocated >= n_iovec + SUBMIT_COREDUMP_FIELDS); assert(input_fd >= 0); + journald_crash = is_journald_crash(context); + /* Vacuum before we write anything again */ (void) coredump_vacuum(-1, arg_keep_free, arg_max_use); /* Always stream the coredump to disk, if that's possible */ - r = save_external_coredump(context, input_fd, &filename, &coredump_node_fd, &coredump_fd, &coredump_size); + r = save_external_coredump(context, input_fd, + &filename, &coredump_node_fd, &coredump_fd, &coredump_size, &truncated); if (r < 0) /* Skip whole core dumping part */ goto log; @@ -735,8 +774,10 @@ static int submit_coredump( if (r >= 0) core_message = strjoin("MESSAGE=Process ", context[CONTEXT_PID], " (", context[CONTEXT_COMM], ") of user ", - context[CONTEXT_UID], " dumped core.\n\n", - stacktrace); + context[CONTEXT_UID], " dumped core.", + journald_crash ? "\nCoredump diverted to " : "", + journald_crash ? filename : "", + "\n\n", stacktrace); else if (r == -EINVAL) log_warning("Failed to generate stack trace: %s", dwfl_errmsg(dwfl_errno())); else @@ -748,12 +789,27 @@ static int submit_coredump( if (!core_message) #endif log: - core_message = strjoin("MESSAGE=Process ", context[CONTEXT_PID], " (", - context[CONTEXT_COMM], ") of user ", - context[CONTEXT_UID], " dumped core."); + core_message = strjoin("MESSAGE=Process ", context[CONTEXT_PID], + " (", context[CONTEXT_COMM], ") of user ", + context[CONTEXT_UID], " dumped core.", + journald_crash ? "\nCoredump diverted to " : NULL, + journald_crash ? filename : NULL); + if (!core_message) + return log_oom(); + + if (journald_crash) { + /* We cannot log to the journal, so just print the MESSAGE. + * The target was set previously to something safe. */ + log_struct(LOG_ERR, core_message, NULL); + return 0; + } + if (core_message) IOVEC_SET_STRING(iovec[n_iovec++], core_message); + if (truncated) + IOVEC_SET_STRING(iovec[n_iovec++], "COREDUMP_TRUNCATED=1"); + /* Optionally store the entire coredump in the journal */ if (arg_storage == COREDUMP_STORAGE_JOURNAL) { if (coredump_size <= arg_journal_size_max) { @@ -782,17 +838,17 @@ log: return 0; } -static void map_context_fields(const struct iovec *iovec, const char *context[]) { +static void map_context_fields(const struct iovec *iovec, const char* context[]) { - static const char * const context_field_names[_CONTEXT_MAX] = { + static const char * const context_field_names[] = { [CONTEXT_PID] = "COREDUMP_PID=", [CONTEXT_UID] = "COREDUMP_UID=", [CONTEXT_GID] = "COREDUMP_GID=", [CONTEXT_SIGNAL] = "COREDUMP_SIGNAL=", [CONTEXT_TIMESTAMP] = "COREDUMP_TIMESTAMP=", + [CONTEXT_RLIMIT] = "COREDUMP_RLIMIT=", [CONTEXT_COMM] = "COREDUMP_COMM=", [CONTEXT_EXE] = "COREDUMP_EXE=", - [CONTEXT_RLIMIT] = "COREDUMP_RLIMIT=", }; unsigned i; @@ -800,9 +856,12 @@ static void map_context_fields(const struct iovec *iovec, const char *context[]) assert(iovec); assert(context); - for (i = 0; i < _CONTEXT_MAX; i++) { + for (i = 0; i < ELEMENTSOF(context_field_names); i++) { size_t l; + if (!context_field_names[i]) + continue; + l = strlen(context_field_names[i]); if (iovec->iov_len < l) continue; @@ -820,7 +879,7 @@ static void map_context_fields(const struct iovec *iovec, const char *context[]) static int process_socket(int fd) { _cleanup_close_ int coredump_fd = -1; struct iovec *iovec = NULL; - size_t n_iovec = 0, n_iovec_allocated = 0, i; + size_t n_iovec = 0, n_allocated = 0, i, k; const char *context[_CONTEXT_MAX] = {}; int r; @@ -830,6 +889,8 @@ static int process_socket(int fd) { log_parse_environment(); log_open(); + log_debug("Processing coredump received on stdin..."); + for (;;) { union { struct cmsghdr cmsghdr; @@ -843,7 +904,7 @@ static int process_socket(int fd) { ssize_t n; ssize_t l; - if (!GREEDY_REALLOC(iovec, n_iovec_allocated, n_iovec + 3)) { + if (!GREEDY_REALLOC(iovec, n_allocated, n_iovec + SUBMIT_COREDUMP_FIELDS)) { r = log_oom(); goto finish; } @@ -907,7 +968,7 @@ static int process_socket(int fd) { n_iovec++; } - if (!GREEDY_REALLOC(iovec, n_iovec_allocated, n_iovec + 3)) { + if (!GREEDY_REALLOC(iovec, n_allocated, n_iovec + SUBMIT_COREDUMP_FIELDS)) { r = log_oom(); goto finish; } @@ -922,7 +983,14 @@ static int process_socket(int fd) { assert(context[CONTEXT_COMM]); assert(coredump_fd >= 0); - r = submit_coredump(context, iovec, n_iovec_allocated, n_iovec, coredump_fd); + /* Small quirk: the journal fields contain the timestamp padded with six zeroes, so that the kernel-supplied 1s + * granularity timestamps becomes 1µs granularity, i.e. the granularity systemd usually operates in. Since we + * are reconstructing the original kernel context, we chop this off again, here. */ + k = strlen(context[CONTEXT_TIMESTAMP]); + if (k > 6) + context[CONTEXT_TIMESTAMP] = strndupa(context[CONTEXT_TIMESTAMP], k - 6); + + r = submit_coredump(context, iovec, n_allocated, n_iovec, coredump_fd); finish: for (i = 0; i < n_iovec; i++) @@ -998,284 +1066,317 @@ static int send_iovec(const struct iovec iovec[], size_t n_iovec, int input_fd) return 0; } -static int process_special_crash(const char *context[], int input_fd) { - _cleanup_close_ int coredump_fd = -1, coredump_node_fd = -1; - _cleanup_free_ char *filename = NULL; - uint64_t coredump_size; - int r; - - assert(context); - assert(input_fd >= 0); - - /* If we are pid1 or journald, we cut things short, don't write to the journal, but still create a coredump. */ - - if (arg_storage != COREDUMP_STORAGE_NONE) - arg_storage = COREDUMP_STORAGE_EXTERNAL; +static char* set_iovec_field(struct iovec iovec[27], size_t *n_iovec, const char *field, const char *value) { + char *x; - r = save_external_coredump(context, input_fd, &filename, &coredump_node_fd, &coredump_fd, &coredump_size); - if (r < 0) - return r; - - r = maybe_remove_external_coredump(filename, coredump_size); - if (r < 0) - return r; + x = strappend(field, value); + if (x) + IOVEC_SET_STRING(iovec[(*n_iovec)++], x); + return x; +} - log_notice("Detected coredump of the journal daemon or PID 1, diverted to %s.", filename); +static char* set_iovec_field_free(struct iovec iovec[27], size_t *n_iovec, const char *field, char *value) { + char *x; - return 0; + x = set_iovec_field(iovec, n_iovec, field, value); + free(value); + return x; } -static int process_kernel(int argc, char* argv[]) { +static int gather_pid_metadata( + char* context[_CONTEXT_MAX], + char **comm_fallback, + struct iovec *iovec, size_t *n_iovec) { + + /* We need 26 empty slots in iovec! + * + * Note that if we fail on oom later on, we do not roll-back changes to the iovec structure. (It remains valid, + * with the first n_iovec fields initialized.) */ - /* The small core field we allocate on the stack, to keep things simple */ - char - *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL, - *core_session = NULL, *core_exe = NULL, *core_comm = NULL, *core_cmdline = NULL, - *core_cgroup = NULL, *core_cwd = NULL, *core_root = NULL, *core_unit = NULL, - *core_user_unit = NULL, *core_slice = NULL, *core_timestamp = NULL, *core_rlimit = NULL; - - /* The larger ones we allocate on the heap */ - _cleanup_free_ char - *core_owner_uid = NULL, *core_open_fds = NULL, *core_proc_status = NULL, - *core_proc_maps = NULL, *core_proc_limits = NULL, *core_proc_cgroup = NULL, *core_environ = NULL, - *core_proc_mountinfo = NULL, *core_container_cmdline = NULL; - - _cleanup_free_ char *exe = NULL, *comm = NULL; - const char *context[_CONTEXT_MAX]; - bool proc_self_root_is_slash; - struct iovec iovec[27]; - size_t n_iovec = 0; uid_t owner_uid; - const char *p; pid_t pid; char *t; - int r; - - if (argc < CONTEXT_COMM + 1) { - log_error("Not enough arguments passed from kernel (%i, expected %i).", argc - 1, CONTEXT_COMM + 1 - 1); - return -EINVAL; - } + const char *p; + int r, signo; - r = parse_pid(argv[CONTEXT_PID + 1], &pid); + r = parse_pid(context[CONTEXT_PID], &pid); if (r < 0) - return log_error_errno(r, "Failed to parse PID."); + return log_error_errno(r, "Failed to parse PID \"%s\": %m", context[CONTEXT_PID]); - r = get_process_comm(pid, &comm); + r = get_process_comm(pid, &context[CONTEXT_COMM]); if (r < 0) { log_warning_errno(r, "Failed to get COMM, falling back to the command line: %m"); - comm = strv_join(argv + CONTEXT_COMM + 1, " "); - if (!comm) + context[CONTEXT_COMM] = strv_join(comm_fallback, " "); + if (!context[CONTEXT_COMM]) return log_oom(); } - r = get_process_exe(pid, &exe); + r = get_process_exe(pid, &context[CONTEXT_EXE]); if (r < 0) log_warning_errno(r, "Failed to get EXE, ignoring: %m"); - context[CONTEXT_PID] = argv[CONTEXT_PID + 1]; - context[CONTEXT_UID] = argv[CONTEXT_UID + 1]; - context[CONTEXT_GID] = argv[CONTEXT_GID + 1]; - context[CONTEXT_SIGNAL] = argv[CONTEXT_SIGNAL + 1]; - context[CONTEXT_TIMESTAMP] = argv[CONTEXT_TIMESTAMP + 1]; - context[CONTEXT_RLIMIT] = argv[CONTEXT_RLIMIT + 1]; - context[CONTEXT_COMM] = comm; - context[CONTEXT_EXE] = exe; - - if (cg_pid_get_unit(pid, &t) >= 0) { + if (cg_pid_get_unit(pid, &context[CONTEXT_UNIT]) >= 0) { + if (!is_journald_crash((const char**) context)) { + /* OK, now we know it's not the journal, hence we can make use of it now. */ + log_set_target(LOG_TARGET_JOURNAL_OR_KMSG); + log_open(); + } /* If this is PID 1 disable coredump collection, we'll unlikely be able to process it later on. */ - if (streq(t, SPECIAL_INIT_SCOPE)) { + if (is_pid1_crash((const char**) context)) { log_notice("Due to PID 1 having crashed coredump collection will now be turned off."); (void) write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", 0); } - /* Let's avoid dead-locks when processing journald and init crashes, as socket activation and logging - * are unlikely to work then. */ - if (STR_IN_SET(t, SPECIAL_JOURNALD_SERVICE, SPECIAL_INIT_SCOPE)) { - free(t); - return process_special_crash(context, STDIN_FILENO); - } - - core_unit = strjoina("COREDUMP_UNIT=", t); - free(t); - - IOVEC_SET_STRING(iovec[n_iovec++], core_unit); + set_iovec_field(iovec, n_iovec, "COREDUMP_UNIT=", context[CONTEXT_UNIT]); } - /* OK, now we know it's not the journal, hence we can make use of it now. */ - log_set_target(LOG_TARGET_JOURNAL_OR_KMSG); - log_open(); + if (cg_pid_get_user_unit(pid, &t) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_USER_UNIT=", t); - if (cg_pid_get_user_unit(pid, &t) >= 0) { - core_user_unit = strjoina("COREDUMP_USER_UNIT=", t); - free(t); + /* The next few are mandatory */ + if (!set_iovec_field(iovec, n_iovec, "COREDUMP_PID=", context[CONTEXT_PID])) + return log_oom(); - IOVEC_SET_STRING(iovec[n_iovec++], core_user_unit); - } + if (!set_iovec_field(iovec, n_iovec, "COREDUMP_UID=", context[CONTEXT_UID])) + return log_oom(); - core_pid = strjoina("COREDUMP_PID=", context[CONTEXT_PID]); - IOVEC_SET_STRING(iovec[n_iovec++], core_pid); + if (!set_iovec_field(iovec, n_iovec, "COREDUMP_GID=", context[CONTEXT_GID])) + return log_oom(); - core_uid = strjoina("COREDUMP_UID=", context[CONTEXT_UID]); - IOVEC_SET_STRING(iovec[n_iovec++], core_uid); + if (!set_iovec_field(iovec, n_iovec, "COREDUMP_SIGNAL=", context[CONTEXT_SIGNAL])) + return log_oom(); - core_gid = strjoina("COREDUMP_GID=", context[CONTEXT_GID]); - IOVEC_SET_STRING(iovec[n_iovec++], core_gid); + if (!set_iovec_field(iovec, n_iovec, "COREDUMP_RLIMIT=", context[CONTEXT_RLIMIT])) + return log_oom(); - core_signal = strjoina("COREDUMP_SIGNAL=", context[CONTEXT_SIGNAL]); - IOVEC_SET_STRING(iovec[n_iovec++], core_signal); + if (!set_iovec_field(iovec, n_iovec, "COREDUMP_COMM=", context[CONTEXT_COMM])) + return log_oom(); - core_rlimit = strjoina("COREDUMP_RLIMIT=", context[CONTEXT_RLIMIT]); - IOVEC_SET_STRING(iovec[n_iovec++], core_rlimit); + if (context[CONTEXT_EXE] && + !set_iovec_field(iovec, n_iovec, "COREDUMP_EXE=", context[CONTEXT_EXE])) + return log_oom(); - if (sd_pid_get_session(pid, &t) >= 0) { - core_session = strjoina("COREDUMP_SESSION=", t); - free(t); - - IOVEC_SET_STRING(iovec[n_iovec++], core_session); - } + if (sd_pid_get_session(pid, &t) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_SESSION=", t); if (sd_pid_get_owner_uid(pid, &owner_uid) >= 0) { - r = asprintf(&core_owner_uid, "COREDUMP_OWNER_UID=" UID_FMT, owner_uid); + r = asprintf(&t, "COREDUMP_OWNER_UID=" UID_FMT, owner_uid); if (r > 0) - IOVEC_SET_STRING(iovec[n_iovec++], core_owner_uid); + IOVEC_SET_STRING(iovec[(*n_iovec)++], t); } - if (sd_pid_get_slice(pid, &t) >= 0) { - core_slice = strjoina("COREDUMP_SLICE=", t); - free(t); + if (sd_pid_get_slice(pid, &t) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_SLICE=", t); - IOVEC_SET_STRING(iovec[n_iovec++], core_slice); - } + if (get_process_cmdline(pid, 0, false, &t) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_CMDLINE=", t); - if (comm) { - core_comm = strjoina("COREDUMP_COMM=", comm); - IOVEC_SET_STRING(iovec[n_iovec++], core_comm); - } + if (cg_pid_get_path_shifted(pid, NULL, &t) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_CGROUP=", t); - if (exe) { - core_exe = strjoina("COREDUMP_EXE=", exe); - IOVEC_SET_STRING(iovec[n_iovec++], core_exe); - } + if (compose_open_fds(pid, &t) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_OPEN_FDS=", t); - if (get_process_cmdline(pid, 0, false, &t) >= 0) { - core_cmdline = strjoina("COREDUMP_CMDLINE=", t); - free(t); + p = procfs_file_alloca(pid, "status"); + if (read_full_file(p, &t, NULL) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_PROC_STATUS=", t); - IOVEC_SET_STRING(iovec[n_iovec++], core_cmdline); - } + p = procfs_file_alloca(pid, "maps"); + if (read_full_file(p, &t, NULL) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_PROC_MAPS=", t); - if (cg_pid_get_path_shifted(pid, NULL, &t) >= 0) { - core_cgroup = strjoina("COREDUMP_CGROUP=", t); - free(t); + p = procfs_file_alloca(pid, "limits"); + if (read_full_file(p, &t, NULL) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_PROC_LIMITS=", t); - IOVEC_SET_STRING(iovec[n_iovec++], core_cgroup); - } + p = procfs_file_alloca(pid, "cgroup"); + if (read_full_file(p, &t, NULL) >=0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_PROC_CGROUP=", t); - if (compose_open_fds(pid, &t) >= 0) { - core_open_fds = strappend("COREDUMP_OPEN_FDS=", t); - free(t); + p = procfs_file_alloca(pid, "mountinfo"); + if (read_full_file(p, &t, NULL) >=0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_PROC_MOUNTINFO=", t); - if (core_open_fds) - IOVEC_SET_STRING(iovec[n_iovec++], core_open_fds); - } + if (get_process_cwd(pid, &t) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_CWD=", t); - p = procfs_file_alloca(pid, "status"); - if (read_full_file(p, &t, NULL) >= 0) { - core_proc_status = strappend("COREDUMP_PROC_STATUS=", t); - free(t); + if (get_process_root(pid, &t) >= 0) { + bool proc_self_root_is_slash; - if (core_proc_status) - IOVEC_SET_STRING(iovec[n_iovec++], core_proc_status); - } + proc_self_root_is_slash = strcmp(t, "/") == 0; - p = procfs_file_alloca(pid, "maps"); - if (read_full_file(p, &t, NULL) >= 0) { - core_proc_maps = strappend("COREDUMP_PROC_MAPS=", t); - free(t); + set_iovec_field_free(iovec, n_iovec, "COREDUMP_ROOT=", t); - if (core_proc_maps) - IOVEC_SET_STRING(iovec[n_iovec++], core_proc_maps); + /* If the process' root is "/", then there is a chance it has + * mounted own root and hence being containerized. */ + if (proc_self_root_is_slash && get_process_container_parent_cmdline(pid, &t) > 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_CONTAINER_CMDLINE=", t); } - p = procfs_file_alloca(pid, "limits"); - if (read_full_file(p, &t, NULL) >= 0) { - core_proc_limits = strappend("COREDUMP_PROC_LIMITS=", t); - free(t); + if (get_process_environ(pid, &t) >= 0) + set_iovec_field_free(iovec, n_iovec, "COREDUMP_ENVIRON=", t); - if (core_proc_limits) - IOVEC_SET_STRING(iovec[n_iovec++], core_proc_limits); - } + t = strjoin("COREDUMP_TIMESTAMP=", context[CONTEXT_TIMESTAMP], "000000", NULL); + if (t) + IOVEC_SET_STRING(iovec[(*n_iovec)++], t); - p = procfs_file_alloca(pid, "cgroup"); - if (read_full_file(p, &t, NULL) >=0) { - core_proc_cgroup = strappend("COREDUMP_PROC_CGROUP=", t); - free(t); + if (safe_atoi(context[CONTEXT_SIGNAL], &signo) >= 0 && SIGNAL_VALID(signo)) + set_iovec_field(iovec, n_iovec, "COREDUMP_SIGNAL_NAME=SIG", signal_to_string(signo)); - if (core_proc_cgroup) - IOVEC_SET_STRING(iovec[n_iovec++], core_proc_cgroup); - } + return 0; /* we successfully acquired all metadata */ +} - p = procfs_file_alloca(pid, "mountinfo"); - if (read_full_file(p, &t, NULL) >=0) { - core_proc_mountinfo = strappend("COREDUMP_PROC_MOUNTINFO=", t); - free(t); +static int process_kernel(int argc, char* argv[]) { - if (core_proc_mountinfo) - IOVEC_SET_STRING(iovec[n_iovec++], core_proc_mountinfo); - } + char* context[_CONTEXT_MAX] = {}; + struct iovec iovec[28 + SUBMIT_COREDUMP_FIELDS]; + size_t i, n_iovec, n_to_free = 0; + int r; - if (get_process_cwd(pid, &t) >= 0) { - core_cwd = strjoina("COREDUMP_CWD=", t); - free(t); + log_debug("Processing coredump received from the kernel..."); - IOVEC_SET_STRING(iovec[n_iovec++], core_cwd); + if (argc < CONTEXT_COMM + 1) { + log_error("Not enough arguments passed by the kernel (%i, expected %i).", argc - 1, CONTEXT_COMM + 1 - 1); + return -EINVAL; } - if (get_process_root(pid, &t) >= 0) { - core_root = strjoina("COREDUMP_ROOT=", t); + context[CONTEXT_PID] = argv[1 + CONTEXT_PID]; + context[CONTEXT_UID] = argv[1 + CONTEXT_UID]; + context[CONTEXT_GID] = argv[1 + CONTEXT_GID]; + context[CONTEXT_SIGNAL] = argv[1 + CONTEXT_SIGNAL]; + context[CONTEXT_TIMESTAMP] = argv[1 + CONTEXT_TIMESTAMP]; + context[CONTEXT_RLIMIT] = argv[1 + CONTEXT_RLIMIT]; - IOVEC_SET_STRING(iovec[n_iovec++], core_root); + r = gather_pid_metadata(context, argv + 1 + CONTEXT_COMM, iovec, &n_to_free); + if (r < 0) + goto finish; - /* If the process' root is "/", then there is a chance it has - * mounted own root and hence being containerized. */ - proc_self_root_is_slash = strcmp(t, "/") == 0; - free(t); - if (proc_self_root_is_slash && get_process_container_parent_cmdline(pid, &t) > 0) { - core_container_cmdline = strappend("COREDUMP_CONTAINER_CMDLINE=", t); - free(t); + n_iovec = n_to_free; - if (core_container_cmdline) - IOVEC_SET_STRING(iovec[n_iovec++], core_container_cmdline); - } + IOVEC_SET_STRING(iovec[n_iovec++], "MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR); + + assert_cc(2 == LOG_CRIT); + IOVEC_SET_STRING(iovec[n_iovec++], "PRIORITY=2"); + + assert(n_iovec <= ELEMENTSOF(iovec)); + + if (is_journald_crash((const char**) context) || is_pid1_crash((const char**) context)) + r = submit_coredump((const char**) context, + iovec, ELEMENTSOF(iovec), n_iovec, + STDIN_FILENO); + else + r = send_iovec(iovec, n_iovec, STDIN_FILENO); + + finish: + for (i = 0; i < n_to_free; i++) + free(iovec[i].iov_base); + + /* Those fields are allocated by gather_pid_metadata */ + free(context[CONTEXT_COMM]); + free(context[CONTEXT_EXE]); + free(context[CONTEXT_UNIT]); + + return r; +} + +static int process_backtrace(int argc, char *argv[]) { + char *context[_CONTEXT_MAX] = {}; + _cleanup_free_ char *message = NULL; + _cleanup_free_ struct iovec *iovec = NULL; + size_t n_iovec, n_allocated, n_to_free = 0, i; + int r; + JournalImporter importer = { + .fd = STDIN_FILENO, + }; + + log_debug("Processing backtrace on stdin..."); + + if (argc < CONTEXT_COMM + 1) { + log_error("Not enough arguments passed (%i, expected %i).", argc - 1, CONTEXT_COMM + 1 - 1); + return -EINVAL; } - if (get_process_environ(pid, &t) >= 0) { - core_environ = strappend("COREDUMP_ENVIRON=", t); - free(t); + context[CONTEXT_PID] = argv[2 + CONTEXT_PID]; + context[CONTEXT_UID] = argv[2 + CONTEXT_UID]; + context[CONTEXT_GID] = argv[2 + CONTEXT_GID]; + context[CONTEXT_SIGNAL] = argv[2 + CONTEXT_SIGNAL]; + context[CONTEXT_TIMESTAMP] = argv[2 + CONTEXT_TIMESTAMP]; + context[CONTEXT_RLIMIT] = argv[2 + CONTEXT_RLIMIT]; + + n_allocated = 33 + COREDUMP_STORAGE_EXTERNAL; + /* 25 metadata, 2 static, +unknown input, 4 storage, rounded up */ + iovec = new(struct iovec, n_allocated); + if (!iovec) + return log_oom(); + + r = gather_pid_metadata(context, argv + 2 + CONTEXT_COMM, iovec, &n_to_free); + if (r < 0) + goto finish; + if (r > 0) { + /* This was a special crash, and has already been processed. */ + r = 0; + goto finish; + } + n_iovec = n_to_free; - if (core_environ) - IOVEC_SET_STRING(iovec[n_iovec++], core_environ); + for (;;) { + r = journal_importer_process_data(&importer); + if (r < 0) { + log_error_errno(r, "Failed to parse journal entry on stdin: %m"); + goto finish; + } + if (r == 1) + break; } - core_timestamp = strjoina("COREDUMP_TIMESTAMP=", context[CONTEXT_TIMESTAMP], "000000"); - IOVEC_SET_STRING(iovec[n_iovec++], core_timestamp); + if (!GREEDY_REALLOC(iovec, n_allocated, n_iovec + importer.iovw.count + 2)) + return log_oom(); - IOVEC_SET_STRING(iovec[n_iovec++], "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1"); + if (journal_importer_eof(&importer)) { + log_warning("Did not receive a full journal entry on stdin, ignoring message sent by reporter"); + message = strjoin("MESSAGE=Process ", context[CONTEXT_PID], + " (", context[CONTEXT_COMM], ")" + " of user ", context[CONTEXT_UID], + " failed with ", context[CONTEXT_SIGNAL]); + if (!message) { + r = log_oom(); + goto finish; + } + IOVEC_SET_STRING(iovec[n_iovec++], message); + } else { + for (i = 0; i < importer.iovw.count; i++) + iovec[n_iovec++] = importer.iovw.iovec[i]; + } + + IOVEC_SET_STRING(iovec[n_iovec++], "MESSAGE_ID=" SD_MESSAGE_BACKTRACE_STR); assert_cc(2 == LOG_CRIT); IOVEC_SET_STRING(iovec[n_iovec++], "PRIORITY=2"); - assert(n_iovec <= ELEMENTSOF(iovec)); + assert(n_iovec <= n_allocated); - return send_iovec(iovec, n_iovec, STDIN_FILENO); + r = sd_journal_sendv(iovec, n_iovec); + if (r < 0) + log_error_errno(r, "Failed to log backtrace: %m"); + + finish: + for (i = 0; i < n_to_free; i++) + free(iovec[i].iov_base); + + /* Those fields are allocated by gather_pid_metadata */ + free(context[CONTEXT_COMM]); + free(context[CONTEXT_EXE]); + free(context[CONTEXT_UNIT]); + + return r; } int main(int argc, char *argv[]) { int r; - /* First, log to a safe place, since we don't know what crashed and it might be journald which we'd rather not - * log to then. */ + /* First, log to a safe place, since we don't know what crashed and it might + * be journald which we'd rather not log to then. */ log_set_target(LOG_TARGET_KMSG); log_open(); @@ -1295,11 +1396,14 @@ int main(int argc, char *argv[]) { goto finish; } - /* If we got an fd passed, we are running in coredumpd mode. Otherwise we are invoked from the kernel as - * coredump handler */ - if (r == 0) - r = process_kernel(argc, argv); - else if (r == 1) + /* If we got an fd passed, we are running in coredumpd mode. Otherwise we + * are invoked from the kernel as coredump handler. */ + if (r == 0) { + if (streq_ptr(argv[1], "--backtrace")) + r = process_backtrace(argc, argv); + else + r = process_kernel(argc, argv); + } else if (r == 1) r = process_socket(SD_LISTEN_FDS_START); else { log_error("Received unexpected number of file descriptors."); diff --git a/src/coredump/coredumpctl.c b/src/coredump/coredumpctl.c index 646757f9d9..114a13fc78 100644 --- a/src/coredump/coredumpctl.c +++ b/src/coredump/coredumpctl.c @@ -24,28 +24,37 @@ #include <string.h> #include <unistd.h> +#include "sd-bus.h" #include "sd-journal.h" +#include "sd-messages.h" #include "alloc-util.h" +#include "bus-error.h" +#include "bus-util.h" #include "compress.h" #include "fd-util.h" #include "fileio.h" #include "fs-util.h" #include "journal-internal.h" +#include "journal-util.h" #include "log.h" #include "macro.h" #include "pager.h" #include "parse-util.h" #include "path-util.h" #include "process-util.h" -#include "set.h" #include "sigbus.h" #include "signal-util.h" #include "string-util.h" +#include "strv.h" #include "terminal-util.h" #include "user-util.h" #include "util.h" +#define SHORT_BUS_CALL_TIMEOUT_USEC (3 * USEC_PER_SEC) + +static usec_t arg_since = USEC_INFINITY, arg_until = USEC_INFINITY; + static enum { ACTION_NONE, ACTION_INFO, @@ -59,36 +68,11 @@ static bool arg_no_pager = false; static int arg_no_legend = false; static int arg_one = false; static FILE* arg_output = NULL; +static bool arg_reverse = false; +static char** arg_matches = NULL; +static bool arg_quiet = false; -static Set *new_matches(void) { - Set *set; - char *tmp; - int r; - - set = set_new(NULL); - if (!set) { - log_oom(); - return NULL; - } - - tmp = strdup("MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1"); - if (!tmp) { - log_oom(); - set_free(set); - return NULL; - } - - r = set_consume(set, tmp); - if (r < 0) { - log_error_errno(r, "failed to add to set: %m"); - set_free(set); - return NULL; - } - - return set; -} - -static int add_match(Set *set, const char *match) { +static int add_match(sd_journal *j, const char *match) { _cleanup_free_ char *p = NULL; char *pattern = NULL; const char* prefix; @@ -100,7 +84,8 @@ static int add_match(Set *set, const char *match) { else if (strchr(match, '/')) { r = path_make_absolute_cwd(match, &p); if (r < 0) - goto fail; + return log_error_errno(r, "path_make_absolute_cwd(\"%s\"): %m", match); + match = p; prefix = "COREDUMP_EXE="; } else if (parse_pid(match, &pid) >= 0) @@ -109,19 +94,35 @@ static int add_match(Set *set, const char *match) { prefix = "COREDUMP_COMM="; pattern = strjoin(prefix, match); - if (!pattern) { - r = -ENOMEM; - goto fail; - } + if (!pattern) + return log_oom(); + + log_debug("Adding match: %s", pattern); + r = sd_journal_add_match(j, pattern, 0); + if (r < 0) + return log_error_errno(r, "Failed to add match \"%s\": %m", match); + return 0; +} + +static int add_matches(sd_journal *j) { + char **match; + int r; - log_debug("Adding pattern: %s", pattern); - r = set_consume(set, pattern); + r = sd_journal_add_match(j, "MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR, 0); if (r < 0) - goto fail; + return log_error_errno(r, "Failed to add match \"%s\": %m", "MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR); + + r = sd_journal_add_match(j, "MESSAGE_ID=" SD_MESSAGE_BACKTRACE_STR, 0); + if (r < 0) + return log_error_errno(r, "Failed to add match \"%s\": %m", "MESSAGE_ID=" SD_MESSAGE_BACKTRACE_STR); + + STRV_FOREACH(match, arg_matches) { + r = add_match(j, *match); + if (r < 0) + return r; + } return 0; -fail: - return log_error_errno(r, "Failed to add match: %m"); } static void help(void) { @@ -133,10 +134,13 @@ static void help(void) { " --no-pager Do not pipe output into a pager\n" " --no-legend Do not print the column headers.\n" " -1 Show information about most recent entry only\n" + " -S --since=DATE Only print coredumps since the date\n" + " -U --until=DATE Only print coredumps until the date\n" + " -r --reverse Show the newest entries first\n" " -F --field=FIELD List all values a certain field takes\n" - " -o --output=FILE Write output to FILE\n\n" + " -o --output=FILE Write output to FILE\n" " -D --directory=DIR Use journal files from directory\n\n" - + " -q --quiet Do not show info messages and privilege warning\n" "Commands:\n" " list [MATCHES...] List available coredumps (default)\n" " info [MATCHES...] Show detailed information about one or more coredumps\n" @@ -145,14 +149,14 @@ static void help(void) { , program_invocation_short_name); } -static int parse_argv(int argc, char *argv[], Set *matches) { +static int parse_argv(int argc, char *argv[]) { enum { ARG_VERSION = 0x100, ARG_NO_PAGER, ARG_NO_LEGEND, }; - int r, c; + int c, r; static const struct option options[] = { { "help", no_argument, NULL, 'h' }, @@ -162,15 +166,18 @@ static int parse_argv(int argc, char *argv[], Set *matches) { { "output", required_argument, NULL, 'o' }, { "field", required_argument, NULL, 'F' }, { "directory", required_argument, NULL, 'D' }, + { "reverse", no_argument, NULL, 'r' }, + { "since", required_argument, NULL, 'S' }, + { "until", required_argument, NULL, 'U' }, + { "quiet", no_argument, NULL, 'q' }, {} }; assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "ho:F:1D:", options, NULL)) >= 0) + while ((c = getopt_long(argc, argv, "ho:F:1D:rS:U:q", options, NULL)) >= 0) switch(c) { - case 'h': arg_action = ACTION_NONE; help(); @@ -200,6 +207,18 @@ static int parse_argv(int argc, char *argv[], Set *matches) { break; + case 'S': + r = parse_timestamp(optarg, &arg_since); + if (r < 0) + return log_error_errno(r, "Failed to parse timestamp: %s", optarg); + break; + + case 'U': + r = parse_timestamp(optarg, &arg_until); + if (r < 0) + return log_error_errno(r, "Failed to parse timestamp: %s", optarg); + break; + case 'F': if (arg_field) { log_error("cannot use --field/-F more than once"); @@ -216,6 +235,14 @@ static int parse_argv(int argc, char *argv[], Set *matches) { arg_directory = optarg; break; + case 'r': + arg_reverse = true; + break; + + case 'q': + arg_quiet = true; + break; + case '?': return -EINVAL; @@ -223,6 +250,12 @@ static int parse_argv(int argc, char *argv[], Set *matches) { assert_not_reached("Unhandled option"); } + if (arg_since != USEC_INFINITY && arg_until != USEC_INFINITY && + arg_since > arg_until) { + log_error("--since= must be before --until=."); + return -EINVAL; + } + if (optind < argc) { const char *cmd = argv[optind++]; if (streq(cmd, "list")) @@ -244,12 +277,8 @@ static int parse_argv(int argc, char *argv[], Set *matches) { return -EINVAL; } - while (optind < argc) { - r = add_match(matches, argv[optind]); - if (r != 0) - return r; - optind++; - } + if (optind < argc) + arg_matches = argv + optind; return 0; } @@ -322,20 +351,22 @@ static int print_field(FILE* file, sd_journal *j) { static int print_list(FILE* file, sd_journal *j, int had_legend) { _cleanup_free_ char - *pid = NULL, *uid = NULL, *gid = NULL, + *mid = NULL, *pid = NULL, *uid = NULL, *gid = NULL, *sgnl = NULL, *exe = NULL, *comm = NULL, *cmdline = NULL, - *filename = NULL, *coredump = NULL; + *filename = NULL, *truncated = NULL, *coredump = NULL; const void *d; size_t l; usec_t t; char buf[FORMAT_TIMESTAMP_MAX]; int r; const char *present; + bool normal_coredump; assert(file); assert(j); SD_JOURNAL_FOREACH_DATA(j, d, l) { + RETRIEVE(d, l, "MESSAGE_ID", mid); RETRIEVE(d, l, "COREDUMP_PID", pid); RETRIEVE(d, l, "COREDUMP_UID", uid); RETRIEVE(d, l, "COREDUMP_GID", gid); @@ -344,6 +375,7 @@ static int print_list(FILE* file, sd_journal *j, int had_legend) { RETRIEVE(d, l, "COREDUMP_COMM", comm); RETRIEVE(d, l, "COREDUMP_CMDLINE", cmdline); RETRIEVE(d, l, "COREDUMP_FILENAME", filename); + RETRIEVE(d, l, "COREDUMP_TRUNCATED", truncated); RETRIEVE(d, l, "COREDUMP", coredump); } @@ -359,15 +391,17 @@ static int print_list(FILE* file, sd_journal *j, int had_legend) { format_timestamp(buf, sizeof(buf), t); if (!had_legend && !arg_no_legend) - fprintf(file, "%-*s %*s %*s %*s %*s %*s %s\n", + fprintf(file, "%-*s %*s %*s %*s %*s %-*s %s\n", FORMAT_TIMESTAMP_WIDTH, "TIME", 6, "PID", 5, "UID", 5, "GID", 3, "SIG", - 8, "COREFILE", + 9, "COREFILE", "EXE"); + normal_coredump = streq_ptr(mid, SD_MESSAGE_COREDUMP_STR); + if (filename) if (access(filename, R_OK) == 0) present = "present"; @@ -377,16 +411,21 @@ static int print_list(FILE* file, sd_journal *j, int had_legend) { present = "error"; else if (coredump) present = "journal"; - else + else if (normal_coredump) present = "none"; + else + present = "-"; + + if (STR_IN_SET(present, "present", "journal") && truncated && parse_boolean(truncated) > 0) + present = "truncated"; fprintf(file, "%-*s %*s %*s %*s %*s %-*s %s\n", FORMAT_TIMESTAMP_WIDTH, buf, 6, strna(pid), 5, strna(uid), 5, strna(gid), - 3, strna(sgnl), - 8, present, + 3, normal_coredump ? strna(sgnl) : "-", + 9, present, strna(exe ?: (comm ?: cmdline))); return 0; @@ -394,21 +433,23 @@ static int print_list(FILE* file, sd_journal *j, int had_legend) { static int print_info(FILE *file, sd_journal *j, bool need_space) { _cleanup_free_ char - *pid = NULL, *uid = NULL, *gid = NULL, + *mid = NULL, *pid = NULL, *uid = NULL, *gid = NULL, *sgnl = NULL, *exe = NULL, *comm = NULL, *cmdline = NULL, *unit = NULL, *user_unit = NULL, *session = NULL, *boot_id = NULL, *machine_id = NULL, *hostname = NULL, *slice = NULL, *cgroup = NULL, *owner_uid = NULL, *message = NULL, *timestamp = NULL, *filename = NULL, - *coredump = NULL; + *truncated = NULL, *coredump = NULL; const void *d; size_t l; + bool normal_coredump; int r; assert(file); assert(j); SD_JOURNAL_FOREACH_DATA(j, d, l) { + RETRIEVE(d, l, "MESSAGE_ID", mid); RETRIEVE(d, l, "COREDUMP_PID", pid); RETRIEVE(d, l, "COREDUMP_UID", uid); RETRIEVE(d, l, "COREDUMP_GID", gid); @@ -424,6 +465,7 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) { RETRIEVE(d, l, "COREDUMP_CGROUP", cgroup); RETRIEVE(d, l, "COREDUMP_TIMESTAMP", timestamp); RETRIEVE(d, l, "COREDUMP_FILENAME", filename); + RETRIEVE(d, l, "COREDUMP_TRUNCATED", truncated); RETRIEVE(d, l, "COREDUMP", coredump); RETRIEVE(d, l, "_BOOT_ID", boot_id); RETRIEVE(d, l, "_MACHINE_ID", machine_id); @@ -434,6 +476,8 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) { if (need_space) fputs("\n", file); + normal_coredump = streq_ptr(mid, SD_MESSAGE_COREDUMP_STR); + if (comm) fprintf(file, " PID: %s%s%s (%s)\n", @@ -479,11 +523,12 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) { if (sgnl) { int sig; + const char *name = normal_coredump ? "Signal" : "Reason"; - if (safe_atoi(sgnl, &sig) >= 0) - fprintf(file, " Signal: %s (%s)\n", sgnl, signal_to_string(sig)); + if (normal_coredump && safe_atoi(sgnl, &sig) >= 0) + fprintf(file, " %s: %s (%s)\n", name, sgnl, signal_to_string(sig)); else - fprintf(file, " Signal: %s\n", sgnl); + fprintf(file, " %s: %s\n", name, sgnl); } if (timestamp) { @@ -539,9 +584,24 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) { if (hostname) fprintf(file, " Hostname: %s\n", hostname); - if (filename) - fprintf(file, " Storage: %s%s\n", filename, - access(filename, R_OK) < 0 ? " (inaccessible)" : ""); + if (filename) { + bool inacc, trunc; + + inacc = access(filename, R_OK) < 0; + trunc = truncated && parse_boolean(truncated) > 0; + + if (inacc || trunc) + fprintf(file, " Storage: %s%s (%s%s%s)%s\n", + ansi_highlight_red(), + filename, + inacc ? "inaccessible" : "", + inacc && trunc ? ", " : "", + trunc ? "truncated" : "", + ansi_normal()); + else + fprintf(file, " Storage: %s\n", filename); + } + else if (coredump) fprintf(file, " Storage: journal\n"); else @@ -602,14 +662,57 @@ static int dump_list(sd_journal *j) { return print_entry(j, 0); } else { - SD_JOURNAL_FOREACH(j) { + if (arg_since != USEC_INFINITY && !arg_reverse) + r = sd_journal_seek_realtime_usec(j, arg_since); + else if (arg_until != USEC_INFINITY && arg_reverse) + r = sd_journal_seek_realtime_usec(j, arg_until); + else if (arg_reverse) + r = sd_journal_seek_tail(j); + else + r = sd_journal_seek_head(j); + if (r < 0) + return log_error_errno(r, "Failed to seek to date: %m"); + + for (;;) { + if (!arg_reverse) + r = sd_journal_next(j); + else + r = sd_journal_previous(j); + + if (r < 0) + return log_error_errno(r, "Failed to iterate through journal: %m"); + + if (r == 0) + break; + + if (arg_until != USEC_INFINITY && !arg_reverse) { + usec_t usec; + + r = sd_journal_get_realtime_usec(j, &usec); + if (r < 0) + return log_error_errno(r, "Failed to determine timestamp: %m"); + if (usec > arg_until) + continue; + } + + if (arg_since != USEC_INFINITY && arg_reverse) { + usec_t usec; + + r = sd_journal_get_realtime_usec(j, &usec); + if (r < 0) + return log_error_errno(r, "Failed to determine timestamp: %m"); + if (usec < arg_since) + continue; + } + r = print_entry(j, n_found++); if (r < 0) return r; } if (!arg_field && n_found <= 0) { - log_notice("No coredumps found."); + if (!arg_quiet) + log_notice("No coredumps found."); return -ESRCH; } } @@ -771,8 +874,8 @@ static int dump_core(sd_journal* j) { return r; r = sd_journal_previous(j); - if (r > 0) - log_warning("More than one entry matches, ignoring rest."); + if (r > 0 && !arg_quiet) + log_notice("More than one entry matches, ignoring rest."); return 0; } @@ -858,24 +961,75 @@ finish: return r; } +static int check_units_active(void) { + _cleanup_(sd_bus_unrefp) sd_bus *bus = NULL; + _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; + _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; + int c = 0, r; + const char *id, *state, *substate; + + if (arg_quiet) + return false; + + r = sd_bus_default_system(&bus); + if (r < 0) + return log_error_errno(r, "Failed to acquire bus: %m"); + + r = sd_bus_message_new_method_call( + bus, + &m, + "org.freedesktop.systemd1", + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "ListUnitsByPatterns"); + if (r < 0) + return bus_log_create_error(r); + + r = sd_bus_message_append_strv(m, NULL); + if (r < 0) + return bus_log_create_error(r); + + r = sd_bus_message_append_strv(m, STRV_MAKE("systemd-coredump@*.service")); + if (r < 0) + return bus_log_create_error(r); + + r = sd_bus_call(bus, m, SHORT_BUS_CALL_TIMEOUT_USEC, &error, &reply); + if (r < 0) + return log_error_errno(r, "Failed to check if any systemd-coredump@.service units are running: %s", + bus_error_message(&error, r)); + + r = sd_bus_message_enter_container(reply, SD_BUS_TYPE_ARRAY, "(ssssssouso)"); + if (r < 0) + return bus_log_parse_error(r); + + while ((r = sd_bus_message_read( + reply, "(ssssssouso)", + &id, NULL, NULL, &state, &substate, + NULL, NULL, NULL, NULL, NULL)) > 0) { + bool found = !STR_IN_SET(state, "inactive", "dead", "failed"); + log_debug("Unit %s is %s/%s, %scounting it.", id, state, substate, found ? "" : "not "); + c += found; + } + if (r < 0) + return bus_log_parse_error(r); + + r = sd_bus_message_exit_container(reply); + if (r < 0) + return bus_log_parse_error(r); + + return c; +} + int main(int argc, char *argv[]) { _cleanup_(sd_journal_closep) sd_journal*j = NULL; - const char* match; - Iterator it; - int r = 0; - _cleanup_set_free_free_ Set *matches = NULL; + int r = 0, units_active; setlocale(LC_ALL, ""); log_parse_environment(); log_open(); - matches = new_matches(); - if (!matches) { - r = -ENOMEM; - goto end; - } - - r = parse_argv(argc, argv, matches); + r = parse_argv(argc, argv); if (r < 0) goto end; @@ -898,14 +1052,13 @@ int main(int argc, char *argv[]) { } } - SET_FOREACH(match, matches, it) { - r = sd_journal_add_match(j, match, strlen(match)); - if (r != 0) { - log_error_errno(r, "Failed to add match '%s': %m", - match); - goto end; - } - } + r = journal_access_check_and_warn(j, arg_quiet); + if (r < 0) + goto end; + + r = add_matches(j); + if (r < 0) + goto end; if (_unlikely_(log_get_max_level() >= LOG_DEBUG)) { _cleanup_free_ char *filter; @@ -914,6 +1067,8 @@ int main(int argc, char *argv[]) { log_debug("Journal filter: %s", filter); } + units_active = check_units_active(); /* error is treated the same as 0 */ + switch(arg_action) { case ACTION_LIST: @@ -934,6 +1089,11 @@ int main(int argc, char *argv[]) { assert_not_reached("Shouldn't be here"); } + if (units_active > 0) + printf("%s-- Notice: %d systemd-coredump@.service %s, output may be incomplete.%s\n", + ansi_highlight_red(), + units_active, units_active == 1 ? "unit is running" : "units are running", + ansi_normal()); end: pager_close(); diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index 23bf014929..b58b6db7c9 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -144,13 +144,17 @@ static int create_disk( } } - if (is_device_path(u)) + if (is_device_path(u)) { fprintf(f, "BindsTo=%s\n" "After=%s\n" "Before=umount.target\n", d, d); - else + + if (swap) + fputs("Before=dev-mapper-%i.swap\n", + f); + } else fprintf(f, "RequiresMountsFor=%s\n", u); diff --git a/src/dissect/dissect.c b/src/dissect/dissect.c index 59bd7d9e84..06564e94b1 100644 --- a/src/dissect/dissect.c +++ b/src/dissect/dissect.c @@ -208,6 +208,14 @@ int main(int argc, char *argv[]) { log_error_errno(r, "No root partition for specified root hash found in %s.", arg_image); goto finish; } + if (r == -ENOTUNIQ) { + log_error_errno(r, "Multiple suitable root partitions found in image %s.", arg_image); + goto finish; + } + if (r == -ENXIO) { + log_error_errno(r, "No suitable root partition found in image %s.", arg_image); + goto finish; + } if (r < 0) { log_error_errno(r, "Failed to dissect image: %m"); goto finish; diff --git a/src/environment-d-generator/Makefile b/src/environment-d-generator/Makefile new file mode 120000 index 0000000000..d0b0e8e008 --- /dev/null +++ b/src/environment-d-generator/Makefile @@ -0,0 +1 @@ +../Makefile
\ No newline at end of file diff --git a/src/environment-d-generator/environment-d-generator.c b/src/environment-d-generator/environment-d-generator.c new file mode 100644 index 0000000000..2d4c4235e4 --- /dev/null +++ b/src/environment-d-generator/environment-d-generator.c @@ -0,0 +1,107 @@ +/*** + This file is part of systemd. + + Copyright 2017 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include "sd-path.h" + +#include "conf-files.h" +#include "def.h" +#include "escape.h" +#include "fileio.h" +#include "log.h" +#include "path-lookup.h" + +static int environment_dirs(char ***ret) { + _cleanup_strv_free_ char **dirs = NULL; + _cleanup_free_ char *c = NULL; + int r; + + dirs = strv_split_nulstr(CONF_PATHS_NULSTR("environment.d")); + if (!dirs) + return -ENOMEM; + + /* ~/.config/systemd/environment.d */ + r = sd_path_home(SD_PATH_USER_CONFIGURATION, "environment.d", &c); + if (r < 0) + return r; + + r = strv_extend_front(&dirs, c); + if (r < 0) + return r; + + *ret = dirs; + dirs = NULL; + return 0; +} + +static int load_and_print(void) { + _cleanup_strv_free_ char **dirs = NULL, **files = NULL, **env = NULL; + char **i; + int r; + + r = environment_dirs(&dirs); + if (r < 0) + return r; + + r = conf_files_list_strv(&files, ".conf", NULL, (const char **) dirs); + if (r < 0) + return r; + + /* This will mutate the existing environment, based on the presumption + * that in case of failure, a partial update is better than none. */ + + STRV_FOREACH(i, files) { + r = merge_env_file(&env, NULL, *i); + if (r == -ENOMEM) + return r; + } + + STRV_FOREACH(i, env) { + char *t; + _cleanup_free_ char *q = NULL; + + t = strchr(*i, '='); + assert(t); + + q = shell_maybe_quote(t + 1); + if (!q) + return log_oom(); + + printf("%.*s=%s\n", (int) (t - *i), *i, q); + } + + return 0; +} + +int main(int argc, char *argv[]) { + int r; + + log_parse_environment(); + log_open(); + + if (argc > 1) { + log_error("This program takes no arguments."); + return EXIT_FAILURE; + } + + r = load_and_print(); + if (r < 0) + log_error_errno(r, "Failed to load environment.d: %m"); + + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; +} diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c index fd7051f21e..bc16290c72 100644 --- a/src/firstboot/firstboot.c +++ b/src/firstboot/firstboot.c @@ -252,7 +252,7 @@ static int process_locale(void) { if (arg_copy_locale && arg_root) { mkdir_parents(etc_localeconf, 0755); - r = copy_file("/etc/locale.conf", etc_localeconf, 0, 0644, 0); + r = copy_file("/etc/locale.conf", etc_localeconf, 0, 0644, 0, COPY_REFLINK); if (r != -ENOENT) { if (r < 0) return log_error_errno(r, "Failed to copy %s: %m", etc_localeconf); diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index d97bafd1fb..2677a3fb32 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -209,7 +209,8 @@ static int write_mount_timeout(FILE *f, const char *where, const char *opts) { "x-systemd.mount-timeout\0", "TimeoutSec"); } -static int write_requires_after(FILE *f, const char *opts) { +static int write_dependency(FILE *f, const char *opts, + const char *filter, const char *format) { _cleanup_strv_free_ char **names = NULL, **units = NULL; _cleanup_free_ char *res = NULL; char **s; @@ -218,7 +219,7 @@ static int write_requires_after(FILE *f, const char *opts) { assert(f); assert(opts); - r = fstab_extract_values(opts, "x-systemd.requires", &names); + r = fstab_extract_values(opts, filter, &names); if (r < 0) return log_warning_errno(r, "Failed to parse options: %m"); if (r == 0) @@ -239,12 +240,29 @@ static int write_requires_after(FILE *f, const char *opts) { res = strv_join(units, " "); if (!res) return log_oom(); - fprintf(f, "After=%1$s\nRequires=%1$s\n", res); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-nonliteral" + fprintf(f, format, res); +#pragma GCC diagnostic pop } return 0; } +static int write_after(FILE *f, const char *opts) { + return write_dependency(f, opts, "x-systemd.after", "After=%1$s\n"); +} + +static int write_requires_after(FILE *f, const char *opts) { + return write_dependency(f, opts, + "x-systemd.requires", "After=%1$s\nRequires=%1$s\n"); +} + +static int write_before(FILE *f, const char *opts) { + return write_dependency(f, opts, + "x-systemd.before", "Before=%1$s\n"); +} + static int write_requires_mounts_for(FILE *f, const char *opts) { _cleanup_strv_free_ char **paths = NULL; _cleanup_free_ char *res = NULL; @@ -344,9 +362,15 @@ static int add_mount( fprintf(f, "Before=%s\n", post); if (!automount && opts) { + r = write_after(f, opts); + if (r < 0) + return r; r = write_requires_after(f, opts); if (r < 0) return r; + r = write_before(f, opts); + if (r < 0) + return r; r = write_requires_mounts_for(f, opts); if (r < 0) return r; @@ -421,9 +445,15 @@ static int add_mount( fprintf(f, "Before=%s\n", post); if (opts) { + r = write_after(f, opts); + if (r < 0) + return r; r = write_requires_after(f, opts); if (r < 0) return r; + r = write_before(f, opts); + if (r < 0) + return r; r = write_requires_mounts_for(f, opts); if (r < 0) return r; diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index b958070c90..80f676e477 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -475,7 +475,7 @@ static int add_esp(DissectedPartition *p) { 120 * USEC_PER_SEC); } #else -static int add_esp(const char *what) { +static int add_esp(DissectedPartition *p) { return 0; } #endif diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c index 07c57fb567..f5a9de94a6 100644 --- a/src/hostname/hostnamectl.c +++ b/src/hostname/hostnamectl.c @@ -137,10 +137,8 @@ static int show_one_name(sd_bus *bus, const char* attr) { "org.freedesktop.hostname1", attr, &error, &reply, "s"); - if (r < 0) { - log_error("Could not get property: %s", bus_error_message(&error, -r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Could not get property: %s", bus_error_message(&error, r)); r = sd_bus_message_read(reply, "s", &s); if (r < 0) @@ -151,7 +149,7 @@ static int show_one_name(sd_bus *bus, const char* attr) { return 0; } -static int show_all_names(sd_bus *bus) { +static int show_all_names(sd_bus *bus, sd_bus_error *error) { StatusInfo info = {}; static const struct bus_properties_map hostname_map[] = { @@ -181,6 +179,7 @@ static int show_all_names(sd_bus *bus) { "org.freedesktop.hostname1", "/org/freedesktop/hostname1", hostname_map, + error, &info); if (r < 0) goto fail; @@ -189,6 +188,7 @@ static int show_all_names(sd_bus *bus) { "org.freedesktop.systemd1", "/org/freedesktop/systemd1", manager_map, + error, &info); print_status_info(&info); @@ -212,6 +212,8 @@ fail: } static int show_status(sd_bus *bus, char **args, unsigned n) { + int r; + assert(args); if (arg_pretty || arg_static || arg_transient) { @@ -226,8 +228,15 @@ static int show_status(sd_bus *bus, char **args, unsigned n) { arg_static ? "StaticHostname" : "Hostname"; return show_one_name(bus, attr); - } else - return show_all_names(bus); + } else { + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; + + r = show_all_names(bus, &error); + if (r < 0) + return log_error_errno(r, "Failed to query system properties: %s", bus_error_message(&error, r)); + + return 0; + } } static int set_simple_string(sd_bus *bus, const char *method, const char *value) { diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 4657cf8c77..fe0aa00efb 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -133,6 +133,7 @@ static bool valid_chassis(const char *chassis) { "container\0" "desktop\0" "laptop\0" + "convertible\0" "server\0" "tablet\0" "handset\0" @@ -199,6 +200,10 @@ static const char* fallback_chassis(void) { case 0x1E: /* Tablet */ return "tablet"; + + case 0x1F: /* Convertible */ + case 0x20: /* Detachable */ + return "convertible"; } try_acpi: diff --git a/src/import/curl-util.c b/src/import/curl-util.c index 734e1560e6..0e8f3fb918 100644 --- a/src/import/curl-util.c +++ b/src/import/curl-util.c @@ -400,7 +400,7 @@ int curl_header_strdup(const void *contents, size_t sz, const char *field, char sz--; } - /* Truncate trailing whitespace*/ + /* Truncate trailing whitespace */ while (sz > 0 && strchr(WHITESPACE, p[sz-1])) sz--; diff --git a/src/import/importd.c b/src/import/importd.c index 9d31a956a5..3d379d6de9 100644 --- a/src/import/importd.c +++ b/src/import/importd.c @@ -449,8 +449,11 @@ static int transfer_start(Transfer *t) { stdio_unset_cloexec(); - setenv("SYSTEMD_LOG_TARGET", "console-prefixed", 1); - setenv("NOTIFY_SOCKET", "/run/systemd/import/notify", 1); + if (setenv("SYSTEMD_LOG_TARGET", "console-prefixed", 1) < 0 || + setenv("NOTIFY_SOCKET", "/run/systemd/import/notify", 1) < 0) { + log_error_errno(errno, "setenv() failed: %m"); + _exit(EXIT_FAILURE); + } if (IN_SET(t->type, TRANSFER_IMPORT_TAR, TRANSFER_IMPORT_RAW)) cmd[k++] = SYSTEMD_IMPORT_PATH; diff --git a/src/import/pull-raw.c b/src/import/pull-raw.c index ef7fb6ac42..60a769e944 100644 --- a/src/import/pull-raw.c +++ b/src/import/pull-raw.c @@ -315,7 +315,7 @@ static int raw_pull_copy_auxiliary_file( local = strjoina(i->image_root, "/", i->local, suffix); - r = copy_file_atomic(*path, local, 0644, i->force_local, 0); + r = copy_file_atomic(*path, local, 0644, 0, COPY_REFLINK | (i->force_local ? COPY_REPLACE : 0)); if (r == -EEXIST) log_warning_errno(r, "File %s already exists, not replacing.", local); else if (r == -ENOENT) @@ -378,7 +378,7 @@ static int raw_pull_make_local_copy(RawPull *i) { if (r < 0) log_warning_errno(r, "Failed to set file attributes on %s: %m", tp); - r = copy_bytes(i->raw_job->disk_fd, dfd, (uint64_t) -1, true); + r = copy_bytes(i->raw_job->disk_fd, dfd, (uint64_t) -1, COPY_REFLINK); if (r < 0) { unlink(tp); return log_error_errno(r, "Failed to make writable copy of image: %m"); diff --git a/src/import/pull-tar.c b/src/import/pull-tar.c index 375ee778e2..91833d6174 100644 --- a/src/import/pull-tar.c +++ b/src/import/pull-tar.c @@ -256,7 +256,7 @@ static int tar_pull_make_local_copy(TarPull *i) { local_settings = strjoina(i->image_root, "/", i->local, ".nspawn"); - r = copy_file_atomic(i->settings_path, local_settings, 0664, i->force_local, 0); + r = copy_file_atomic(i->settings_path, local_settings, 0664, 0, COPY_REFLINK | (i->force_local ? COPY_REPLACE : 0)); if (r == -EEXIST) log_warning_errno(r, "Settings file %s already exists, not replacing.", local_settings); else if (r == -ENOENT) diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c index 9ba9ee3fc0..79afe6604c 100644 --- a/src/journal-remote/journal-remote-parse.c +++ b/src/journal-remote/journal-remote-parse.c @@ -24,20 +24,11 @@ #include "parse-util.h" #include "string-util.h" -#define LINE_CHUNK 8*1024u - void source_free(RemoteSource *source) { if (!source) return; - if (source->fd >= 0 && !source->passive_fd) { - log_debug("Closing fd:%d (%s)", source->fd, source->name); - safe_close(source->fd); - } - - free(source->name); - free(source->buf); - iovw_free_contents(&source->iovw); + journal_importer_cleanup(&source->importer); log_debug("Writer ref count %i", source->writer->n_ref); writer_unref(source->writer); @@ -65,442 +56,44 @@ RemoteSource* source_new(int fd, bool passive_fd, char *name, Writer *writer) { if (!source) return NULL; - source->fd = fd; - source->passive_fd = passive_fd; - source->name = name; + source->importer.fd = fd; + source->importer.passive_fd = passive_fd; + source->importer.name = name; + source->writer = writer; return source; } -static char* realloc_buffer(RemoteSource *source, size_t size) { - char *b, *old = source->buf; - - b = GREEDY_REALLOC(source->buf, source->size, size); - if (!b) - return NULL; - - iovw_rebase(&source->iovw, old, source->buf); - - return b; -} - -static int get_line(RemoteSource *source, char **line, size_t *size) { - ssize_t n; - char *c = NULL; - - assert(source); - assert(source->state == STATE_LINE); - assert(source->offset <= source->filled); - assert(source->filled <= source->size); - assert(source->buf == NULL || source->size > 0); - assert(source->fd >= 0); - - for (;;) { - if (source->buf) { - size_t start = MAX(source->scanned, source->offset); - - c = memchr(source->buf + start, '\n', - source->filled - start); - if (c != NULL) - break; - } - - source->scanned = source->filled; - if (source->scanned >= DATA_SIZE_MAX) { - log_error("Entry is bigger than %u bytes.", DATA_SIZE_MAX); - return -E2BIG; - } - - if (source->passive_fd) - /* we have to wait for some data to come to us */ - return -EAGAIN; - - /* We know that source->filled is at most DATA_SIZE_MAX, so if - we reallocate it, we'll increase the size at least a bit. */ - assert_cc(DATA_SIZE_MAX < ENTRY_SIZE_MAX); - if (source->size - source->filled < LINE_CHUNK && - !realloc_buffer(source, MIN(source->filled + LINE_CHUNK, ENTRY_SIZE_MAX))) - return log_oom(); - - assert(source->buf); - assert(source->size - source->filled >= LINE_CHUNK || - source->size == ENTRY_SIZE_MAX); - - n = read(source->fd, - source->buf + source->filled, - source->size - source->filled); - if (n < 0) { - if (errno != EAGAIN) - log_error_errno(errno, "read(%d, ..., %zu): %m", - source->fd, - source->size - source->filled); - return -errno; - } else if (n == 0) - return 0; - - source->filled += n; - } - - *line = source->buf + source->offset; - *size = c + 1 - source->buf - source->offset; - source->offset += *size; - - return 1; -} - -int push_data(RemoteSource *source, const char *data, size_t size) { - assert(source); - assert(source->state != STATE_EOF); - - if (!realloc_buffer(source, source->filled + size)) { - log_error("Failed to store received data of size %zu " - "(in addition to existing %zu bytes with %zu filled): %s", - size, source->size, source->filled, strerror(ENOMEM)); - return -ENOMEM; - } - - memcpy(source->buf + source->filled, data, size); - source->filled += size; - - return 0; -} - -static int fill_fixed_size(RemoteSource *source, void **data, size_t size) { - - assert(source); - assert(source->state == STATE_DATA_START || - source->state == STATE_DATA || - source->state == STATE_DATA_FINISH); - assert(size <= DATA_SIZE_MAX); - assert(source->offset <= source->filled); - assert(source->filled <= source->size); - assert(source->buf != NULL || source->size == 0); - assert(source->buf == NULL || source->size > 0); - assert(source->fd >= 0); - assert(data); - - while (source->filled - source->offset < size) { - int n; - - if (source->passive_fd) - /* we have to wait for some data to come to us */ - return -EAGAIN; - - if (!realloc_buffer(source, source->offset + size)) - return log_oom(); - - n = read(source->fd, source->buf + source->filled, - source->size - source->filled); - if (n < 0) { - if (errno != EAGAIN) - log_error_errno(errno, "read(%d, ..., %zu): %m", source->fd, - source->size - source->filled); - return -errno; - } else if (n == 0) - return 0; - - source->filled += n; - } - - *data = source->buf + source->offset; - source->offset += size; - - return 1; -} - -static int get_data_size(RemoteSource *source) { - int r; - void *data; - - assert(source); - assert(source->state == STATE_DATA_START); - assert(source->data_size == 0); - - r = fill_fixed_size(source, &data, sizeof(uint64_t)); - if (r <= 0) - return r; - - source->data_size = le64toh( *(uint64_t *) data ); - if (source->data_size > DATA_SIZE_MAX) { - log_error("Stream declares field with size %zu > DATA_SIZE_MAX = %u", - source->data_size, DATA_SIZE_MAX); - return -EINVAL; - } - if (source->data_size == 0) - log_warning("Binary field with zero length"); - - return 1; -} - -static int get_data_data(RemoteSource *source, void **data) { - int r; - - assert(source); - assert(data); - assert(source->state == STATE_DATA); - - r = fill_fixed_size(source, data, source->data_size); - if (r <= 0) - return r; - - return 1; -} - -static int get_data_newline(RemoteSource *source) { - int r; - char *data; - - assert(source); - assert(source->state == STATE_DATA_FINISH); - - r = fill_fixed_size(source, (void**) &data, 1); - if (r <= 0) - return r; - - assert(data); - if (*data != '\n') { - log_error("expected newline, got '%c'", *data); - return -EINVAL; - } - - return 1; -} - -static int process_dunder(RemoteSource *source, char *line, size_t n) { - const char *timestamp; - int r; - - assert(line); - assert(n > 0); - assert(line[n-1] == '\n'); - - /* XXX: is it worth to support timestamps in extended format? - * We don't produce them, but who knows... */ - - timestamp = startswith(line, "__CURSOR="); - if (timestamp) - /* ignore __CURSOR */ - return 1; - - timestamp = startswith(line, "__REALTIME_TIMESTAMP="); - if (timestamp) { - long long unsigned x; - line[n-1] = '\0'; - r = safe_atollu(timestamp, &x); - if (r < 0) - log_warning("Failed to parse __REALTIME_TIMESTAMP: '%s'", timestamp); - else - source->ts.realtime = x; - return r < 0 ? r : 1; - } - - timestamp = startswith(line, "__MONOTONIC_TIMESTAMP="); - if (timestamp) { - long long unsigned x; - line[n-1] = '\0'; - r = safe_atollu(timestamp, &x); - if (r < 0) - log_warning("Failed to parse __MONOTONIC_TIMESTAMP: '%s'", timestamp); - else - source->ts.monotonic = x; - return r < 0 ? r : 1; - } - - timestamp = startswith(line, "__"); - if (timestamp) { - log_notice("Unknown dunder line %s", line); - return 1; - } - - /* no dunder */ - return 0; -} - -static int process_data(RemoteSource *source) { - int r; - - switch(source->state) { - case STATE_LINE: { - char *line, *sep; - size_t n = 0; - - assert(source->data_size == 0); - - r = get_line(source, &line, &n); - if (r < 0) - return r; - if (r == 0) { - source->state = STATE_EOF; - return r; - } - assert(n > 0); - assert(line[n-1] == '\n'); - - if (n == 1) { - log_trace("Received empty line, event is ready"); - return 1; - } - - r = process_dunder(source, line, n); - if (r != 0) - return r < 0 ? r : 0; - - /* MESSAGE=xxx\n - or - COREDUMP\n - LLLLLLLL0011223344...\n - */ - sep = memchr(line, '=', n); - if (sep) { - /* chomp newline */ - n--; - - r = iovw_put(&source->iovw, line, n); - if (r < 0) - return r; - } else { - /* replace \n with = */ - line[n-1] = '='; - - source->field_len = n; - source->state = STATE_DATA_START; - - /* we cannot put the field in iovec until we have all data */ - } - - log_trace("Received: %.*s (%s)", (int) n, line, sep ? "text" : "binary"); - - return 0; /* continue */ - } - - case STATE_DATA_START: - assert(source->data_size == 0); - - r = get_data_size(source); - // log_debug("get_data_size() -> %d", r); - if (r < 0) - return r; - if (r == 0) { - source->state = STATE_EOF; - return 0; - } - - source->state = source->data_size > 0 ? - STATE_DATA : STATE_DATA_FINISH; - - return 0; /* continue */ - - case STATE_DATA: { - void *data; - char *field; - - assert(source->data_size > 0); - - r = get_data_data(source, &data); - // log_debug("get_data_data() -> %d", r); - if (r < 0) - return r; - if (r == 0) { - source->state = STATE_EOF; - return 0; - } - - assert(data); - - field = (char*) data - sizeof(uint64_t) - source->field_len; - memmove(field + sizeof(uint64_t), field, source->field_len); - - r = iovw_put(&source->iovw, field + sizeof(uint64_t), source->field_len + source->data_size); - if (r < 0) - return r; - - source->state = STATE_DATA_FINISH; - - return 0; /* continue */ - } - - case STATE_DATA_FINISH: - r = get_data_newline(source); - // log_debug("get_data_newline() -> %d", r); - if (r < 0) - return r; - if (r == 0) { - source->state = STATE_EOF; - return 0; - } - - source->data_size = 0; - source->state = STATE_LINE; - - return 0; /* continue */ - default: - assert_not_reached("wtf?"); - } -} - int process_source(RemoteSource *source, bool compress, bool seal) { - size_t remain, target; int r; assert(source); assert(source->writer); - r = process_data(source); + r = journal_importer_process_data(&source->importer); if (r <= 0) return r; /* We have a full event */ log_trace("Received full event from source@%p fd:%d (%s)", - source, source->fd, source->name); + source, source->importer.fd, source->importer.name); - if (!source->iovw.count) { + if (source->importer.iovw.count == 0) { log_warning("Entry with no payload, skipping"); goto freeing; } - assert(source->iovw.iovec); - assert(source->iovw.count); + assert(source->importer.iovw.iovec); - r = writer_write(source->writer, &source->iovw, &source->ts, compress, seal); + r = writer_write(source->writer, &source->importer.iovw, &source->importer.ts, compress, seal); if (r < 0) log_error_errno(r, "Failed to write entry of %zu bytes: %m", - iovw_size(&source->iovw)); + iovw_size(&source->importer.iovw)); else r = 1; freeing: - iovw_free_contents(&source->iovw); - - /* possibly reset buffer position */ - remain = source->filled - source->offset; - - if (remain == 0) /* no brainer */ - source->offset = source->scanned = source->filled = 0; - else if (source->offset > source->size - source->filled && - source->offset > remain) { - memcpy(source->buf, source->buf + source->offset, remain); - source->offset = source->scanned = 0; - source->filled = remain; - } - - target = source->size; - while (target > 16 * LINE_CHUNK && source->filled < target / 2) - target /= 2; - if (target < source->size) { - char *tmp; - - tmp = realloc(source->buf, target); - if (!tmp) - log_warning("Failed to reallocate buffer to (smaller) size %zu", - target); - else { - log_debug("Reallocated buffer from %zu to %zu bytes", - source->size, target); - source->buf = tmp; - source->size = target; - } - } - + journal_importer_drop_iovw(&source->importer); return r; } diff --git a/src/journal-remote/journal-remote-parse.h b/src/journal-remote/journal-remote-parse.h index 1740a21f92..e3632528cf 100644 --- a/src/journal-remote/journal-remote-parse.h +++ b/src/journal-remote/journal-remote-parse.h @@ -21,34 +21,11 @@ #include "sd-event.h" +#include "journal-importer.h" #include "journal-remote-write.h" -typedef enum { - STATE_LINE = 0, /* waiting to read, or reading line */ - STATE_DATA_START, /* reading binary data header */ - STATE_DATA, /* reading binary data */ - STATE_DATA_FINISH, /* expecting newline */ - STATE_EOF, /* done */ -} source_state; - typedef struct RemoteSource { - char *name; - int fd; - bool passive_fd; - - char *buf; - size_t size; /* total size of the buffer */ - size_t offset; /* offset to the beginning of live data in the buffer */ - size_t scanned; /* number of bytes since the beginning of data without a newline */ - size_t filled; /* total number of bytes in the buffer */ - - size_t field_len; /* used for binary fields: the field name length */ - size_t data_size; /* and the size of the binary data chunk being processed */ - - struct iovec_wrapper iovw; - - source_state state; - dual_timestamp ts; + JournalImporter importer; Writer *writer; @@ -57,13 +34,5 @@ typedef struct RemoteSource { } RemoteSource; RemoteSource* source_new(int fd, bool passive_fd, char *name, Writer *writer); - -static inline size_t source_non_empty(RemoteSource *source) { - assert(source); - - return source->filled; -} - void source_free(RemoteSource *source); -int push_data(RemoteSource *source, const char *data, size_t size); int process_source(RemoteSource *source, bool compress, bool seal); diff --git a/src/journal-remote/journal-remote-write.c b/src/journal-remote/journal-remote-write.c index 8729372aa3..734cad333f 100644 --- a/src/journal-remote/journal-remote-write.c +++ b/src/journal-remote/journal-remote-write.c @@ -20,39 +20,6 @@ #include "alloc-util.h" #include "journal-remote.h" -int iovw_put(struct iovec_wrapper *iovw, void* data, size_t len) { - if (!GREEDY_REALLOC(iovw->iovec, iovw->size_bytes, iovw->count + 1)) - return log_oom(); - - iovw->iovec[iovw->count++] = (struct iovec) {data, len}; - return 0; -} - -void iovw_free_contents(struct iovec_wrapper *iovw) { - iovw->iovec = mfree(iovw->iovec); - iovw->size_bytes = iovw->count = 0; -} - -size_t iovw_size(struct iovec_wrapper *iovw) { - size_t n = 0, i; - - for (i = 0; i < iovw->count; i++) - n += iovw->iovec[i].iov_len; - - return n; -} - -void iovw_rebase(struct iovec_wrapper *iovw, char *old, char *new) { - size_t i; - - for (i = 0; i < iovw->count; i++) - iovw->iovec[i].iov_base = (char*) iovw->iovec[i].iov_base - old + new; -} - -/********************************************************************** - ********************************************************************** - **********************************************************************/ - static int do_rotate(JournalFile **f, bool compress, bool seal) { int r = journal_file_rotate(f, compress, seal, NULL); if (r < 0) { diff --git a/src/journal-remote/journal-remote-write.h b/src/journal-remote/journal-remote-write.h index 53ba45fc04..e04af54e55 100644 --- a/src/journal-remote/journal-remote-write.h +++ b/src/journal-remote/journal-remote-write.h @@ -20,20 +20,10 @@ ***/ #include "journal-file.h" +#include "journal-importer.h" typedef struct RemoteServer RemoteServer; -struct iovec_wrapper { - struct iovec *iovec; - size_t size_bytes; - size_t count; -}; - -int iovw_put(struct iovec_wrapper *iovw, void* data, size_t len); -void iovw_free_contents(struct iovec_wrapper *iovw); -size_t iovw_size(struct iovec_wrapper *iovw); -void iovw_rebase(struct iovec_wrapper *iovw, char *old, char *new); - typedef struct Writer { JournalFile *journal; JournalMetrics metrics; diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c index d0d8d936e3..202a5a3f97 100644 --- a/src/journal-remote/journal-remote.c +++ b/src/journal-remote/journal-remote.c @@ -512,7 +512,8 @@ static int process_http_upload( if (*upload_data_size) { log_trace("Received %zu bytes", *upload_data_size); - r = push_data(source, upload_data, *upload_data_size); + r = journal_importer_push_data(&source->importer, + upload_data, *upload_data_size); if (r < 0) return mhd_respond_oom(connection); @@ -542,7 +543,7 @@ static int process_http_upload( /* The upload is finished */ - remaining = source_non_empty(source); + remaining = journal_importer_bytes_remaining(&source->importer); if (remaining > 0) { log_warning("Premature EOF byte. %zu bytes lost.", remaining); return mhd_respondf(connection, @@ -1036,19 +1037,19 @@ static int handle_raw_source(sd_event_source *event, assert(fd >= 0 && fd < (ssize_t) s->sources_size); source = s->sources[fd]; - assert(source->fd == fd); + assert(source->importer.fd == fd); r = process_source(source, arg_compress, arg_seal); - if (source->state == STATE_EOF) { + if (journal_importer_eof(&source->importer)) { size_t remaining; - log_debug("EOF reached with source fd:%d (%s)", - source->fd, source->name); + log_debug("EOF reached with source %s (fd=%d)", + source->importer.name, source->importer.fd); - remaining = source_non_empty(source); + remaining = journal_importer_bytes_remaining(&source->importer); if (remaining > 0) log_notice("Premature EOF. %zu bytes lost.", remaining); - remove_source(s, source->fd); + remove_source(s, source->importer.fd); log_debug("%zu active sources remaining", s->active); return 0; } else if (r == -E2BIG) { @@ -1072,7 +1073,7 @@ static int dispatch_raw_source_until_block(sd_event_source *event, /* Make sure event stays around even if source is destroyed */ sd_event_source_ref(event); - r = handle_raw_source(event, source->fd, EPOLLIN, server); + r = handle_raw_source(event, source->importer.fd, EPOLLIN, server); if (r != 1) /* No more data for now */ sd_event_source_set_enabled(event, SD_EVENT_OFF); @@ -1105,7 +1106,7 @@ static int dispatch_blocking_source_event(sd_event_source *event, void *userdata) { RemoteSource *source = userdata; - return handle_raw_source(event, source->fd, EPOLLIN, server); + return handle_raw_source(event, source->importer.fd, EPOLLIN, server); } static int accept_connection(const char* type, int fd, diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index ef87b176fa..a6ccb679a8 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -3283,7 +3283,7 @@ int journal_file_rotate(JournalFile **f, bool compress, bool seal, Set *deferred return -EINVAL; /* Is this a journal file that was passed to us as fd? If so, we synthesized a path name for it, and we refuse - * rotation, since we don't know the actual path, and couldn't rename the file hence.*/ + * rotation, since we don't know the actual path, and couldn't rename the file hence. */ if (path_startswith(old_file->path, "/proc/self/fd")) return -EINVAL; diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 9ad6f115a1..ad11fb314d 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -52,6 +52,7 @@ #include "journal-def.h" #include "journal-internal.h" #include "journal-qrcode.h" +#include "journal-util.h" #include "journal-vacuum.h" #include "journal-verify.h" #include "locale-util.h" @@ -912,7 +913,7 @@ static int generate_new_id128(void) { SD_ID128_FORMAT_STR "\n\n" "As UUID:\n" "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n\n" - "As macro:\n" + "As man:sd-id128(3) macro:\n" "#define MESSAGE_XYZ SD_ID128_MAKE(", SD_ID128_FORMAT_VAL(id), SD_ID128_FORMAT_VAL(id)); @@ -1805,131 +1806,6 @@ static int verify(sd_journal *j) { return r; } -static int access_check_var_log_journal(sd_journal *j) { -#ifdef HAVE_ACL - _cleanup_strv_free_ char **g = NULL; - const char* dir; -#endif - int r; - - assert(j); - - if (arg_quiet) - return 0; - - /* If we are root, we should have access, don't warn. */ - if (getuid() == 0) - return 0; - - /* If we are in the 'systemd-journal' group, we should have - * access too. */ - r = in_group("systemd-journal"); - if (r < 0) - return log_error_errno(r, "Failed to check if we are in the 'systemd-journal' group: %m"); - if (r > 0) - return 0; - -#ifdef HAVE_ACL - if (laccess("/run/log/journal", F_OK) >= 0) - dir = "/run/log/journal"; - else - dir = "/var/log/journal"; - - /* If we are in any of the groups listed in the journal ACLs, - * then all is good, too. Let's enumerate all groups from the - * default ACL of the directory, which generally should allow - * access to most journal files too. */ - r = acl_search_groups(dir, &g); - if (r < 0) - return log_error_errno(r, "Failed to search journal ACL: %m"); - if (r > 0) - return 0; - - /* Print a pretty list, if there were ACLs set. */ - if (!strv_isempty(g)) { - _cleanup_free_ char *s = NULL; - - /* Thre are groups in the ACL, let's list them */ - r = strv_extend(&g, "systemd-journal"); - if (r < 0) - return log_oom(); - - strv_sort(g); - strv_uniq(g); - - s = strv_join(g, "', '"); - if (!s) - return log_oom(); - - log_notice("Hint: You are currently not seeing messages from other users and the system.\n" - " Users in groups '%s' can see all messages.\n" - " Pass -q to turn off this notice.", s); - return 1; - } -#endif - - /* If no ACLs were found, print a short version of the message. */ - log_notice("Hint: You are currently not seeing messages from other users and the system.\n" - " Users in the 'systemd-journal' group can see all messages. Pass -q to\n" - " turn off this notice."); - - return 1; -} - -static int access_check(sd_journal *j) { - Iterator it; - void *code; - char *path; - int r = 0; - - assert(j); - - if (hashmap_isempty(j->errors)) { - if (ordered_hashmap_isempty(j->files)) - log_notice("No journal files were found."); - - return 0; - } - - if (hashmap_contains(j->errors, INT_TO_PTR(-EACCES))) { - (void) access_check_var_log_journal(j); - - if (ordered_hashmap_isempty(j->files)) - r = log_error_errno(EACCES, "No journal files were opened due to insufficient permissions."); - } - - HASHMAP_FOREACH_KEY(path, code, j->errors, it) { - int err; - - err = abs(PTR_TO_INT(code)); - - switch (err) { - case EACCES: - continue; - - case ENODATA: - log_warning_errno(err, "Journal file %s is truncated, ignoring file.", path); - break; - - case EPROTONOSUPPORT: - log_warning_errno(err, "Journal file %1$s uses an unsupported feature, ignoring file.\n" - "Use SYSTEMD_LOG_LEVEL=debug journalctl --file=%1$s to see the details.", - path); - break; - - case EBADMSG: - log_warning_errno(err, "Journal file %s corrupted, ignoring file.", path); - break; - - default: - log_warning_errno(err, "An error was encountered while opening journal file or directory %s, ignoring file: %m", path); - break; - } - } - - return r; -} - static int flush_to_var(void) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; @@ -2241,7 +2117,7 @@ int main(int argc, char *argv[]) { goto finish; } - r = access_check(j); + r = journal_access_check_and_warn(j, arg_quiet); if (r < 0) goto finish; diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c index 18c8644507..8afaec0ced 100644 --- a/src/journal/journald-kmsg.c +++ b/src/journal/journald-kmsg.c @@ -156,7 +156,8 @@ static void dev_kmsg_record(Server *s, const char *p, size_t l) { /* Did we lose any? */ if (serial > *s->kernel_seqnum) - server_driver_message(s, SD_MESSAGE_JOURNAL_MISSED, + server_driver_message(s, + "MESSAGE_ID=" SD_MESSAGE_JOURNAL_MISSED_STR, LOG_MESSAGE("Missed %"PRIu64" kernel messages", serial - *s->kernel_seqnum), NULL); diff --git a/src/journal/journald-native.c b/src/journal/journald-native.c index 0a1ce205c2..3c03b83754 100644 --- a/src/journal/journald-native.c +++ b/src/journal/journald-native.c @@ -27,6 +27,7 @@ #include "fd-util.h" #include "fs-util.h" #include "io-util.h" +#include "journal-importer.h" #include "journald-console.h" #include "journald-kmsg.h" #include "journald-native.h" diff --git a/src/journal/journald-native.h b/src/journal/journald-native.h index c13b80aa4f..1ab415ac85 100644 --- a/src/journal/journald-native.h +++ b/src/journal/journald-native.h @@ -21,11 +21,6 @@ #include "journald-server.h" -/* Make sure not to make this smaller than the maximum coredump - * size. See COREDUMP_MAX in coredump.c */ -#define ENTRY_SIZE_MAX (1024*1024*770u) -#define DATA_SIZE_MAX (1024*1024*768u) - bool valid_user_field(const char *p, size_t l, bool allow_protected); void server_process_native_message(Server *s, const void *buffer, size_t buffer_size, const struct ucred *ucred, const struct timeval *tv, const char *label, size_t label_len); diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 8b92ea3def..6466e46ccc 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -214,7 +214,7 @@ void server_space_usage_message(Server *s, JournalStorage *storage) { format_bytes(fb5, sizeof(fb5), storage->space.limit); format_bytes(fb6, sizeof(fb6), storage->space.available); - server_driver_message(s, SD_MESSAGE_JOURNAL_USAGE, + server_driver_message(s, "MESSAGE_ID=" SD_MESSAGE_JOURNAL_USAGE_STR, LOG_MESSAGE("%s (%s) is %s, max %s, %s free.", storage->name, storage->path, fb1, fb5, fb6), "JOURNAL_NAME=%s", storage->name, @@ -760,7 +760,8 @@ static void dispatch_message_real( const char *label, size_t label_len, const char *unit_id, int priority, - pid_t object_pid) { + pid_t object_pid, + char *cgroup) { char pid[sizeof("_PID=") + DECIMAL_STR_MAX(pid_t)], uid[sizeof("_UID=") + DECIMAL_STR_MAX(uid_t)], @@ -846,7 +847,12 @@ static void dispatch_message_real( } #endif - r = cg_pid_get_path_shifted(ucred->pid, s->cgroup_root, &c); + r = 0; + if (cgroup) + c = cgroup; + else + r = cg_pid_get_path_shifted(ucred->pid, s->cgroup_root, &c); + if (r >= 0) { _cleanup_free_ char *raw_unit = NULL, *raw_slice = NULL; char *session = NULL; @@ -904,7 +910,8 @@ static void dispatch_message_real( } } - free(c); + if (!cgroup) + free(c); } else if (unit_id) { x = strjoina("_SYSTEMD_UNIT=", unit_id); IOVEC_SET_STRING(iovec[n++], x); @@ -1061,8 +1068,7 @@ static void dispatch_message_real( write_to_journal(s, journal_uid, iovec, n, priority); } -void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...) { - char mid[11 + 32 + 1]; +void server_driver_message(Server *s, const char *message_id, const char *format, ...) { struct iovec iovec[N_IOVEC_META_FIELDS + 5 + N_IOVEC_PAYLOAD_FIELDS]; unsigned n = 0, m; int r; @@ -1080,11 +1086,8 @@ void server_driver_message(Server *s, sd_id128_t message_id, const char *format, assert_cc(6 == LOG_INFO); IOVEC_SET_STRING(iovec[n++], "PRIORITY=6"); - if (!sd_id128_is_null(message_id)) { - snprintf(mid, sizeof(mid), LOG_MESSAGE_ID(message_id)); - IOVEC_SET_STRING(iovec[n++], mid); - } - + if (message_id) + IOVEC_SET_STRING(iovec[n++], message_id); m = n; va_start(ap, format); @@ -1097,7 +1100,7 @@ void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ucred.gid = getgid(); if (r >= 0) - dispatch_message_real(s, iovec, n, ELEMENTSOF(iovec), &ucred, NULL, NULL, 0, NULL, LOG_INFO, 0); + dispatch_message_real(s, iovec, n, ELEMENTSOF(iovec), &ucred, NULL, NULL, 0, NULL, LOG_INFO, 0, NULL); while (m < n) free(iovec[m++].iov_base); @@ -1111,7 +1114,7 @@ void server_driver_message(Server *s, sd_id128_t message_id, const char *format, n = 3; IOVEC_SET_STRING(iovec[n++], "PRIORITY=4"); IOVEC_SET_STRING(iovec[n++], buf); - dispatch_message_real(s, iovec, n, ELEMENTSOF(iovec), &ucred, NULL, NULL, 0, NULL, LOG_INFO, 0); + dispatch_message_real(s, iovec, n, ELEMENTSOF(iovec), &ucred, NULL, NULL, 0, NULL, LOG_INFO, 0, NULL); } } @@ -1128,7 +1131,7 @@ void server_dispatch_message( int rl, r; _cleanup_free_ char *path = NULL; uint64_t available = 0; - char *c; + char *c = NULL; assert(s); assert(iovec || n == 0); @@ -1174,12 +1177,15 @@ void server_dispatch_message( /* Write a suppression message if we suppressed something */ if (rl > 1) - server_driver_message(s, SD_MESSAGE_JOURNAL_DROPPED, + server_driver_message(s, "MESSAGE_ID=" SD_MESSAGE_JOURNAL_DROPPED_STR, LOG_MESSAGE("Suppressed %u messages from %s", rl - 1, path), NULL); finish: - dispatch_message_real(s, iovec, n, m, ucred, tv, label, label_len, unit_id, priority, object_pid); + /* restore cgroup path for logging */ + if (c) + *c = '/'; + dispatch_message_real(s, iovec, n, m, ucred, tv, label, label_len, unit_id, priority, object_pid, path); } int server_flush_to_var(Server *s, bool require_flag_file) { @@ -1273,7 +1279,7 @@ finish: sd_journal_close(j); - server_driver_message(s, SD_ID128_NULL, + server_driver_message(s, NULL, LOG_MESSAGE("Time spent on flushing to /var is %s for %u entries.", format_timespan(ts, sizeof(ts), now(CLOCK_MONOTONIC) - start, 0), n), diff --git a/src/journal/journald-server.h b/src/journal/journald-server.h index 716e758b7c..75ac114d24 100644 --- a/src/journal/journald-server.h +++ b/src/journal/journald-server.h @@ -176,7 +176,7 @@ struct Server { #define N_IOVEC_PAYLOAD_FIELDS 15 void server_dispatch_message(Server *s, struct iovec *iovec, unsigned n, unsigned m, const struct ucred *ucred, const struct timeval *tv, const char *label, size_t label_len, const char *unit_id, int priority, pid_t object_pid); -void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...) _printf_(3,0) _sentinel_; +void server_driver_message(Server *s, const char *message_id, const char *format, ...) _printf_(3,0) _sentinel_; /* gperf lookup function */ const struct ConfigPerfItem* journald_gperf_lookup(const char *key, GPERF_LEN_TYPE length); diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c index 896303fb85..474369039a 100644 --- a/src/journal/journald-syslog.c +++ b/src/journal/journald-syslog.c @@ -444,7 +444,8 @@ void server_maybe_warn_forward_syslog_missed(Server *s) { if (s->last_warn_forward_syslog_missed + WARN_FORWARD_SYSLOG_MISSED_USEC > n) return; - server_driver_message(s, SD_MESSAGE_FORWARD_SYSLOG_MISSED, + server_driver_message(s, + "MESSAGE_ID=" SD_MESSAGE_FORWARD_SYSLOG_MISSED_STR, LOG_MESSAGE("Forwarding to syslog missed %u messages.", s->n_forward_syslog_missed), NULL); diff --git a/src/journal/journald.c b/src/journal/journald.c index 54fd1f999d..1aaef387b4 100644 --- a/src/journal/journald.c +++ b/src/journal/journald.c @@ -56,7 +56,8 @@ int main(int argc, char *argv[]) { server_flush_dev_kmsg(&server); log_debug("systemd-journald running as pid "PID_FMT, getpid()); - server_driver_message(&server, SD_MESSAGE_JOURNAL_START, + server_driver_message(&server, + "MESSAGE_ID=" SD_MESSAGE_JOURNAL_START_STR, LOG_MESSAGE("Journal started"), NULL); @@ -114,7 +115,8 @@ int main(int argc, char *argv[]) { } log_debug("systemd-journald stopped as pid "PID_FMT, getpid()); - server_driver_message(&server, SD_MESSAGE_JOURNAL_STOP, + server_driver_message(&server, + "MESSAGE_ID=" SD_MESSAGE_JOURNAL_STOP_STR, LOG_MESSAGE("Journal stopped"), NULL); diff --git a/src/journal/test-compress.c b/src/journal/test-compress.c index 0469393f3b..44a2cf5217 100644 --- a/src/journal/test-compress.c +++ b/src/journal/test-compress.c @@ -109,7 +109,7 @@ static void test_decompress_startswith(int compression, size_t csize, usize = 0, len; int r; - log_info("/* testing decompress_startswith with %s on %.20s text*/", + log_info("/* testing decompress_startswith with %s on %.20s text */", object_compressed_to_string(compression), data); #define BUFSIZE_1 512 diff --git a/src/libsystemd-network/arp-util.c b/src/libsystemd-network/arp-util.c index 02028bf28a..2e02b3fa66 100644 --- a/src/libsystemd-network/arp-util.c +++ b/src/libsystemd-network/arp-util.c @@ -58,7 +58,7 @@ int arp_network_bind_raw_socket(int ifindex, be32_t address, const struct ether_ BPF_STMT(BPF_ALU + BPF_XOR + BPF_X, 0), /* A xor X */ BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, 0, 0, 1), /* A == 0 ? */ BPF_STMT(BPF_RET + BPF_K, 0), /* ignore */ - /* Sender Protocol Address or Target Protocol Address must be equal to the one we care about*/ + /* Sender Protocol Address or Target Protocol Address must be equal to the one we care about */ BPF_STMT(BPF_LD + BPF_IMM, htobe32(address)), /* A <- clients IP */ BPF_STMT(BPF_MISC + BPF_TAX, 0), /* X <- A */ BPF_STMT(BPF_LD + BPF_W + BPF_ABS, offsetof(struct ether_arp, arp_spa)), /* A <- SPA */ diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index b4bf75a3dc..7c0317640f 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -825,6 +825,15 @@ static int client_send_request(sd_dhcp_client *client) { return r; } + if (client->vendor_class_identifier) { + r = dhcp_option_append(&request->dhcp, optlen, &optoffset, 0, + SD_DHCP_OPTION_VENDOR_CLASS_IDENTIFIER, + strlen(client->vendor_class_identifier), + client->vendor_class_identifier); + if (r < 0) + return r; + } + r = dhcp_option_append(&request->dhcp, optlen, &optoffset, 0, SD_DHCP_OPTION_END, 0, NULL); if (r < 0) diff --git a/src/libsystemd-network/sd-ipv4acd.c b/src/libsystemd-network/sd-ipv4acd.c index 4dd343c101..2ebc00f247 100644 --- a/src/libsystemd-network/sd-ipv4acd.c +++ b/src/libsystemd-network/sd-ipv4acd.c @@ -242,8 +242,6 @@ static int ipv4acd_on_timeout(sd_event_source *s, uint64_t usec, void *userdata) r = ipv4acd_set_next_wakeup(acd, RATE_LIMIT_INTERVAL_USEC, PROBE_WAIT_USEC); if (r < 0) goto fail; - - acd->n_conflict = 0; } else { r = ipv4acd_set_next_wakeup(acd, 0, PROBE_WAIT_USEC); if (r < 0) diff --git a/src/libsystemd-network/test-lldp.c b/src/libsystemd-network/test-lldp.c index 6bcd65de0a..430c58ae60 100644 --- a/src/libsystemd-network/test-lldp.c +++ b/src/libsystemd-network/test-lldp.c @@ -98,14 +98,14 @@ static void test_receive_basic_packet(sd_event *e) { static const uint8_t frame[] = { /* Ethernet header */ - 0x01, 0x80, 0xc2, 0x00, 0x00, 0x03, /* Destination MAC*/ + 0x01, 0x80, 0xc2, 0x00, 0x00, 0x03, /* Destination MAC */ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, /* Source MAC */ 0x88, 0xcc, /* Ethertype */ /* LLDP mandatory TLVs */ 0x02, 0x07, 0x04, 0x00, 0x01, 0x02, /* Chassis: MAC, 00:01:02:03:04:05 */ 0x03, 0x04, 0x05, 0x04, 0x04, 0x05, 0x31, 0x2f, 0x33, /* Port: interface name, "1/3" */ - 0x06, 0x02, 0x00, 0x78, /* TTL: 120 seconds*/ + 0x06, 0x02, 0x00, 0x78, /* TTL: 120 seconds */ /* LLDP optional TLVs */ 0x08, 0x04, 0x50, 0x6f, 0x72, 0x74, /* Port Description: "Port" */ 0x0a, 0x03, 0x53, 0x59, 0x53, /* System Name: "SYS" */ @@ -162,7 +162,7 @@ static void test_receive_incomplete_packet(sd_event *e) { sd_lldp_neighbor **neighbors; uint8_t frame[] = { /* Ethernet header */ - 0x01, 0x80, 0xc2, 0x00, 0x00, 0x03, /* Destination MAC*/ + 0x01, 0x80, 0xc2, 0x00, 0x00, 0x03, /* Destination MAC */ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, /* Source MAC */ 0x88, 0xcc, /* Ethertype */ /* LLDP mandatory TLVs */ @@ -189,14 +189,14 @@ static void test_receive_oui_packet(sd_event *e) { sd_lldp_neighbor **neighbors; uint8_t frame[] = { /* Ethernet header */ - 0x01, 0x80, 0xc2, 0x00, 0x00, 0x03, /* Destination MAC*/ + 0x01, 0x80, 0xc2, 0x00, 0x00, 0x03, /* Destination MAC */ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, /* Source MAC */ 0x88, 0xcc, /* Ethertype */ /* LLDP mandatory TLVs */ 0x02, 0x07, 0x04, 0x00, 0x01, 0x02, /* Chassis: MAC, 00:01:02:03:04:05 */ 0x03, 0x04, 0x05, 0x04, 0x04, 0x05, 0x31, 0x2f, 0x33, /* Port TLV: interface name, "1/3" */ - 0x06, 0x02, 0x00, 0x78, /* TTL: 120 seconds*/ + 0x06, 0x02, 0x00, 0x78, /* TTL: 120 seconds */ /* LLDP optional TLVs */ 0xfe, 0x06, 0x00, 0x80, 0xc2, 0x01, /* Port VLAN ID: 0x1234 */ 0x12, 0x34, diff --git a/src/libsystemd/sd-bus/test-bus-creds.c b/src/libsystemd/sd-bus/test-bus-creds.c index 6fdcfa4128..64bd76a576 100644 --- a/src/libsystemd/sd-bus/test-bus-creds.c +++ b/src/libsystemd/sd-bus/test-bus-creds.c @@ -31,7 +31,7 @@ int main(int argc, char *argv[]) { log_parse_environment(); log_open(); - if (cg_all_unified() == -ENOMEDIUM) { + if (cg_unified_flush() == -ENOMEDIUM) { log_info("Skipping test: /sys/fs/cgroup/ not available"); return EXIT_TEST_SKIP; } diff --git a/src/libsystemd/sd-device/device-internal.h b/src/libsystemd/sd-device/device-internal.h index 9fad388953..f4783deef8 100644 --- a/src/libsystemd/sd-device/device-internal.h +++ b/src/libsystemd/sd-device/device-internal.h @@ -34,7 +34,7 @@ struct sd_device { uint64_t properties_generation; /* changes whenever the properties are changed */ uint64_t properties_iterator_generation; /* generation when iteration was started */ - /* the subset of the properties that should be written to the db*/ + /* the subset of the properties that should be written to the db */ OrderedHashmap *properties_db; Hashmap *sysattr_values; /* cached sysattr values */ diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index efeadf0cd4..04ead29338 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -1859,8 +1859,7 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr, _cleanup_free_ char *value = NULL; const char *syspath; char *path; - struct stat statbuf; - size_t value_len = 0; + size_t len = 0; ssize_t size; int r; @@ -1878,8 +1877,14 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr, return r; path = strjoina(syspath, "/", sysattr); - r = lstat(path, &statbuf); - if (r < 0) { + + fd = open(path, O_WRONLY | O_CLOEXEC | O_NOFOLLOW); + if (fd < 0) { + if (errno == ELOOP) + return -EINVAL; + if (errno == EISDIR) + return -EISDIR; + value = strdup(""); if (!value) return -ENOMEM; @@ -1891,46 +1896,30 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr, return -ENXIO; } - if (S_ISLNK(statbuf.st_mode)) - return -EINVAL; - - /* skip directories */ - if (S_ISDIR(statbuf.st_mode)) - return -EISDIR; - - /* skip non-readable files */ - if ((statbuf.st_mode & S_IRUSR) == 0) - return -EACCES; - - value_len = strlen(_value); + len = strlen(_value); /* drop trailing newlines */ - while (value_len > 0 && _value[value_len - 1] == '\n') - _value[--value_len] = '\0'; + while (len > 0 && _value[len - 1] == '\n') + len --; /* value length is limited to 4k */ - if (value_len > 4096) + if (len > 4096) return -EINVAL; - fd = open(path, O_WRONLY | O_CLOEXEC); - if (fd < 0) - return -errno; - - value = strdup(_value); + value = strndup(_value, len); if (!value) return -ENOMEM; - size = write(fd, value, value_len); + size = write(fd, value, len); if (size < 0) return -errno; - if ((size_t)size != value_len) + if ((size_t)size != len) return -EIO; r = device_add_sysattr_value(device, sysattr, value); if (r < 0) return r; - value = NULL; return 0; diff --git a/src/libsystemd/sd-netlink/netlink-socket.c b/src/libsystemd/sd-netlink/netlink-socket.c index a0fd8a3ac9..129bfd2d80 100644 --- a/src/libsystemd/sd-netlink/netlink-socket.c +++ b/src/libsystemd/sd-netlink/netlink-socket.c @@ -281,7 +281,7 @@ static int socket_recv_message(int fd, struct iovec *iov, uint32_t *_group, bool else if (errno == EAGAIN) log_debug("rtnl: no data in socket"); - return (errno == EAGAIN || errno == EINTR) ? 0 : -errno; + return IN_SET(errno, EAGAIN, EINTR) ? 0 : -errno; } if (sender.nl.nl_pid != 0) { @@ -292,7 +292,7 @@ static int socket_recv_message(int fd, struct iovec *iov, uint32_t *_group, bool /* drop the message */ r = recvmsg(fd, &msg, 0); if (r < 0) - return (errno == EAGAIN || errno == EINTR) ? 0 : -errno; + return IN_SET(errno, EAGAIN, EINTR) ? 0 : -errno; } return 0; diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c index 0f8b0cc70b..ff0e99558e 100644 --- a/src/libsystemd/sd-netlink/netlink-types.c +++ b/src/libsystemd/sd-netlink/netlink-types.c @@ -149,7 +149,7 @@ static const NLType rtnl_link_info_data_vxlan_types[] = { [IFLA_VXLAN_ID] = { .type = NETLINK_TYPE_U32 }, [IFLA_VXLAN_GROUP] = { .type = NETLINK_TYPE_IN_ADDR }, [IFLA_VXLAN_LINK] = { .type = NETLINK_TYPE_U32 }, - [IFLA_VXLAN_LOCAL] = { .type = NETLINK_TYPE_U32}, + [IFLA_VXLAN_LOCAL] = { .type = NETLINK_TYPE_IN_ADDR }, [IFLA_VXLAN_TTL] = { .type = NETLINK_TYPE_U8 }, [IFLA_VXLAN_TOS] = { .type = NETLINK_TYPE_U8 }, [IFLA_VXLAN_LEARNING] = { .type = NETLINK_TYPE_U8 }, diff --git a/src/libsystemd/sd-netlink/sd-netlink.c b/src/libsystemd/sd-netlink/sd-netlink.c index 43114eb825..68435564de 100644 --- a/src/libsystemd/sd-netlink/sd-netlink.c +++ b/src/libsystemd/sd-netlink/sd-netlink.c @@ -276,6 +276,10 @@ static int dispatch_rqueue(sd_netlink *rtnl, sd_netlink_message **message) { if (rtnl->rqueue_size <= 0) { /* Try to read a new message */ r = socket_read_message(rtnl); + if (r == -ENOBUFS) { /* FIXME: ignore buffer overruns for now */ + log_debug_errno(r, "Got ENOBUFS from netlink socket, ignoring."); + return 1; + } if (r <= 0) return r; } diff --git a/src/libsystemd/sd-network/sd-network.c b/src/libsystemd/sd-network/sd-network.c index 0d8d99c56d..8b4af5a2c3 100644 --- a/src/libsystemd/sd-network/sd-network.c +++ b/src/libsystemd/sd-network/sd-network.c @@ -245,7 +245,7 @@ static int network_link_get_ifindexes(int ifindex, const char *key, int **ret) { } if (ifis) - ifis[c] = 0; /* Let's add a 0 ifindex to the end, to be nice*/ + ifis[c] = 0; /* Let's add a 0 ifindex to the end, to be nice */ *ret = ifis; ifis = NULL; diff --git a/src/locale/localectl.c b/src/locale/localectl.c index 81afb4909f..0bd18a5c0b 100644 --- a/src/locale/localectl.c +++ b/src/locale/localectl.c @@ -166,6 +166,8 @@ static int show_status(sd_bus *bus, char **args, unsigned n) { { "Locale", "as", NULL, offsetof(StatusInfo, locale) }, {} }; + + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; int r; assert(bus); @@ -174,9 +176,10 @@ static int show_status(sd_bus *bus, char **args, unsigned n) { "org.freedesktop.locale1", "/org/freedesktop/locale1", map, + &error, &info); if (r < 0) - return log_error_errno(r, "Could not get properties: %m"); + return log_error_errno(r, "Could not get properties: %s", bus_error_message(&error, r)); print_overridden_variables(); print_status_info(&info); diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 1aac7ae979..7dea5c0859 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -482,14 +482,15 @@ static int print_session_status_info(sd_bus *bus, const char *path, bool *new_li {} }; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; char since1[FORMAT_TIMESTAMP_RELATIVE_MAX], *s1; char since2[FORMAT_TIMESTAMP_MAX], *s2; _cleanup_(session_status_info_clear) SessionStatusInfo i = {}; int r; - r = bus_map_all_properties(bus, "org.freedesktop.login1", path, map, &i); + r = bus_map_all_properties(bus, "org.freedesktop.login1", path, map, &error, &i); if (r < 0) - return log_error_errno(r, "Could not get properties: %m"); + return log_error_errno(r, "Could not get properties: %s", bus_error_message(&error, r)); if (*new_line) printf("\n"); @@ -611,14 +612,15 @@ static int print_user_status_info(sd_bus *bus, const char *path, bool *new_line) {} }; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; char since1[FORMAT_TIMESTAMP_RELATIVE_MAX], *s1; char since2[FORMAT_TIMESTAMP_MAX], *s2; _cleanup_(user_status_info_clear) UserStatusInfo i = {}; int r; - r = bus_map_all_properties(bus, "org.freedesktop.login1", path, map, &i); + r = bus_map_all_properties(bus, "org.freedesktop.login1", path, map, &error, &i); if (r < 0) - return log_error_errno(r, "Could not get properties: %m"); + return log_error_errno(r, "Could not get properties: %s", bus_error_message(&error, r)); if (*new_line) printf("\n"); @@ -685,12 +687,13 @@ static int print_seat_status_info(sd_bus *bus, const char *path, bool *new_line) {} }; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(seat_status_info_clear) SeatStatusInfo i = {}; int r; - r = bus_map_all_properties(bus, "org.freedesktop.login1", path, map, &i); + r = bus_map_all_properties(bus, "org.freedesktop.login1", path, map, &error, &i); if (r < 0) - return log_error_errno(r, "Could not get properties: %m"); + return log_error_errno(r, "Could not get properties: %s", bus_error_message(&error, r)); if (*new_line) printf("\n"); diff --git a/src/login/logind-button.c b/src/login/logind-button.c index 90fb93bbaf..d739af8ea2 100644 --- a/src/login/logind-button.c +++ b/src/login/logind-button.c @@ -155,7 +155,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u case KEY_POWER2: log_struct(LOG_INFO, LOG_MESSAGE("Power key pressed."), - LOG_MESSAGE_ID(SD_MESSAGE_POWER_KEY), + "MESSAGE_ID=" SD_MESSAGE_POWER_KEY_STR, NULL); manager_handle_action(b->manager, INHIBIT_HANDLE_POWER_KEY, b->manager->handle_power_key, b->manager->power_key_ignore_inhibited, true); @@ -170,7 +170,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u case KEY_SLEEP: log_struct(LOG_INFO, LOG_MESSAGE("Suspend key pressed."), - LOG_MESSAGE_ID(SD_MESSAGE_SUSPEND_KEY), + "MESSAGE_ID=" SD_MESSAGE_SUSPEND_KEY_STR, NULL); manager_handle_action(b->manager, INHIBIT_HANDLE_SUSPEND_KEY, b->manager->handle_suspend_key, b->manager->suspend_key_ignore_inhibited, true); @@ -179,7 +179,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u case KEY_SUSPEND: log_struct(LOG_INFO, LOG_MESSAGE("Hibernate key pressed."), - LOG_MESSAGE_ID(SD_MESSAGE_HIBERNATE_KEY), + "MESSAGE_ID=" SD_MESSAGE_HIBERNATE_KEY_STR, NULL); manager_handle_action(b->manager, INHIBIT_HANDLE_HIBERNATE_KEY, b->manager->handle_hibernate_key, b->manager->hibernate_key_ignore_inhibited, true); @@ -191,7 +191,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u if (ev.code == SW_LID) { log_struct(LOG_INFO, LOG_MESSAGE("Lid closed."), - LOG_MESSAGE_ID(SD_MESSAGE_LID_CLOSED), + "MESSAGE_ID=" SD_MESSAGE_LID_CLOSED_STR, NULL); b->lid_closed = true; @@ -201,7 +201,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u } else if (ev.code == SW_DOCK) { log_struct(LOG_INFO, LOG_MESSAGE("System docked."), - LOG_MESSAGE_ID(SD_MESSAGE_SYSTEM_DOCKED), + "MESSAGE_ID=" SD_MESSAGE_SYSTEM_DOCKED_STR, NULL); b->docked = true; @@ -212,7 +212,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u if (ev.code == SW_LID) { log_struct(LOG_INFO, LOG_MESSAGE("Lid opened."), - LOG_MESSAGE_ID(SD_MESSAGE_LID_OPENED), + "MESSAGE_ID=" SD_MESSAGE_LID_OPENED_STR, NULL); b->lid_closed = false; @@ -221,7 +221,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u } else if (ev.code == SW_DOCK) { log_struct(LOG_INFO, LOG_MESSAGE("System undocked."), - LOG_MESSAGE_ID(SD_MESSAGE_SYSTEM_UNDOCKED), + "MESSAGE_ID=" SD_MESSAGE_SYSTEM_UNDOCKED_STR, NULL); b->docked = false; diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index ad44ca290e..c6be596af3 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -1430,7 +1430,7 @@ static int bus_manager_log_shutdown( p = strjoina(p, " (", m->wall_message, ")."); return log_struct(LOG_NOTICE, - LOG_MESSAGE_ID(SD_MESSAGE_SHUTDOWN), + "MESSAGE_ID=" SD_MESSAGE_SHUTDOWN_STR, p, q, NULL); diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c index bfbd07309d..30dac7997b 100644 --- a/src/login/logind-seat.c +++ b/src/login/logind-seat.c @@ -379,7 +379,8 @@ int seat_read_active_vt(Seat *s) { if (!seat_has_vts(s)) return 0; - lseek(s->manager->console_active_fd, SEEK_SET, 0); + if (lseek(s->manager->console_active_fd, SEEK_SET, 0) < 0) + return log_error_errno(errno, "lseek on console_active_fd failed: %m"); k = read(s->manager->console_active_fd, t, sizeof(t)-1); if (k <= 0) { @@ -396,10 +397,8 @@ int seat_read_active_vt(Seat *s) { } r = safe_atou(t+3, &vtnr); - if (r < 0) { - log_error("Failed to parse VT number %s", t+3); - return r; - } + if (r < 0) + return log_error_errno(r, "Failed to parse VT number \"%s\": %m", t+3); if (!vtnr) { log_error("VT number invalid: %s", t+3); @@ -416,7 +415,7 @@ int seat_start(Seat *s) { return 0; log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_SEAT_START), + "MESSAGE_ID=" SD_MESSAGE_SEAT_START_STR, "SEAT_ID=%s", s->id, LOG_MESSAGE("New seat %s.", s->id), NULL); @@ -444,7 +443,7 @@ int seat_stop(Seat *s, bool force) { if (s->started) log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_SEAT_STOP), + "MESSAGE_ID=" SD_MESSAGE_SEAT_STOP_STR, "SEAT_ID=%s", s->id, LOG_MESSAGE("Removed seat %s.", s->id), NULL); diff --git a/src/login/logind-session.c b/src/login/logind-session.c index fd7fcf7f2c..4a168906d6 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -561,7 +561,7 @@ int session_start(Session *s) { return r; log_struct(s->class == SESSION_BACKGROUND ? LOG_DEBUG : LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_SESSION_START), + "MESSAGE_ID=" SD_MESSAGE_SESSION_START_STR, "SESSION_ID=%s", s->id, "USER_ID=%s", s->user->name, "LEADER="PID_FMT, s->leader, @@ -666,7 +666,7 @@ int session_finalize(Session *s) { if (s->started) log_struct(s->class == SESSION_BACKGROUND ? LOG_DEBUG : LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_SESSION_STOP), + "MESSAGE_ID=" SD_MESSAGE_SESSION_STOP_STR, "SESSION_ID=%s", s->id, "USER_ID=%s", s->user->name, "LEADER="PID_FMT, s->leader, diff --git a/src/machine/image-dbus.c b/src/machine/image-dbus.c index d5051007fc..2f69e2c7b7 100644 --- a/src/machine/image-dbus.c +++ b/src/machine/image-dbus.c @@ -374,7 +374,7 @@ static int raw_image_get_os_release(Image *image, char ***ret, sd_bus_error *err if (fd < 0) _exit(EXIT_FAILURE); - r = copy_bytes(fd, pair[1], (uint64_t) -1, false); + r = copy_bytes(fd, pair[1], (uint64_t) -1, 0); if (r < 0) _exit(EXIT_FAILURE); diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c index af745b6567..36568b65ef 100644 --- a/src/machine/machine-dbus.c +++ b/src/machine/machine-dbus.c @@ -411,7 +411,7 @@ int bus_machine_method_get_os_release(sd_bus_message *message, void *userdata, s if (fd < 0) _exit(EXIT_FAILURE); - r = copy_bytes(fd, pair[1], (uint64_t) -1, false); + r = copy_bytes(fd, pair[1], (uint64_t) -1, 0); if (r < 0) _exit(EXIT_FAILURE); @@ -841,6 +841,7 @@ int bus_machine_method_bind_mount(sd_bus_message *message, void *userdata, sd_bu int read_only, make_directory; pid_t child; siginfo_t si; + uid_t uid; int r; assert(message); @@ -875,6 +876,12 @@ int bus_machine_method_bind_mount(sd_bus_message *message, void *userdata, sd_bu if (r == 0) return 1; /* Will call us back */ + r = machine_get_uid_shift(m, &uid); + if (r < 0) + return r; + if (uid != 0) + return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Can't bind mount on container with user namespacing applied."); + /* One day, when bind mounting /proc/self/fd/n works across * namespace boundaries we should rework this logic to make * use of it... */ @@ -1055,10 +1062,12 @@ finish: int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_error *error) { const char *src, *dest, *host_path, *container_path, *host_basename, *host_dirname, *container_basename, *container_dirname; _cleanup_close_pair_ int errno_pipe_fd[2] = { -1, -1 }; + CopyFlags copy_flags = COPY_REFLINK|COPY_MERGE; _cleanup_close_ int hostfd = -1; Machine *m = userdata; bool copy_from; pid_t child; + uid_t uid_shift; char *t; int r; @@ -1097,6 +1106,10 @@ int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_erro if (r == 0) return 1; /* Will call us back */ + r = machine_get_uid_shift(m, &uid_shift); + if (r < 0) + return r; + copy_from = strstr(sd_bus_message_get_member(message), "CopyFrom"); if (copy_from) { @@ -1151,10 +1164,13 @@ int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_erro goto child_fail; } + /* Run the actual copy operation. Note that when an UID shift is set we'll either clamp the UID/GID to + * 0 or to the actual UID shift depending on the direction we copy. If no UID shift is set we'll copy + * the UID/GIDs as they are. */ if (copy_from) - r = copy_tree_at(containerfd, container_basename, hostfd, host_basename, true); + r = copy_tree_at(containerfd, container_basename, hostfd, host_basename, uid_shift == 0 ? UID_INVALID : 0, uid_shift == 0 ? GID_INVALID : 0, copy_flags); else - r = copy_tree_at(hostfd, host_basename, containerfd, container_basename, true); + r = copy_tree_at(hostfd, host_basename, containerfd, container_basename, uid_shift == 0 ? UID_INVALID : uid_shift, uid_shift == 0 ? GID_INVALID : uid_shift, copy_flags); hostfd = safe_close(hostfd); containerfd = safe_close(containerfd); @@ -1276,6 +1292,32 @@ int bus_machine_method_open_root_directory(sd_bus_message *message, void *userda return sd_bus_reply_method_return(message, "h", fd); } +int bus_machine_method_get_uid_shift(sd_bus_message *message, void *userdata, sd_bus_error *error) { + Machine *m = userdata; + uid_t shift = 0; + int r; + + assert(message); + assert(m); + + /* You wonder why this is a method and not a property? Well, properties are not supposed to return errors, but + * we kinda have to for this. */ + + if (m->class == MACHINE_HOST) + return sd_bus_reply_method_return(message, "u", UINT32_C(0)); + + if (m->class != MACHINE_CONTAINER) + return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "UID/GID shift may only be determined for container machines."); + + r = machine_get_uid_shift(m, &shift); + if (r == -ENXIO) + return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Machine %s uses a complex UID/GID mapping, cannot determine shift", m->name); + if (r < 0) + return r; + + return sd_bus_reply_method_return(message, "u", (uint32_t) shift); +} + const sd_bus_vtable machine_vtable[] = { SD_BUS_VTABLE_START(0), SD_BUS_PROPERTY("Name", "s", NULL, offsetof(Machine, name), SD_BUS_VTABLE_PROPERTY_CONST), @@ -1293,6 +1335,7 @@ const sd_bus_vtable machine_vtable[] = { SD_BUS_METHOD("Kill", "si", NULL, bus_machine_method_kill, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("GetAddresses", NULL, "a(iay)", bus_machine_method_get_addresses, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("GetOSRelease", NULL, "a{ss}", bus_machine_method_get_os_release, SD_BUS_VTABLE_UNPRIVILEGED), + SD_BUS_METHOD("GetUIDShift", NULL, "u", bus_machine_method_get_uid_shift, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("OpenPTY", NULL, "hs", bus_machine_method_open_pty, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("OpenLogin", NULL, "hs", bus_machine_method_open_login, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("OpenShell", "ssasas", "hs", bus_machine_method_open_shell, SD_BUS_VTABLE_UNPRIVILEGED), diff --git a/src/machine/machine-dbus.h b/src/machine/machine-dbus.h index c513783480..2aa7b4ce06 100644 --- a/src/machine/machine-dbus.h +++ b/src/machine/machine-dbus.h @@ -39,6 +39,7 @@ int bus_machine_method_open_shell(sd_bus_message *message, void *userdata, sd_bu int bus_machine_method_bind_mount(sd_bus_message *message, void *userdata, sd_bus_error *error); int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_error *error); int bus_machine_method_open_root_directory(sd_bus_message *message, void *userdata, sd_bus_error *error); +int bus_machine_method_get_uid_shift(sd_bus_message *message, void *userdata, sd_bus_error *error); int machine_send_signal(Machine *m, bool new_machine); int machine_send_create_reply(Machine *m, sd_bus_error *error); diff --git a/src/machine/machine.c b/src/machine/machine.c index eb4b35d52a..d3433d9b96 100644 --- a/src/machine/machine.c +++ b/src/machine/machine.c @@ -38,6 +38,7 @@ #include "parse-util.h" #include "process-util.h" #include "special.h" +#include "stdio-util.h" #include "string-table.h" #include "terminal-util.h" #include "unit-name.h" @@ -401,7 +402,7 @@ int machine_start(Machine *m, sd_bus_message *properties, sd_bus_error *error) { return r; log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_MACHINE_START), + "MESSAGE_ID=" SD_MESSAGE_MACHINE_START_STR, "NAME=%s", m->name, "LEADER="PID_FMT, m->leader, LOG_MESSAGE("New machine %s.", m->name), @@ -464,7 +465,7 @@ int machine_finalize(Machine *m) { if (m->started) log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_MACHINE_STOP), + "MESSAGE_ID=" SD_MESSAGE_MACHINE_STOP_STR, "NAME=%s", m->name, "LEADER="PID_FMT, m->leader, LOG_MESSAGE("Machine %s terminated.", m->name), @@ -604,6 +605,96 @@ void machine_release_unit(Machine *m) { m->unit = mfree(m->unit); } +int machine_get_uid_shift(Machine *m, uid_t *ret) { + char p[strlen("/proc//uid_map") + DECIMAL_STR_MAX(pid_t) + 1]; + uid_t uid_base, uid_shift, uid_range; + gid_t gid_base, gid_shift, gid_range; + _cleanup_fclose_ FILE *f = NULL; + int k; + + assert(m); + assert(ret); + + /* Return the base UID/GID of the specified machine. Note that this only works for containers with simple + * mappings. In most cases setups should be simple like this, and administrators should only care about the + * basic offset a container has relative to the host. This is what this function exposes. + * + * If we encounter any more complex mappings we politely refuse this with ENXIO. */ + + if (m->class == MACHINE_HOST) { + *ret = 0; + return 0; + } + + if (m->class != MACHINE_CONTAINER) + return -EOPNOTSUPP; + + xsprintf(p, "/proc/" PID_FMT "/uid_map", m->leader); + f = fopen(p, "re"); + if (!f) { + if (errno == ENOENT) { + /* If the file doesn't exist, user namespacing is off in the kernel, return a zero mapping hence. */ + *ret = 0; + return 0; + } + + return -errno; + } + + /* Read the first line. There's at least one. */ + errno = 0; + k = fscanf(f, UID_FMT " " UID_FMT " " UID_FMT "\n", &uid_base, &uid_shift, &uid_range); + if (k != 3) { + if (ferror(f)) + return -errno; + + return -EBADMSG; + } + + /* Not a mapping starting at 0? Then it's a complex mapping we can't expose here. */ + if (uid_base != 0) + return -ENXIO; + /* Insist that at least the nobody user is mapped, everything else is weird, and hence complex, and we don't support it */ + if (uid_range < (uid_t) 65534U) + return -ENXIO; + + /* If there's more than one line, then we don't support this mapping. */ + if (fgetc(f) != EOF) + return -ENXIO; + + fclose(f); + + xsprintf(p, "/proc/" PID_FMT "/gid_map", m->leader); + f = fopen(p, "re"); + if (!f) + return -errno; + + /* Read the first line. There's at least one. */ + errno = 0; + k = fscanf(f, GID_FMT " " GID_FMT " " GID_FMT "\n", &gid_base, &gid_shift, &gid_range); + if (k != 3) { + if (ferror(f)) + return -errno; + + return -EBADMSG; + } + + /* If there's more than one line, then we don't support this file. */ + if (fgetc(f) != EOF) + return -ENXIO; + + /* If the UID and GID mapping doesn't match, we don't support this mapping. */ + if (uid_base != (uid_t) gid_base) + return -ENXIO; + if (uid_shift != (uid_t) gid_shift) + return -ENXIO; + if (uid_range != (uid_t) gid_range) + return -ENXIO; + + *ret = uid_shift; + return 0; +} + static const char* const machine_class_table[_MACHINE_CLASS_MAX] = { [MACHINE_CONTAINER] = "container", [MACHINE_VM] = "vm", diff --git a/src/machine/machine.h b/src/machine/machine.h index e5d75361a9..6bdb204ed6 100644 --- a/src/machine/machine.h +++ b/src/machine/machine.h @@ -108,3 +108,5 @@ KillWho kill_who_from_string(const char *s) _pure_; int machine_openpt(Machine *m, int flags); int machine_open_terminal(Machine *m, const char *path, int mode); + +int machine_get_uid_shift(Machine *m, uid_t *ret); diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c index 4f5f659c7c..28384286fb 100644 --- a/src/machine/machinectl.c +++ b/src/machine/machinectl.c @@ -327,8 +327,10 @@ static int list_machines(int argc, char *argv[], void *userdata) { (int) max_version_id, strdash_if_empty(machines[j].version_id)); r = print_addresses(bus, machines[j].name, 0, "", prefix, arg_addrs); - if (r == -EOPNOTSUPP) - printf("-\n"); + if (r <= 0) /* error or no addresses defined? */ + fputs("-\n", stdout); + else + fputc('\n', stdout); } if (arg_legend) { @@ -520,6 +522,7 @@ static int print_addresses(sd_bus *bus, const char *name, int ifi, const char *p _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; _cleanup_free_ char *addresses = NULL; bool truncate = false; + unsigned n = 0; int r; assert(bus); @@ -567,7 +570,7 @@ static int print_addresses(sd_bus *bus, const char *name, int ifi, const char *p else strcpy(buf_ifi, ""); - if(!strextend(&addresses, prefix, inet_ntop(family, a, buffer, sizeof(buffer)), buf_ifi, NULL)) + if (!strextend(&addresses, prefix, inet_ntop(family, a, buffer, sizeof(buffer)), buf_ifi, NULL)) return log_oom(); } else truncate = true; @@ -581,6 +584,8 @@ static int print_addresses(sd_bus *bus, const char *name, int ifi, const char *p if (n_addr > 0) n_addr -= 1; + + n++; } if (r < 0) return bus_log_parse_error(r); @@ -589,8 +594,10 @@ static int print_addresses(sd_bus *bus, const char *name, int ifi, const char *p if (r < 0) return bus_log_parse_error(r); - fprintf(stdout, "%s%s\n", addresses, truncate ? "..." : ""); - return 0; + if (n > 0) + fprintf(stdout, "%s%s", addresses, truncate ? "..." : ""); + + return (int) n; } static int print_os_release(sd_bus *bus, const char *method, const char *name, const char *prefix) { @@ -611,6 +618,37 @@ static int print_os_release(sd_bus *bus, const char *method, const char *name, c return 0; } +static int print_uid_shift(sd_bus *bus, const char *name) { + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; + _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; + uint32_t shift; + int r; + + assert(bus); + assert(name); + + r = sd_bus_call_method(bus, + "org.freedesktop.machine1", + "/org/freedesktop/machine1", + "org.freedesktop.machine1.Manager", + "GetMachineUIDShift", + &error, + &reply, + "s", name); + if (r < 0) + return log_debug_errno(r, "Failed to query UID/GID shift: %s", bus_error_message(&error, r)); + + r = sd_bus_message_read(reply, "u", &shift); + if (r < 0) + return r; + + if (shift == 0) /* Don't show trivial mappings */ + return 0; + + printf(" UID Shift: %" PRIu32 "\n", shift); + return 0; +} + typedef struct MachineStatusInfo { char *name; sd_id128_t id; @@ -707,13 +745,16 @@ static void print_machine_status_info(sd_bus *bus, MachineStatusInfo *i) { fputc('\n', stdout); } - print_addresses(bus, i->name, ifi, - "\t Address: ", - "\n\t ", - ALL_IP_ADDRESSES); + if (print_addresses(bus, i->name, ifi, + "\t Address: ", + "\n\t ", + ALL_IP_ADDRESSES) > 0) + fputc('\n', stdout); print_os_release(bus, "GetMachineOSRelease", i->name, "\t OS: "); + print_uid_shift(bus, i->name); + if (i->unit) { printf("\t Unit: %s\n", i->unit); show_unit_cgroup(bus, i->unit, i->leader); @@ -772,6 +813,7 @@ static int show_machine_info(const char *verb, sd_bus *bus, const char *path, bo {} }; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(machine_status_info_clear) MachineStatusInfo info = {}; int r; @@ -784,9 +826,10 @@ static int show_machine_info(const char *verb, sd_bus *bus, const char *path, bo "org.freedesktop.machine1", path, map, + &error, &info); if (r < 0) - return log_error_errno(r, "Could not get properties: %m"); + return log_error_errno(r, "Could not get properties: %s", bus_error_message(&error, r)); if (*new_line) printf("\n"); @@ -962,6 +1005,7 @@ static int show_image_info(sd_bus *bus, const char *path, bool *new_line) { {} }; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(image_status_info_clear) ImageStatusInfo info = {}; int r; @@ -973,9 +1017,10 @@ static int show_image_info(sd_bus *bus, const char *path, bool *new_line) { "org.freedesktop.machine1", path, map, + &error, &info); if (r < 0) - return log_error_errno(r, "Could not get properties: %m"); + return log_error_errno(r, "Could not get properties: %s", bus_error_message(&error, r)); if (*new_line) printf("\n"); @@ -1029,6 +1074,8 @@ static int show_pool_info(sd_bus *bus) { .usage = (uint64_t) -1, .limit = (uint64_t) -1, }; + + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; int r; assert(bus); @@ -1037,9 +1084,10 @@ static int show_pool_info(sd_bus *bus) { "org.freedesktop.machine1", "/org/freedesktop/machine1", map, + &error, &info); if (r < 0) - return log_error_errno(r, "Could not get properties: %m"); + return log_error_errno(r, "Could not get properties: %s", bus_error_message(&error, r)); print_pool_status_info(bus, &info); diff --git a/src/machine/machined-dbus.c b/src/machine/machined-dbus.c index fd9e5b56fc..c9b92d2765 100644 --- a/src/machine/machined-dbus.c +++ b/src/machine/machined-dbus.c @@ -729,6 +729,26 @@ static int method_open_machine_root_directory(sd_bus_message *message, void *use return bus_machine_method_open_root_directory(message, machine, error); } +static int method_get_machine_uid_shift(sd_bus_message *message, void *userdata, sd_bus_error *error) { + Manager *m = userdata; + Machine *machine; + const char *name; + int r; + + assert(message); + assert(m); + + r = sd_bus_message_read(message, "s", &name); + if (r < 0) + return r; + + machine = hashmap_get(m->machines, name); + if (!machine) + return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_MACHINE, "No machine '%s' known", name); + + return bus_machine_method_get_uid_shift(message, machine, error); +} + static int method_remove_image(sd_bus_message *message, void *userdata, sd_bus_error *error) { _cleanup_(image_unrefp) Image* i = NULL; const char *name; @@ -1416,6 +1436,7 @@ const sd_bus_vtable manager_vtable[] = { SD_BUS_METHOD("CopyFromMachine", "sss", NULL, method_copy_machine, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("CopyToMachine", "sss", NULL, method_copy_machine, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("OpenMachineRootDirectory", "s", "h", method_open_machine_root_directory, SD_BUS_VTABLE_UNPRIVILEGED), + SD_BUS_METHOD("GetMachineUIDShift", "s", "u", method_get_machine_uid_shift, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("RemoveImage", "s", NULL, method_remove_image, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("RenameImage", "ss", NULL, method_rename_image, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("CloneImage", "ssb", NULL, method_clone_image, SD_BUS_VTABLE_UNPRIVILEGED), diff --git a/src/machine/operation.c b/src/machine/operation.c index c966d0d21c..f7d5310f44 100644 --- a/src/machine/operation.c +++ b/src/machine/operation.c @@ -61,8 +61,10 @@ static int operation_done(sd_event_source *s, const siginfo_t *si, void *userdat } else { /* The default operation when done is to simply return an error on failure or an empty success * message on success. */ - if (r < 0) + if (r < 0) { + sd_bus_error_set_errno(&error, r); goto fail; + } r = sd_bus_reply_method_return(o->message, NULL); if (r < 0) diff --git a/src/machine/org.freedesktop.machine1.conf b/src/machine/org.freedesktop.machine1.conf index 82ebfba50c..daa365a9dd 100644 --- a/src/machine/org.freedesktop.machine1.conf +++ b/src/machine/org.freedesktop.machine1.conf @@ -66,6 +66,10 @@ <allow send_destination="org.freedesktop.machine1" send_interface="org.freedesktop.machine1.Manager" + send_member="GetMachineUIDShift"/> + + <allow send_destination="org.freedesktop.machine1" + send_interface="org.freedesktop.machine1.Manager" send_member="OpenMachineLogin"/> <allow send_destination="org.freedesktop.machine1" @@ -150,6 +154,10 @@ <allow send_destination="org.freedesktop.machine1" send_interface="org.freedesktop.machine1.Machine" + send_member="GetUIDShift"/> + + <allow send_destination="org.freedesktop.machine1" + send_interface="org.freedesktop.machine1.Machine" send_member="OpenLogin"/> <allow send_destination="org.freedesktop.machine1" diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c index 4b3cac8a22..b709166aa9 100644 --- a/src/mount/mount-tool.c +++ b/src/mount/mount-tool.c @@ -1025,7 +1025,7 @@ static int list_devices(void) { j = items + n++; for (c = 0; c < _COLUMN_MAX; c++) { - const char *x; + const char *x = NULL; size_t k; switch (c) { diff --git a/src/network/netdev/Makefile b/src/network/netdev/Makefile new file mode 120000 index 0000000000..94aaae2c4d --- /dev/null +++ b/src/network/netdev/Makefile @@ -0,0 +1 @@ +../../Makefile
\ No newline at end of file diff --git a/src/network/netdev/netdev-gperf.gperf b/src/network/netdev/netdev-gperf.gperf index e74ae9eb9f..e19fa9817e 100644 --- a/src/network/netdev/netdev-gperf.gperf +++ b/src/network/netdev/netdev-gperf.gperf @@ -26,94 +26,96 @@ struct ConfigPerfItem; %struct-type %includes %% -Match.Host, config_parse_net_condition, CONDITION_HOST, offsetof(NetDev, match_host) -Match.Virtualization, config_parse_net_condition, CONDITION_VIRTUALIZATION, offsetof(NetDev, match_virt) -Match.KernelCommandLine, config_parse_net_condition, CONDITION_KERNEL_COMMAND_LINE, offsetof(NetDev, match_kernel) -Match.Architecture, config_parse_net_condition, CONDITION_ARCHITECTURE, offsetof(NetDev, match_arch) -NetDev.Description, config_parse_string, 0, offsetof(NetDev, description) -NetDev.Name, config_parse_ifname, 0, offsetof(NetDev, ifname) -NetDev.Kind, config_parse_netdev_kind, 0, offsetof(NetDev, kind) -NetDev.MTUBytes, config_parse_iec_size, 0, offsetof(NetDev, mtu) -NetDev.MACAddress, config_parse_hwaddr, 0, offsetof(NetDev, mac) -VLAN.Id, config_parse_vlanid, 0, offsetof(VLan, id) -MACVLAN.Mode, config_parse_macvlan_mode, 0, offsetof(MacVlan, mode) -MACVTAP.Mode, config_parse_macvlan_mode, 0, offsetof(MacVlan, mode) -IPVLAN.Mode, config_parse_ipvlan_mode, 0, offsetof(IPVlan, mode) -Tunnel.Local, config_parse_tunnel_address, 0, offsetof(Tunnel, local) -Tunnel.Remote, config_parse_tunnel_address, 0, offsetof(Tunnel, remote) -Tunnel.TOS, config_parse_unsigned, 0, offsetof(Tunnel, tos) -Tunnel.TTL, config_parse_unsigned, 0, offsetof(Tunnel, ttl) -Tunnel.Key, config_parse_tunnel_key, 0, offsetof(Tunnel, key) -Tunnel.InputKey, config_parse_tunnel_key, 0, offsetof(Tunnel, ikey) -Tunnel.OutputKey, config_parse_tunnel_key, 0, offsetof(Tunnel, okey) -Tunnel.DiscoverPathMTU, config_parse_bool, 0, offsetof(Tunnel, pmtudisc) -Tunnel.Mode, config_parse_ip6tnl_mode, 0, offsetof(Tunnel, ip6tnl_mode) -Tunnel.IPv6FlowLabel, config_parse_ipv6_flowlabel, 0, offsetof(Tunnel, ipv6_flowlabel) -Tunnel.CopyDSCP, config_parse_bool, 0, offsetof(Tunnel, copy_dscp) -Tunnel.EncapsulationLimit, config_parse_encap_limit, 0, offsetof(Tunnel, encap_limit) -Peer.Name, config_parse_ifname, 0, offsetof(Veth, ifname_peer) -Peer.MACAddress, config_parse_hwaddr, 0, offsetof(Veth, mac_peer) -VXLAN.Id, config_parse_uint64, 0, offsetof(VxLan, id) -VXLAN.Group, config_parse_vxlan_group_address, 0, offsetof(VxLan, group) -VXLAN.TOS, config_parse_unsigned, 0, offsetof(VxLan, tos) -VXLAN.TTL, config_parse_unsigned, 0, offsetof(VxLan, ttl) -VXLAN.MacLearning, config_parse_bool, 0, offsetof(VxLan, learning) -VXLAN.ARPProxy, config_parse_bool, 0, offsetof(VxLan, arp_proxy) -VXLAN.ReduceARPProxy, config_parse_bool, 0, offsetof(VxLan, arp_proxy) -VXLAN.L2MissNotification, config_parse_bool, 0, offsetof(VxLan, l2miss) -VXLAN.L3MissNotification, config_parse_bool, 0, offsetof(VxLan, l3miss) -VXLAN.RouteShortCircuit, config_parse_bool, 0, offsetof(VxLan, route_short_circuit) -VXLAN.UDPCheckSum, config_parse_bool, 0, offsetof(VxLan, udpcsum) -VXLAN.UDPChecksum, config_parse_bool, 0, offsetof(VxLan, udpcsum) -VXLAN.UDP6ZeroCheckSumRx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumrx) -VXLAN.UDP6ZeroChecksumRx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumrx) -VXLAN.UDP6ZeroCheckSumTx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumtx) -VXLAN.UDP6ZeroChecksumTx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumtx) -VXLAN.RemoteChecksumTx, config_parse_bool, 0, offsetof(VxLan, remote_csum_tx) -VXLAN.RemoteChecksumRx, config_parse_bool, 0, offsetof(VxLan, remote_csum_rx) -VXLAN.FDBAgeingSec, config_parse_sec, 0, offsetof(VxLan, fdb_ageing) -VXLAN.GroupPolicyExtension, config_parse_bool, 0, offsetof(VxLan, group_policy) -VXLAN.MaximumFDBEntries, config_parse_unsigned, 0, offsetof(VxLan, max_fdb) -VXLAN.PortRange, config_parse_port_range, 0, 0 -VXLAN.DestinationPort, config_parse_destination_port, 0, offsetof(VxLan, dest_port) -Tun.OneQueue, config_parse_bool, 0, offsetof(TunTap, one_queue) -Tun.MultiQueue, config_parse_bool, 0, offsetof(TunTap, multi_queue) -Tun.PacketInfo, config_parse_bool, 0, offsetof(TunTap, packet_info) -Tun.User, config_parse_string, 0, offsetof(TunTap, user_name) -Tun.Group, config_parse_string, 0, offsetof(TunTap, group_name) -Tap.OneQueue, config_parse_bool, 0, offsetof(TunTap, one_queue) -Tap.MultiQueue, config_parse_bool, 0, offsetof(TunTap, multi_queue) -Tap.PacketInfo, config_parse_bool, 0, offsetof(TunTap, packet_info) -Tap.VNetHeader, config_parse_bool, 0, offsetof(TunTap, vnet_hdr) -Tap.User, config_parse_string, 0, offsetof(TunTap, user_name) -Tap.Group, config_parse_string, 0, offsetof(TunTap, group_name) -Bond.Mode, config_parse_bond_mode, 0, offsetof(Bond, mode) -Bond.TransmitHashPolicy, config_parse_bond_xmit_hash_policy, 0, offsetof(Bond, xmit_hash_policy) -Bond.LACPTransmitRate, config_parse_bond_lacp_rate, 0, offsetof(Bond, lacp_rate) -Bond.AdSelect, config_parse_bond_ad_select, 0, offsetof(Bond, ad_select) -Bond.FailOverMACPolicy, config_parse_bond_fail_over_mac, 0, offsetof(Bond, fail_over_mac) -Bond.ARPIPTargets, config_parse_arp_ip_target_address, 0, 0 -Bond.ARPValidate, config_parse_bond_arp_validate, 0, offsetof(Bond, arp_validate) -Bond.ARPAllTargets, config_parse_bond_arp_all_targets, 0, offsetof(Bond, arp_all_targets) -Bond.PrimaryReselectPolicy, config_parse_bond_primary_reselect, 0, offsetof(Bond, primary_reselect) -Bond.ResendIGMP, config_parse_unsigned, 0, offsetof(Bond, resend_igmp) -Bond.PacketsPerSlave, config_parse_unsigned, 0, offsetof(Bond, packets_per_slave) -Bond.GratuitousARP, config_parse_unsigned, 0, offsetof(Bond, num_grat_arp) -Bond.AllSlavesActive, config_parse_unsigned, 0, offsetof(Bond, all_slaves_active) -Bond.MinLinks, config_parse_unsigned, 0, offsetof(Bond, min_links) -Bond.MIIMonitorSec, config_parse_sec, 0, offsetof(Bond, miimon) -Bond.UpDelaySec, config_parse_sec, 0, offsetof(Bond, updelay) -Bond.DownDelaySec, config_parse_sec, 0, offsetof(Bond, downdelay) -Bond.ARPIntervalSec, config_parse_sec, 0, offsetof(Bond, arp_interval) -Bond.LearnPacketIntervalSec, config_parse_sec, 0, offsetof(Bond, lp_interval) -Bridge.HelloTimeSec, config_parse_sec, 0, offsetof(Bridge, hello_time) -Bridge.MaxAgeSec, config_parse_sec, 0, offsetof(Bridge, max_age) -Bridge.AgeingTimeSec, config_parse_sec, 0, offsetof(Bridge, ageing_time) -Bridge.ForwardDelaySec, config_parse_sec, 0, offsetof(Bridge, forward_delay) -Bridge.Priority, config_parse_uint16, 0, offsetof(Bridge, priority) -Bridge.DefaultPVID, config_parse_vlanid, 0, offsetof(Bridge, default_pvid) -Bridge.MulticastQuerier, config_parse_tristate, 0, offsetof(Bridge, mcast_querier) -Bridge.MulticastSnooping, config_parse_tristate, 0, offsetof(Bridge, mcast_snooping) -Bridge.VLANFiltering, config_parse_tristate, 0, offsetof(Bridge, vlan_filtering) -Bridge.STP, config_parse_tristate, 0, offsetof(Bridge, stp) -VRF.TableId, config_parse_uint32, 0, offsetof(Vrf, table_id) +Match.Host, config_parse_net_condition, CONDITION_HOST, offsetof(NetDev, match_host) +Match.Virtualization, config_parse_net_condition, CONDITION_VIRTUALIZATION, offsetof(NetDev, match_virt) +Match.KernelCommandLine, config_parse_net_condition, CONDITION_KERNEL_COMMAND_LINE, offsetof(NetDev, match_kernel) +Match.Architecture, config_parse_net_condition, CONDITION_ARCHITECTURE, offsetof(NetDev, match_arch) +NetDev.Description, config_parse_string, 0, offsetof(NetDev, description) +NetDev.Name, config_parse_ifname, 0, offsetof(NetDev, ifname) +NetDev.Kind, config_parse_netdev_kind, 0, offsetof(NetDev, kind) +NetDev.MTUBytes, config_parse_iec_size, 0, offsetof(NetDev, mtu) +NetDev.MACAddress, config_parse_hwaddr, 0, offsetof(NetDev, mac) +VLAN.Id, config_parse_vlanid, 0, offsetof(VLan, id) +MACVLAN.Mode, config_parse_macvlan_mode, 0, offsetof(MacVlan, mode) +MACVTAP.Mode, config_parse_macvlan_mode, 0, offsetof(MacVlan, mode) +IPVLAN.Mode, config_parse_ipvlan_mode, 0, offsetof(IPVlan, mode) +Tunnel.Local, config_parse_tunnel_address, 0, offsetof(Tunnel, local) +Tunnel.Remote, config_parse_tunnel_address, 0, offsetof(Tunnel, remote) +Tunnel.TOS, config_parse_unsigned, 0, offsetof(Tunnel, tos) +Tunnel.TTL, config_parse_unsigned, 0, offsetof(Tunnel, ttl) +Tunnel.Key, config_parse_tunnel_key, 0, offsetof(Tunnel, key) +Tunnel.InputKey, config_parse_tunnel_key, 0, offsetof(Tunnel, ikey) +Tunnel.OutputKey, config_parse_tunnel_key, 0, offsetof(Tunnel, okey) +Tunnel.DiscoverPathMTU, config_parse_bool, 0, offsetof(Tunnel, pmtudisc) +Tunnel.Mode, config_parse_ip6tnl_mode, 0, offsetof(Tunnel, ip6tnl_mode) +Tunnel.IPv6FlowLabel, config_parse_ipv6_flowlabel, 0, offsetof(Tunnel, ipv6_flowlabel) +Tunnel.CopyDSCP, config_parse_bool, 0, offsetof(Tunnel, copy_dscp) +Tunnel.EncapsulationLimit, config_parse_encap_limit, 0, offsetof(Tunnel, encap_limit) +Peer.Name, config_parse_ifname, 0, offsetof(Veth, ifname_peer) +Peer.MACAddress, config_parse_hwaddr, 0, offsetof(Veth, mac_peer) +VXLAN.Id, config_parse_uint64, 0, offsetof(VxLan, id) +VXLAN.Group, config_parse_vxlan_address, 0, offsetof(VxLan, remote) +VXLAN.Local, config_parse_vxlan_address, 0, offsetof(VxLan, local) +VXLAN.Remote, config_parse_vxlan_address, 0, offsetof(VxLan, remote) +VXLAN.TOS, config_parse_unsigned, 0, offsetof(VxLan, tos) +VXLAN.TTL, config_parse_unsigned, 0, offsetof(VxLan, ttl) +VXLAN.MacLearning, config_parse_bool, 0, offsetof(VxLan, learning) +VXLAN.ARPProxy, config_parse_bool, 0, offsetof(VxLan, arp_proxy) +VXLAN.ReduceARPProxy, config_parse_bool, 0, offsetof(VxLan, arp_proxy) +VXLAN.L2MissNotification, config_parse_bool, 0, offsetof(VxLan, l2miss) +VXLAN.L3MissNotification, config_parse_bool, 0, offsetof(VxLan, l3miss) +VXLAN.RouteShortCircuit, config_parse_bool, 0, offsetof(VxLan, route_short_circuit) +VXLAN.UDPCheckSum, config_parse_bool, 0, offsetof(VxLan, udpcsum) +VXLAN.UDPChecksum, config_parse_bool, 0, offsetof(VxLan, udpcsum) +VXLAN.UDP6ZeroCheckSumRx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumrx) +VXLAN.UDP6ZeroChecksumRx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumrx) +VXLAN.UDP6ZeroCheckSumTx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumtx) +VXLAN.UDP6ZeroChecksumTx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumtx) +VXLAN.RemoteChecksumTx, config_parse_bool, 0, offsetof(VxLan, remote_csum_tx) +VXLAN.RemoteChecksumRx, config_parse_bool, 0, offsetof(VxLan, remote_csum_rx) +VXLAN.FDBAgeingSec, config_parse_sec, 0, offsetof(VxLan, fdb_ageing) +VXLAN.GroupPolicyExtension, config_parse_bool, 0, offsetof(VxLan, group_policy) +VXLAN.MaximumFDBEntries, config_parse_unsigned, 0, offsetof(VxLan, max_fdb) +VXLAN.PortRange, config_parse_port_range, 0, 0 +VXLAN.DestinationPort, config_parse_destination_port, 0, offsetof(VxLan, dest_port) +Tun.OneQueue, config_parse_bool, 0, offsetof(TunTap, one_queue) +Tun.MultiQueue, config_parse_bool, 0, offsetof(TunTap, multi_queue) +Tun.PacketInfo, config_parse_bool, 0, offsetof(TunTap, packet_info) +Tun.User, config_parse_string, 0, offsetof(TunTap, user_name) +Tun.Group, config_parse_string, 0, offsetof(TunTap, group_name) +Tap.OneQueue, config_parse_bool, 0, offsetof(TunTap, one_queue) +Tap.MultiQueue, config_parse_bool, 0, offsetof(TunTap, multi_queue) +Tap.PacketInfo, config_parse_bool, 0, offsetof(TunTap, packet_info) +Tap.VNetHeader, config_parse_bool, 0, offsetof(TunTap, vnet_hdr) +Tap.User, config_parse_string, 0, offsetof(TunTap, user_name) +Tap.Group, config_parse_string, 0, offsetof(TunTap, group_name) +Bond.Mode, config_parse_bond_mode, 0, offsetof(Bond, mode) +Bond.TransmitHashPolicy, config_parse_bond_xmit_hash_policy, 0, offsetof(Bond, xmit_hash_policy) +Bond.LACPTransmitRate, config_parse_bond_lacp_rate, 0, offsetof(Bond, lacp_rate) +Bond.AdSelect, config_parse_bond_ad_select, 0, offsetof(Bond, ad_select) +Bond.FailOverMACPolicy, config_parse_bond_fail_over_mac, 0, offsetof(Bond, fail_over_mac) +Bond.ARPIPTargets, config_parse_arp_ip_target_address, 0, 0 +Bond.ARPValidate, config_parse_bond_arp_validate, 0, offsetof(Bond, arp_validate) +Bond.ARPAllTargets, config_parse_bond_arp_all_targets, 0, offsetof(Bond, arp_all_targets) +Bond.PrimaryReselectPolicy, config_parse_bond_primary_reselect, 0, offsetof(Bond, primary_reselect) +Bond.ResendIGMP, config_parse_unsigned, 0, offsetof(Bond, resend_igmp) +Bond.PacketsPerSlave, config_parse_unsigned, 0, offsetof(Bond, packets_per_slave) +Bond.GratuitousARP, config_parse_unsigned, 0, offsetof(Bond, num_grat_arp) +Bond.AllSlavesActive, config_parse_unsigned, 0, offsetof(Bond, all_slaves_active) +Bond.MinLinks, config_parse_unsigned, 0, offsetof(Bond, min_links) +Bond.MIIMonitorSec, config_parse_sec, 0, offsetof(Bond, miimon) +Bond.UpDelaySec, config_parse_sec, 0, offsetof(Bond, updelay) +Bond.DownDelaySec, config_parse_sec, 0, offsetof(Bond, downdelay) +Bond.ARPIntervalSec, config_parse_sec, 0, offsetof(Bond, arp_interval) +Bond.LearnPacketIntervalSec, config_parse_sec, 0, offsetof(Bond, lp_interval) +Bridge.HelloTimeSec, config_parse_sec, 0, offsetof(Bridge, hello_time) +Bridge.MaxAgeSec, config_parse_sec, 0, offsetof(Bridge, max_age) +Bridge.AgeingTimeSec, config_parse_sec, 0, offsetof(Bridge, ageing_time) +Bridge.ForwardDelaySec, config_parse_sec, 0, offsetof(Bridge, forward_delay) +Bridge.Priority, config_parse_uint16, 0, offsetof(Bridge, priority) +Bridge.DefaultPVID, config_parse_vlanid, 0, offsetof(Bridge, default_pvid) +Bridge.MulticastQuerier, config_parse_tristate, 0, offsetof(Bridge, mcast_querier) +Bridge.MulticastSnooping, config_parse_tristate, 0, offsetof(Bridge, mcast_snooping) +Bridge.VLANFiltering, config_parse_tristate, 0, offsetof(Bridge, vlan_filtering) +Bridge.STP, config_parse_tristate, 0, offsetof(Bridge, stp) +VRF.TableId, config_parse_uint32, 0, offsetof(Vrf, table_id) diff --git a/src/network/netdev/tunnel.c b/src/network/netdev/tunnel.c index c11ac0c539..67f4fab400 100644 --- a/src/network/netdev/tunnel.c +++ b/src/network/netdev/tunnel.c @@ -410,10 +410,10 @@ static int netdev_tunnel_verify(NetDev *netdev, const char *filename) { return -EINVAL; } - if (netdev->kind == NETDEV_KIND_VTI6 && + if (IN_SET(netdev->kind, NETDEV_KIND_VTI6, NETDEV_KIND_IP6TNL, NETDEV_KIND_IP6GRE) && (t->family != AF_INET6 || in_addr_is_null(t->family, &t->local))) { log_netdev_error(netdev, - "vti6 tunnel without a local IPv4 address configured in %s. Ignoring", filename); + "vti6/ip6tnl/ip6gre tunnel without a local IPv6 address configured in %s. Ignoring", filename); return -EINVAL; } diff --git a/src/network/netdev/vxlan.c b/src/network/netdev/vxlan.c index 231f5cb442..b677b000fd 100644 --- a/src/network/netdev/vxlan.c +++ b/src/network/netdev/vxlan.c @@ -24,6 +24,8 @@ #include "conf-parser.h" #include "alloc-util.h" #include "extract-word.h" +#include "string-util.h" +#include "strv.h" #include "parse-util.h" #include "missing.h" @@ -48,9 +50,29 @@ static int netdev_vxlan_fill_message_create(NetDev *netdev, Link *link, sd_netli return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_ID attribute: %m"); } - r = sd_netlink_message_append_in_addr(m, IFLA_VXLAN_GROUP, &v->group.in); - if (r < 0) - return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_GROUP attribute: %m"); + if (!in_addr_is_null(v->remote_family, &v->remote)) { + + if (v->remote_family == AF_INET) + r = sd_netlink_message_append_in_addr(m, IFLA_VXLAN_GROUP, &v->remote.in); + else + r = sd_netlink_message_append_in6_addr(m, IFLA_VXLAN_GROUP6, &v->remote.in6); + + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_GROUP attribute: %m"); + + } + + if (!in_addr_is_null(v->local_family, &v->local)) { + + if (v->local_family == AF_INET) + r = sd_netlink_message_append_in_addr(m, IFLA_VXLAN_LOCAL, &v->local.in); + else + r = sd_netlink_message_append_in6_addr(m, IFLA_VXLAN_LOCAL6, &v->local.in6); + + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_LOCAL attribute: %m"); + + } r = sd_netlink_message_append_u32(m, IFLA_VXLAN_LINK, link->ifindex); if (r < 0) @@ -144,16 +166,16 @@ static int netdev_vxlan_fill_message_create(NetDev *netdev, Link *link, sd_netli return r; } -int config_parse_vxlan_group_address(const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { +int config_parse_vxlan_address(const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { VxLan *v = userdata; union in_addr_union *addr = data, buffer; int r, f; @@ -165,16 +187,28 @@ int config_parse_vxlan_group_address(const char *unit, r = in_addr_from_string_auto(rvalue, &f, &buffer); if (r < 0) { - log_syntax(unit, LOG_ERR, filename, line, r, "vxlan multicast group address is invalid, ignoring assignment: %s", rvalue); + log_syntax(unit, LOG_ERR, filename, line, r, "vxlan '%s' address is invalid, ignoring assignment: %s", lvalue, rvalue); return 0; } - if (v->family != AF_UNSPEC && v->family != f) { - log_syntax(unit, LOG_ERR, filename, line, 0, "vxlan multicast group incompatible, ignoring assignment: %s", rvalue); - return 0; + r = in_addr_is_multicast(f, &buffer); + + if (STR_IN_SET(lvalue, "Group", "Remote")) { + if (r <= 0) { + log_syntax(unit, LOG_ERR, filename, line, 0, "vxlan invalid multicast '%s' address, ignoring assignment: %s", lvalue, rvalue); + return 0; + } + + v->remote_family = f; + } else { + if (r > 0) { + log_syntax(unit, LOG_ERR, filename, line, 0, "vxlan %s can not be multicast address, ignoring assignment: %s", lvalue, rvalue); + return 0; + } + + v->local_family = f; } - v->family = f; *addr = buffer; return 0; diff --git a/src/network/netdev/vxlan.h b/src/network/netdev/vxlan.h index 6c3081d5fc..dca58e7fe6 100644 --- a/src/network/netdev/vxlan.h +++ b/src/network/netdev/vxlan.h @@ -31,8 +31,11 @@ struct VxLan { uint64_t id; - int family; - union in_addr_union group; + int remote_family; + int local_family; + + union in_addr_union remote; + union in_addr_union local; unsigned tos; unsigned ttl; @@ -60,16 +63,16 @@ struct VxLan { DEFINE_NETDEV_CAST(VXLAN, VxLan); extern const NetDevVTable vxlan_vtable; -int config_parse_vxlan_group_address(const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata); +int config_parse_vxlan_address(const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata); int config_parse_port_range(const char *unit, const char *filename, unsigned line, diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index ffd2e18a45..2e6c763aba 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -53,15 +53,21 @@ int address_new(Address **ret) { return 0; } -int address_new_static(Network *network, unsigned section, Address **ret) { +int address_new_static(Network *network, const char *filename, unsigned section_line, Address **ret) { + _cleanup_network_config_section_free_ NetworkConfigSection *n = NULL; _cleanup_address_free_ Address *address = NULL; int r; assert(network); assert(ret); + assert(!!filename == (section_line > 0)); - if (section) { - address = hashmap_get(network->addresses_by_section, UINT_TO_PTR(section)); + if (filename) { + r = network_config_section_new(filename, section_line, &n); + if (r < 0) + return r; + + address = hashmap_get(network->addresses_by_section, n); if (address) { *ret = address; address = NULL; @@ -77,9 +83,13 @@ int address_new_static(Network *network, unsigned section, Address **ret) { if (r < 0) return r; - if (section) { - address->section = section; - hashmap_put(network->addresses_by_section, UINT_TO_PTR(address->section), address); + if (filename) { + address->section = n; + n = NULL; + + r = hashmap_put(network->addresses_by_section, address->section, address); + if (r < 0) + return r; } address->network = network; @@ -101,8 +111,10 @@ void address_free(Address *address) { assert(address->network->n_static_addresses > 0); address->network->n_static_addresses--; - if (address->section) - hashmap_remove(address->network->addresses_by_section, UINT_TO_PTR(address->section)); + if (address->section) { + hashmap_remove(address->network->addresses_by_section, address->section); + network_config_section_free(address->section); + } } if (address->link) { @@ -676,7 +688,7 @@ int config_parse_broadcast( assert(rvalue); assert(data); - r = address_new_static(network, section_line, &n); + r = address_new_static(network, filename, section_line, &n); if (r < 0) return r; @@ -723,10 +735,10 @@ int config_parse_address(const char *unit, if (streq(section, "Network")) { /* we are not in an Address section, so treat * this as the special '0' section */ - section_line = 0; - } + r = address_new_static(network, NULL, 0, &n); + } else + r = address_new_static(network, filename, section_line, &n); - r = address_new_static(network, section_line, &n); if (r < 0) return r; @@ -805,12 +817,12 @@ int config_parse_label( assert(rvalue); assert(data); - r = address_new_static(network, section_line, &n); + r = address_new_static(network, filename, section_line, &n); if (r < 0) return r; - if (strlen(rvalue) >= IFNAMSIZ) { - log_syntax(unit, LOG_ERR, filename, line, 0, "Interface label is too long, ignoring assignment: %s", rvalue); + if (!address_label_valid(rvalue)) { + log_syntax(unit, LOG_ERR, filename, line, 0, "Interface label is too long or invalid, ignoring assignment: %s", rvalue); return 0; } @@ -844,7 +856,7 @@ int config_parse_lifetime(const char *unit, assert(rvalue); assert(data); - r = address_new_static(network, section_line, &n); + r = address_new_static(network, filename, section_line, &n); if (r < 0) return r; @@ -891,7 +903,7 @@ int config_parse_address_flags(const char *unit, assert(rvalue); assert(data); - r = address_new_static(network, section_line, &n); + r = address_new_static(network, filename, section_line, &n); if (r < 0) return r; diff --git a/src/network/networkd-address.h b/src/network/networkd-address.h index bc3b4fc7f3..71a07ea7a3 100644 --- a/src/network/networkd-address.h +++ b/src/network/networkd-address.h @@ -33,10 +33,11 @@ typedef struct Address Address; typedef struct Network Network; typedef struct Link Link; +typedef struct NetworkConfigSection NetworkConfigSection; struct Address { Network *network; - unsigned section; + NetworkConfigSection *section; Link *link; @@ -62,7 +63,7 @@ struct Address { LIST_FIELDS(Address, addresses); }; -int address_new_static(Network *network, unsigned section, Address **ret); +int address_new_static(Network *network, const char *filename, unsigned section, Address **ret); int address_new(Address **ret); void address_free(Address *address); int address_add_foreign(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret); diff --git a/src/network/networkd-ipv6-proxy-ndp.c b/src/network/networkd-ipv6-proxy-ndp.c new file mode 100644 index 0000000000..11c1cd9268 --- /dev/null +++ b/src/network/networkd-ipv6-proxy-ndp.c @@ -0,0 +1,209 @@ +/*** + This file is part of systemd. + + Copyright 2017 Florian Klink <flokli@flokli.de> + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <netinet/ether.h> +#include <linux/if.h> +#include <unistd.h> + +#include "fileio.h" +#include "netlink-util.h" +#include "networkd-ipv6-proxy-ndp.h" +#include "networkd-link.h" +#include "networkd-manager.h" +#include "networkd-network.h" +#include "string-util.h" + +static bool ipv6_proxy_ndp_is_needed(Link *link) { + assert(link); + + if (link->flags & IFF_LOOPBACK) + return false; + + if (!link->network) + return false; + + if (link->network->n_ipv6_proxy_ndp_addresses == 0) + return false; + + return true; +} + +static int ipv6_proxy_ndp_set(Link *link) { + const char *p = NULL; + int r, v; + + assert(link); + + v = ipv6_proxy_ndp_is_needed(link); + p = strjoina("/proc/sys/net/ipv6/conf/", link->ifname, "/proxy_ndp"); + + r = write_string_file(p, one_zero(v), WRITE_STRING_FILE_VERIFY_ON_FAILURE); + if (r < 0) + log_link_warning_errno(link, r, "Cannot configure proxy NDP for interface: %m"); + + return 0; +} + +int ipv6_proxy_ndp_address_new_static(Network *network, IPv6ProxyNDPAddress **ret) { + _cleanup_(ipv6_proxy_ndp_address_freep) IPv6ProxyNDPAddress *ipv6_proxy_ndp_address = NULL; + + assert(network); + assert(ret); + + /* allocate space for IPv6ProxyNDPAddress entry */ + ipv6_proxy_ndp_address = new0(IPv6ProxyNDPAddress, 1); + if (!ipv6_proxy_ndp_address) + return -ENOMEM; + + ipv6_proxy_ndp_address->network = network; + + LIST_PREPEND(ipv6_proxy_ndp_addresses, network->ipv6_proxy_ndp_addresses, ipv6_proxy_ndp_address); + network->n_ipv6_proxy_ndp_addresses++; + + *ret = ipv6_proxy_ndp_address; + ipv6_proxy_ndp_address = NULL; + + return 0; +} + +void ipv6_proxy_ndp_address_free(IPv6ProxyNDPAddress *ipv6_proxy_ndp_address) { + if (!ipv6_proxy_ndp_address) + return; + + if (ipv6_proxy_ndp_address->network) { + LIST_REMOVE(ipv6_proxy_ndp_addresses, ipv6_proxy_ndp_address->network->ipv6_proxy_ndp_addresses, + ipv6_proxy_ndp_address); + + assert(ipv6_proxy_ndp_address->network->n_ipv6_proxy_ndp_addresses > 0); + ipv6_proxy_ndp_address->network->n_ipv6_proxy_ndp_addresses--; + } + + free(ipv6_proxy_ndp_address); +} + +int config_parse_ipv6_proxy_ndp_address( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + Network *network = userdata; + _cleanup_(ipv6_proxy_ndp_address_freep) IPv6ProxyNDPAddress *ipv6_proxy_ndp_address = NULL; + int r; + union in_addr_union buffer; + + assert(filename); + assert(section); + assert(lvalue); + assert(rvalue); + assert(data); + + r = ipv6_proxy_ndp_address_new_static(network, &ipv6_proxy_ndp_address); + if (r < 0) + return r; + + r = in_addr_from_string(AF_INET6, rvalue, &buffer); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse IPv6 proxy NDP address, ignoring: %s", + rvalue); + return 0; + } + + r = in_addr_is_null(AF_INET6, &buffer); + if (r != 0) { + log_syntax(unit, LOG_ERR, filename, line, r, + "IPv6 proxy NDP address can not be the ANY address, ignoring: %s", rvalue); + return 0; + } + + ipv6_proxy_ndp_address->in_addr = buffer.in6; + ipv6_proxy_ndp_address = NULL; + + return 0; +} + +static int set_ipv6_proxy_ndp_address_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) { + Link *link = userdata; + int r; + + assert(link); + + r = sd_netlink_message_get_errno(m); + if (r < 0 && r != -EEXIST) + log_link_error_errno(link, r, "Could not add IPv6 proxy ndp address entry: %m"); + + return 1; +} + +/* send a request to the kernel to add a IPv6 Proxy entry to the neighbour table */ +int ipv6_proxy_ndp_address_configure(Link *link, IPv6ProxyNDPAddress *ipv6_proxy_ndp_address) { + _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL; + sd_netlink *rtnl; + int r; + + assert(link); + assert(link->network); + assert(link->manager); + assert(ipv6_proxy_ndp_address); + + rtnl = link->manager->rtnl; + + /* create new netlink message */ + r = sd_rtnl_message_new_neigh(rtnl, &req, RTM_NEWNEIGH, link->ifindex, AF_INET6); + if (r < 0) + return rtnl_log_create_error(r); + + r = sd_rtnl_message_neigh_set_flags(req, NLM_F_REQUEST | NTF_PROXY); + if (r < 0) + return rtnl_log_create_error(r); + + r = sd_netlink_message_append_in6_addr(req, NDA_DST, &ipv6_proxy_ndp_address->in_addr); + if (r < 0) + return rtnl_log_create_error(r); + + r = sd_netlink_call_async(rtnl, req, set_ipv6_proxy_ndp_address_handler, link, 0, NULL); + if (r < 0) + return log_link_error_errno(link, r, "Could not send rtnetlink message: %m"); + + return 0; +} + +/* configure all ipv6 proxy ndp addresses */ +int ipv6_proxy_ndp_addresses_configure(Link *link) { + IPv6ProxyNDPAddress *ipv6_proxy_ndp_address; + int r; + + /* enable or disable proxy_ndp itself depending on whether ipv6_proxy_ndp_addresses are set or not */ + r = ipv6_proxy_ndp_set(link); + if (r != 0) + return r; + + LIST_FOREACH(ipv6_proxy_ndp_addresses, ipv6_proxy_ndp_address, link->network->ipv6_proxy_ndp_addresses) { + r = ipv6_proxy_ndp_address_configure(link, ipv6_proxy_ndp_address); + if (r != 0) + return r; + } + return 0; +} diff --git a/src/network/networkd-ipv6-proxy-ndp.h b/src/network/networkd-ipv6-proxy-ndp.h new file mode 100644 index 0000000000..f09169f40f --- /dev/null +++ b/src/network/networkd-ipv6-proxy-ndp.h @@ -0,0 +1,44 @@ +#pragma once + +/*** + This file is part of systemd. + + Copyright 2017 Florian Klink <flokli@flokli.de> + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include "list.h" +#include "macro.h" + +typedef struct Network Network; +typedef struct IPv6ProxyNDPAddress IPv6ProxyNDPAddress; +typedef struct Link Link; + +struct IPv6ProxyNDPAddress { + Network *network; + struct in6_addr in_addr; + + LIST_FIELDS(IPv6ProxyNDPAddress, ipv6_proxy_ndp_addresses); +}; + + +int ipv6_proxy_ndp_address_new_static(Network *network, IPv6ProxyNDPAddress ** ipv6_proxy_ndp_address); +void ipv6_proxy_ndp_address_free(IPv6ProxyNDPAddress *ipv6_proxy_ndp_address); +int ipv6_proxy_ndp_address_configure(Link *link, IPv6ProxyNDPAddress *ipv6_proxy_ndp_address); +int ipv6_proxy_ndp_addresses_configure(Link *link); + +DEFINE_TRIVIAL_CLEANUP_FUNC(IPv6ProxyNDPAddress*, ipv6_proxy_ndp_address_free); + +int config_parse_ipv6_proxy_ndp_address(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index b993d27c2f..0c1229336b 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -28,6 +28,7 @@ #include "fileio.h" #include "netlink-util.h" #include "network-internal.h" +#include "networkd-ipv6-proxy-ndp.h" #include "networkd-lldp-tx.h" #include "networkd-manager.h" #include "networkd-ndisc.h" @@ -2448,6 +2449,10 @@ static int link_configure(Link *link) { if (r < 0) return r; + r = ipv6_proxy_ndp_addresses_configure(link); + if (r < 0) + return r; + r = link_set_ipv4_forward(link); if (r < 0) return r; diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf index 7b54e81fb8..68052ba544 100644 --- a/src/network/networkd-network-gperf.gperf +++ b/src/network/networkd-network-gperf.gperf @@ -67,6 +67,7 @@ Network.ActiveSlave, config_parse_bool, Network.PrimarySlave, config_parse_bool, 0, offsetof(Network, primary_slave) Network.IPv4ProxyARP, config_parse_tristate, 0, offsetof(Network, proxy_arp) Network.ProxyARP, config_parse_tristate, 0, offsetof(Network, proxy_arp) +Network.IPv6ProxyNDPAddress, config_parse_ipv6_proxy_ndp_address, 0, 0 Network.BindCarrier, config_parse_strv, 0, offsetof(Network, bind_carrier) Address.Address, config_parse_address, 0, 0 Address.Peer, config_parse_address, 0, 0 diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index bc4dc95ff9..ab372568de 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -36,6 +36,49 @@ #include "string-util.h" #include "util.h" +static void network_config_hash_func(const void *p, struct siphash *state) { + const NetworkConfigSection *c = p; + + siphash24_compress(c->filename, strlen(c->filename), state); + siphash24_compress(&c->line, sizeof(c->line), state); +} + +static int network_config_compare_func(const void *a, const void *b) { + const NetworkConfigSection *x = a, *y = b; + int r; + + r = strcmp(x->filename, y->filename); + if (r != 0) + return r; + + return y->line - x->line; +} + +const struct hash_ops network_config_hash_ops = { + .hash = network_config_hash_func, + .compare = network_config_compare_func, +}; + +int network_config_section_new(const char *filename, unsigned line, NetworkConfigSection **s) { + NetworkConfigSection *cs; + + cs = malloc0(offsetof(NetworkConfigSection, filename) + strlen(filename) + 1); + if (!cs) + return -ENOMEM; + + strcpy(cs->filename, filename); + cs->line = line; + + *s = cs; + cs = NULL; + + return 0; +} + +void network_config_section_free(NetworkConfigSection *cs) { + free(cs); +} + static int network_load_one(Manager *manager, const char *filename) { _cleanup_network_free_ Network *network = NULL; _cleanup_fclose_ FILE *file = NULL; @@ -70,16 +113,17 @@ static int network_load_one(Manager *manager, const char *filename) { LIST_HEAD_INIT(network->static_addresses); LIST_HEAD_INIT(network->static_routes); LIST_HEAD_INIT(network->static_fdb_entries); + LIST_HEAD_INIT(network->ipv6_proxy_ndp_addresses); network->stacked_netdevs = hashmap_new(&string_hash_ops); if (!network->stacked_netdevs) return log_oom(); - network->addresses_by_section = hashmap_new(NULL); + network->addresses_by_section = hashmap_new(&network_config_hash_ops); if (!network->addresses_by_section) return log_oom(); - network->routes_by_section = hashmap_new(NULL); + network->routes_by_section = hashmap_new(&network_config_hash_ops); if (!network->routes_by_section) return log_oom(); @@ -152,6 +196,7 @@ static int network_load_one(Manager *manager, const char *filename) { "DHCPv4\0" /* compat */ "DHCPServer\0" "IPv6AcceptRA\0" + "IPv6NDPProxyAddress\0" "Bridge\0" "BridgeFDB\0" "BridgeVLAN\0", @@ -224,6 +269,7 @@ void network_free(Network *network) { Route *route; Address *address; FdbEntry *fdb_entry; + IPv6ProxyNDPAddress *ipv6_proxy_ndp_address; Iterator i; if (!network) @@ -268,6 +314,9 @@ void network_free(Network *network) { while ((fdb_entry = network->static_fdb_entries)) fdb_entry_free(fdb_entry); + while ((ipv6_proxy_ndp_address = network->ipv6_proxy_ndp_addresses)) + ipv6_proxy_ndp_address_free(ipv6_proxy_ndp_address); + hashmap_free(network->addresses_by_section); hashmap_free(network->routes_by_section); hashmap_free(network->fdb_entries_by_section); @@ -379,7 +428,7 @@ int network_apply(Network *network, Link *link) { if (network->ipv4ll_route) { Route *route; - r = route_new_static(network, 0, &route); + r = route_new_static(network, "Network", 0, &route); if (r < 0) return r; diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h index b7da9d22d4..4ce066a764 100644 --- a/src/network/networkd-network.h +++ b/src/network/networkd-network.h @@ -31,6 +31,7 @@ #include "networkd-brvlan.h" #include "networkd-fdb.h" #include "networkd-lldp-tx.h" +#include "networkd-ipv6-proxy-ndp.h" #include "networkd-route.h" #include "networkd-util.h" #include "netdev/netdev.h" @@ -81,6 +82,17 @@ typedef struct DUID { uint8_t raw_data[MAX_DUID_LEN]; } DUID; +typedef struct NetworkConfigSection { + unsigned line; + char filename[]; +} NetworkConfigSection; + +int network_config_section_new(const char *filename, unsigned line, NetworkConfigSection **s); +void network_config_section_free(NetworkConfigSection *network); + +DEFINE_TRIVIAL_CLEANUP_FUNC(NetworkConfigSection*, network_config_section_free); +#define _cleanup_network_config_section_free_ _cleanup_(network_config_section_freep) + typedef struct Manager Manager; struct Network { @@ -188,10 +200,12 @@ struct Network { LIST_HEAD(Address, static_addresses); LIST_HEAD(Route, static_routes); LIST_HEAD(FdbEntry, static_fdb_entries); + LIST_HEAD(IPv6ProxyNDPAddress, ipv6_proxy_ndp_addresses); unsigned n_static_addresses; unsigned n_static_routes; unsigned n_static_fdb_entries; + unsigned n_ipv6_proxy_ndp_addresses; Hashmap *addresses_by_section; Hashmap *routes_by_section; diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index bde26a42d4..570083f180 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -77,15 +77,21 @@ int route_new(Route **ret) { return 0; } -int route_new_static(Network *network, unsigned section, Route **ret) { +int route_new_static(Network *network, const char *filename, unsigned section_line, Route **ret) { + _cleanup_network_config_section_free_ NetworkConfigSection *n = NULL; _cleanup_route_free_ Route *route = NULL; int r; assert(network); assert(ret); + assert(!!filename == (section_line > 0)); - if (section) { - route = hashmap_get(network->routes_by_section, UINT_TO_PTR(section)); + if (filename) { + r = network_config_section_new(filename, section_line, &n); + if (r < 0) + return r; + + route = hashmap_get(network->routes_by_section, n); if (route) { *ret = route; route = NULL; @@ -103,10 +109,11 @@ int route_new_static(Network *network, unsigned section, Route **ret) { route->protocol = RTPROT_STATIC; - if (section) { - route->section = section; + if (filename) { + route->section = n; + n = NULL; - r = hashmap_put(network->routes_by_section, UINT_TO_PTR(route->section), route); + r = hashmap_put(network->routes_by_section, route->section, route); if (r < 0) return r; } @@ -132,9 +139,11 @@ void route_free(Route *route) { route->network->n_static_routes--; if (route->section) - hashmap_remove(route->network->routes_by_section, UINT_TO_PTR(route->section)); + hashmap_remove(route->network->routes_by_section, route->section); } + network_config_section_free(route->section); + if (route->link) { set_remove(route->link->routes, route); set_remove(route->link->routes_foreign, route); @@ -673,10 +682,10 @@ int config_parse_gateway(const char *unit, if (streq(section, "Network")) { /* we are not in an Route section, so treat * this as the special '0' section */ - section_line = 0; - } + r = route_new_static(network, NULL, 0, &n); + } else + r = route_new_static(network, filename, section_line, &n); - r = route_new_static(network, section_line, &n); if (r < 0) return r; @@ -715,7 +724,7 @@ int config_parse_preferred_src(const char *unit, assert(rvalue); assert(data); - r = route_new_static(network, section_line, &n); + r = route_new_static(network, filename, section_line, &n); if (r < 0) return r; @@ -757,7 +766,7 @@ int config_parse_destination(const char *unit, assert(rvalue); assert(data); - r = route_new_static(network, section_line, &n); + r = route_new_static(network, filename, section_line, &n); if (r < 0) return r; @@ -835,7 +844,7 @@ int config_parse_route_priority(const char *unit, assert(rvalue); assert(data); - r = route_new_static(network, section_line, &n); + r = route_new_static(network, filename, section_line, &n); if (r < 0) return r; @@ -872,7 +881,7 @@ int config_parse_route_scope(const char *unit, assert(rvalue); assert(data); - r = route_new_static(network, section_line, &n); + r = route_new_static(network, filename, section_line, &n); if (r < 0) return r; @@ -913,7 +922,7 @@ int config_parse_route_table(const char *unit, assert(rvalue); assert(data); - r = route_new_static(network, section_line, &n); + r = route_new_static(network, filename, section_line, &n); if (r < 0) return r; diff --git a/src/network/networkd-route.h b/src/network/networkd-route.h index 02f0b27675..4ebfa0f0bd 100644 --- a/src/network/networkd-route.h +++ b/src/network/networkd-route.h @@ -20,12 +20,13 @@ ***/ typedef struct Route Route; +typedef struct NetworkConfigSection NetworkConfigSection; #include "networkd-network.h" struct Route { Network *network; - unsigned section; + NetworkConfigSection *section; Link *link; @@ -52,7 +53,7 @@ struct Route { LIST_FIELDS(Route, routes); }; -int route_new_static(Network *network, unsigned section, Route **ret); +int route_new_static(Network *network, const char *filename, unsigned section_line, Route **ret); int route_new(Route **ret); void route_free(Route *route); int route_configure(Route *route, Link *link, sd_netlink_message_handler_t callback); diff --git a/src/network/wait-online/Makefile b/src/network/wait-online/Makefile new file mode 120000 index 0000000000..94aaae2c4d --- /dev/null +++ b/src/network/wait-online/Makefile @@ -0,0 +1 @@ +../../Makefile
\ No newline at end of file diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c index 5274767b96..d749756437 100644 --- a/src/nspawn/nspawn-cgroup.c +++ b/src/nspawn/nspawn-cgroup.c @@ -78,13 +78,12 @@ int sync_cgroup(pid_t pid, CGroupUnified unified_requested, uid_t arg_uid_shift) char tree[] = "/tmp/unifiedXXXXXX", pid_string[DECIMAL_STR_MAX(pid) + 1]; bool undo_mount = false; const char *fn; - int unified, r; + int r, unified_controller; - unified = cg_unified(SYSTEMD_CGROUP_CONTROLLER); - if (unified < 0) - return log_error_errno(unified, "Failed to determine whether the unified hierarchy is used: %m"); - - if ((unified > 0) == (unified_requested >= CGROUP_UNIFIED_SYSTEMD)) + unified_controller = cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER); + if (unified_controller < 0) + return log_error_errno(unified_controller, "Failed to determine whether the systemd hierarchy is unified: %m"); + if ((unified_controller > 0) == (unified_requested >= CGROUP_UNIFIED_SYSTEMD)) return 0; /* When the host uses the legacy cgroup setup, but the @@ -100,7 +99,7 @@ int sync_cgroup(pid_t pid, CGroupUnified unified_requested, uid_t arg_uid_shift) if (!mkdtemp(tree)) return log_error_errno(errno, "Failed to generate temporary mount point for unified hierarchy: %m"); - if (unified) + if (unified_controller > 0) r = mount_verbose(LOG_ERR, "cgroup", tree, "cgroup", MS_NOSUID|MS_NOEXEC|MS_NODEV, "none,name=systemd,xattr"); else @@ -142,7 +141,7 @@ finish: int create_subcgroup(pid_t pid, CGroupUnified unified_requested) { _cleanup_free_ char *cgroup = NULL; const char *child; - int unified, r; + int r; CGroupMask supported; /* In the unified hierarchy inner nodes may only contain @@ -154,10 +153,10 @@ int create_subcgroup(pid_t pid, CGroupUnified unified_requested) { if (unified_requested == CGROUP_UNIFIED_NONE) return 0; - unified = cg_unified(SYSTEMD_CGROUP_CONTROLLER); - if (unified < 0) - return log_error_errno(unified, "Failed to determine whether the unified hierarchy is used: %m"); - if (unified == 0) + r = cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER); + if (r < 0) + return log_error_errno(r, "Failed to determine whether the systemd controller is unified: %m"); + if (r == 0) return 0; r = cg_mask_supported(&supported); diff --git a/src/nspawn/nspawn-mount.c b/src/nspawn/nspawn-mount.c index 4b2838b752..d276994120 100644 --- a/src/nspawn/nspawn-mount.c +++ b/src/nspawn/nspawn-mount.c @@ -545,10 +545,10 @@ int mount_all(const char *dest, static const MountPoint mount_table[] = { /* inner child mounts */ { "proc", "/proc", "proc", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, MOUNT_FATAL|MOUNT_IN_USERNS }, - { "/proc/sys", "/proc/sys", NULL, NULL, MS_BIND, MOUNT_FATAL|MOUNT_IN_USERNS|MOUNT_APPLY_APIVFS_RO }, /* Bind mount first ...*/ + { "/proc/sys", "/proc/sys", NULL, NULL, MS_BIND, MOUNT_FATAL|MOUNT_IN_USERNS|MOUNT_APPLY_APIVFS_RO }, /* Bind mount first ... */ { "/proc/sys/net", "/proc/sys/net", NULL, NULL, MS_BIND, MOUNT_FATAL|MOUNT_IN_USERNS|MOUNT_APPLY_APIVFS_RO|MOUNT_APPLY_APIVFS_NETNS }, /* (except for this) */ { NULL, "/proc/sys", NULL, NULL, MS_BIND|MS_RDONLY|MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_REMOUNT, MOUNT_FATAL|MOUNT_IN_USERNS|MOUNT_APPLY_APIVFS_RO }, /* ... then, make it r/o */ - { "/proc/sysrq-trigger", "/proc/sysrq-trigger", NULL, NULL, MS_BIND, MOUNT_IN_USERNS|MOUNT_APPLY_APIVFS_RO }, /* Bind mount first ...*/ + { "/proc/sysrq-trigger", "/proc/sysrq-trigger", NULL, NULL, MS_BIND, MOUNT_IN_USERNS|MOUNT_APPLY_APIVFS_RO }, /* Bind mount first ... */ { NULL, "/proc/sysrq-trigger", NULL, NULL, MS_BIND|MS_RDONLY|MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_REMOUNT, MOUNT_IN_USERNS|MOUNT_APPLY_APIVFS_RO }, /* ... then, make it r/o */ /* outer child mounts */ @@ -890,7 +890,7 @@ static int get_controllers(Set *subsystems) { *e = 0; - if (STR_IN_SET(l, "", "name=systemd")) + if (STR_IN_SET(l, "", "name=systemd", "name=unified")) continue; p = strdup(l); @@ -909,7 +909,6 @@ static int mount_legacy_cgroup_hierarchy( const char *dest, const char *controller, const char *hierarchy, - CGroupUnified unified_requested, bool read_only) { const char *to, *fstype, *opts; @@ -927,14 +926,12 @@ static int mount_legacy_cgroup_hierarchy( /* The superblock mount options of the mount point need to be * identical to the hosts', and hence writable... */ - if (streq(controller, SYSTEMD_CGROUP_CONTROLLER)) { - if (unified_requested >= CGROUP_UNIFIED_SYSTEMD) { - fstype = "cgroup2"; - opts = NULL; - } else { - fstype = "cgroup"; - opts = "none,name=systemd,xattr"; - } + if (streq(controller, SYSTEMD_CGROUP_CONTROLLER_HYBRID)) { + fstype = "cgroup2"; + opts = NULL; + } else if (streq(controller, SYSTEMD_CGROUP_CONTROLLER_LEGACY)) { + fstype = "cgroup"; + opts = "none,name=systemd,xattr"; } else { fstype = "cgroup"; opts = controller; @@ -994,7 +991,10 @@ static int mount_legacy_cgns_supported( return r; } - if (cg_all_unified() > 0) + r = cg_all_unified(); + if (r < 0) + return r; + if (r > 0) goto skip_controllers; controllers = set_new(&string_hash_ops); @@ -1012,7 +1012,7 @@ static int mount_legacy_cgns_supported( if (!controller) break; - r = mount_legacy_cgroup_hierarchy("", controller, controller, unified_requested, !userns); + r = mount_legacy_cgroup_hierarchy("", controller, controller, !userns); if (r < 0) return r; @@ -1046,7 +1046,13 @@ static int mount_legacy_cgns_supported( } skip_controllers: - r = mount_legacy_cgroup_hierarchy("", SYSTEMD_CGROUP_CONTROLLER, "systemd", unified_requested, false); + if (unified_requested >= CGROUP_UNIFIED_SYSTEMD) { + r = mount_legacy_cgroup_hierarchy("", SYSTEMD_CGROUP_CONTROLLER_HYBRID, "unified", false); + if (r < 0) + return r; + } + + r = mount_legacy_cgroup_hierarchy("", SYSTEMD_CGROUP_CONTROLLER_LEGACY, "systemd", false); if (r < 0) return r; @@ -1091,7 +1097,10 @@ static int mount_legacy_cgns_unsupported( return r; } - if (cg_all_unified() > 0) + r = cg_all_unified(); + if (r < 0) + return r; + if (r > 0) goto skip_controllers; controllers = set_new(&string_hash_ops); @@ -1117,7 +1126,7 @@ static int mount_legacy_cgns_unsupported( if (r == -EINVAL) { /* Not a symbolic link, but directly a single cgroup hierarchy */ - r = mount_legacy_cgroup_hierarchy(dest, controller, controller, unified_requested, true); + r = mount_legacy_cgroup_hierarchy(dest, controller, controller, true); if (r < 0) return r; @@ -1137,7 +1146,7 @@ static int mount_legacy_cgns_unsupported( continue; } - r = mount_legacy_cgroup_hierarchy(dest, combined, combined, unified_requested, true); + r = mount_legacy_cgroup_hierarchy(dest, combined, combined, true); if (r < 0) return r; @@ -1150,7 +1159,13 @@ static int mount_legacy_cgns_unsupported( } skip_controllers: - r = mount_legacy_cgroup_hierarchy(dest, SYSTEMD_CGROUP_CONTROLLER, "systemd", unified_requested, false); + if (unified_requested >= CGROUP_UNIFIED_SYSTEMD) { + r = mount_legacy_cgroup_hierarchy(dest, SYSTEMD_CGROUP_CONTROLLER_HYBRID, "unified", false); + if (r < 0) + return r; + } + + r = mount_legacy_cgroup_hierarchy(dest, SYSTEMD_CGROUP_CONTROLLER_LEGACY, "systemd", false); if (r < 0) return r; @@ -1202,12 +1217,25 @@ int mount_cgroups( return mount_legacy_cgns_unsupported(dest, unified_requested, userns, uid_shift, uid_range, selinux_apifs_context); } +static int mount_systemd_cgroup_writable_one(const char *systemd_own, const char *systemd_root) +{ + int r; + + /* Make our own cgroup a (writable) bind mount */ + r = mount_verbose(LOG_ERR, systemd_own, systemd_own, NULL, MS_BIND, NULL); + if (r < 0) + return r; + + /* And then remount the systemd cgroup root read-only */ + return mount_verbose(LOG_ERR, NULL, systemd_root, NULL, + MS_BIND|MS_REMOUNT|MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_RDONLY, NULL); +} + int mount_systemd_cgroup_writable( const char *dest, CGroupUnified unified_requested) { _cleanup_free_ char *own_cgroup_path = NULL; - const char *systemd_root, *systemd_own; int r; assert(dest); @@ -1220,22 +1248,19 @@ int mount_systemd_cgroup_writable( if (path_equal(own_cgroup_path, "/")) return 0; - if (unified_requested >= CGROUP_UNIFIED_ALL) { - systemd_own = strjoina(dest, "/sys/fs/cgroup", own_cgroup_path); - systemd_root = prefix_roota(dest, "/sys/fs/cgroup"); - } else { - systemd_own = strjoina(dest, "/sys/fs/cgroup/systemd", own_cgroup_path); - systemd_root = prefix_roota(dest, "/sys/fs/cgroup/systemd"); - } + if (unified_requested >= CGROUP_UNIFIED_ALL) + return mount_systemd_cgroup_writable_one(strjoina(dest, "/sys/fs/cgroup", own_cgroup_path), + prefix_roota(dest, "/sys/fs/cgroup")); - /* Make our own cgroup a (writable) bind mount */ - r = mount_verbose(LOG_ERR, systemd_own, systemd_own, NULL, MS_BIND, NULL); - if (r < 0) - return r; + if (unified_requested >= CGROUP_UNIFIED_SYSTEMD) { + r = mount_systemd_cgroup_writable_one(strjoina(dest, "/sys/fs/cgroup/unified", own_cgroup_path), + prefix_roota(dest, "/sys/fs/cgroup/unified")); + if (r < 0) + return r; + } - /* And then remount the systemd cgroup root read-only */ - return mount_verbose(LOG_ERR, NULL, systemd_root, NULL, - MS_BIND|MS_REMOUNT|MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_RDONLY, NULL); + return mount_systemd_cgroup_writable_one(strjoina(dest, "/sys/fs/cgroup/systemd", own_cgroup_path), + prefix_roota(dest, "/sys/fs/cgroup/systemd")); } int setup_volatile_state( diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index b172b44933..1fc0501c2e 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -41,6 +41,7 @@ #include <sys/wait.h> #include <unistd.h> +#include "sd-bus.h" #include "sd-daemon.h" #include "sd-id128.h" @@ -49,6 +50,7 @@ #include "base-filesystem.h" #include "blkid-util.h" #include "btrfs-util.h" +#include "bus-util.h" #include "cap-list.h" #include "capability-util.h" #include "cgroup-util.h" @@ -314,7 +316,7 @@ static int custom_mount_check_all(void) { static int detect_unified_cgroup_hierarchy(const char *directory) { const char *e; - int r, all_unified, systemd_unified; + int r; /* Allow the user to control whether the unified hierarchy is used */ e = getenv("UNIFIED_CGROUP_HIERARCHY"); @@ -330,15 +332,11 @@ static int detect_unified_cgroup_hierarchy(const char *directory) { return 0; } - all_unified = cg_all_unified(); - systemd_unified = cg_unified(SYSTEMD_CGROUP_CONTROLLER); - - if (all_unified < 0 || systemd_unified < 0) - return log_error_errno(all_unified < 0 ? all_unified : systemd_unified, - "Failed to determine whether the unified cgroups hierarchy is used: %m"); - /* Otherwise inherit the default from the host system */ - if (all_unified > 0) { + r = cg_all_unified(); + if (r < 0) + return log_error_errno(r, "Failed to determine whether we are in all unified mode."); + if (r > 0) { /* Unified cgroup hierarchy support was added in 230. Unfortunately the detection * routine only detects 231, so we'll have a false negative here for 230. */ r = systemd_installation_has_version(directory, 230); @@ -348,9 +346,9 @@ static int detect_unified_cgroup_hierarchy(const char *directory) { arg_unified_cgroup_hierarchy = CGROUP_UNIFIED_ALL; else arg_unified_cgroup_hierarchy = CGROUP_UNIFIED_NONE; - } else if (systemd_unified > 0) { - /* Mixed cgroup hierarchy support was added in 232 */ - r = systemd_installation_has_version(directory, 232); + } else if (cg_unified_controller(SYSTEMD_CGROUP_CONTROLLER) > 0) { + /* Mixed cgroup hierarchy support was added in 233 */ + r = systemd_installation_has_version(directory, 233); if (r < 0) return log_error_errno(r, "Failed to determine systemd version in container: %m"); if (r > 0) @@ -1323,6 +1321,19 @@ static int setup_timezone(const char *dest) { return 0; } +static int resolved_running(void) { + _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; + int r; + + /* Check if resolved is running */ + + r = sd_bus_open_system(&bus); + if (r < 0) + return r; + + return bus_name_has_owner(bus, "org.freedesktop.resolve1", NULL); +} + static int setup_resolv_conf(const char *dest) { _cleanup_free_ char *resolved = NULL, *etc = NULL; const char *where; @@ -1346,8 +1357,8 @@ static int setup_resolv_conf(const char *dest) { return 0; } - if (access("/run/systemd/resolve/resolv.conf", F_OK) >= 0 && - access("/usr/lib/systemd/resolv.conf", F_OK) >= 0) { + if (access("/usr/lib/systemd/resolv.conf", F_OK) >= 0 && + resolved_running() > 0) { /* resolved is enabled on the host. In this, case bind mount its static resolv.conf file into the * container, so that the container can use the host's resolver. Given that network namespacing is @@ -1364,7 +1375,7 @@ static int setup_resolv_conf(const char *dest) { } /* If that didn't work, let's copy the file */ - r = copy_file("/etc/resolv.conf", where, O_TRUNC|O_NOFOLLOW, 0644, 0); + r = copy_file("/etc/resolv.conf", where, O_TRUNC|O_NOFOLLOW, 0644, 0, COPY_REFLINK); if (r < 0) { /* If the file already exists as symlink, let's suppress the warning, under the assumption that * resolved or something similar runs inside and the symlink points there. @@ -2153,8 +2164,6 @@ static int inner_child( assert(directory); assert(kmsg_socket >= 0); - cg_unified_flush(); - if (arg_userns_mode != USER_NAMESPACE_NO) { /* Tell the parent, that it now can write the UID map. */ (void) barrier_place(barrier); /* #1 */ @@ -2425,8 +2434,6 @@ static int outer_child( assert(notify_socket >= 0); assert(kmsg_socket >= 0); - cg_unified_flush(); - if (prctl(PR_SET_PDEATHSIG, SIGKILL) < 0) return log_error_errno(errno, "PR_SET_PDEATHSIG failed: %m"); @@ -2471,10 +2478,6 @@ static int outer_child( if (r < 0) return r; - r = detect_unified_cgroup_hierarchy(directory); - if (r < 0) - return r; - if (arg_userns_mode != USER_NAMESPACE_NO) { /* Let the parent know which UID shift we read from the image */ l = send(uid_shift_socket, &arg_uid_shift, sizeof(arg_uid_shift), MSG_NOSIGNAL); @@ -2539,7 +2542,7 @@ static int outer_child( * inside the containter that create a new mount namespace. * See https://github.com/systemd/systemd/issues/3860 * Further submounts (such as /dev) done after this will inherit the - * shared propagation mode.*/ + * shared propagation mode. */ r = mount_verbose(LOG_ERR, NULL, directory, NULL, MS_SHARED|MS_REC, NULL); if (r < 0) return r; @@ -3527,6 +3530,10 @@ int main(int argc, char *argv[]) { log_parse_environment(); log_open(); + r = cg_unified_flush(); + if (r < 0) + return log_error_errno(r, "Failed to determine whether the unified cgroups hierarchy is used: %m"); + /* Make sure rename_process() in the stub init process can work */ saved_argv = argv; saved_argc = argc; @@ -3700,7 +3707,7 @@ int main(int argc, char *argv[]) { goto finish; } - r = copy_file(arg_image, np, O_EXCL, arg_read_only ? 0400 : 0600, FS_NOCOW_FL); + r = copy_file(arg_image, np, O_EXCL, arg_read_only ? 0400 : 0600, FS_NOCOW_FL, COPY_REFLINK); if (r < 0) { r = log_error_errno(r, "Failed to copy image file: %m"); goto finish; @@ -3795,6 +3802,10 @@ int main(int argc, char *argv[]) { if (r < 0) goto finish; + r = detect_unified_cgroup_hierarchy(arg_directory); + if (r < 0) + goto finish; + interactive = isatty(STDIN_FILENO) > 0 && isatty(STDOUT_FILENO) > 0; @@ -3856,7 +3867,7 @@ finish: /* Try to flush whatever is still queued in the pty */ if (master >= 0) { - (void) copy_bytes(master, STDOUT_FILENO, (uint64_t) -1, false); + (void) copy_bytes(master, STDOUT_FILENO, (uint64_t) -1, 0); master = safe_close(master); } diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c index 11c27575c0..0570fde592 100644 --- a/src/nss-myhostname/nss-myhostname.c +++ b/src/nss-myhostname/nss-myhostname.c @@ -55,7 +55,7 @@ enum nss_status _nss_myhostname_gethostbyname4_r( _cleanup_free_ struct local_address *addresses = NULL; _cleanup_free_ char *hn = NULL; const char *canonical = NULL; - int n_addresses = 0, lo_ifi; + int n_addresses = 0; uint32_t local_address_ipv4; struct local_address *a; size_t l, idx, ms; @@ -111,14 +111,11 @@ enum nss_status _nss_myhostname_gethostbyname4_r( local_address_ipv4 = LOCALADDRESS_IPV4; } - /* If this call fails we fill in 0 as scope. Which is fine */ - lo_ifi = n_addresses <= 0 ? LOOPBACK_IFINDEX : 0; - l = strlen(canonical); ms = ALIGN(l+1) + ALIGN(sizeof(struct gaih_addrtuple)) * (n_addresses > 0 ? n_addresses : 2); if (buflen < ms) { - *errnop = ENOMEM; - *h_errnop = NO_RECOVERY; + *errnop = ERANGE; + *h_errnop = NETDB_INTERNAL; return NSS_STATUS_TRYAGAIN; } @@ -135,7 +132,7 @@ enum nss_status _nss_myhostname_gethostbyname4_r( r_tuple->name = r_name; r_tuple->family = AF_INET6; memcpy(r_tuple->addr, LOCALADDRESS_IPV6, 16); - r_tuple->scopeid = (uint32_t) lo_ifi; + r_tuple->scopeid = 0; idx += ALIGN(sizeof(struct gaih_addrtuple)); r_tuple_prev = r_tuple; @@ -146,7 +143,7 @@ enum nss_status _nss_myhostname_gethostbyname4_r( r_tuple->name = r_name; r_tuple->family = AF_INET; *(uint32_t*) r_tuple->addr = local_address_ipv4; - r_tuple->scopeid = (uint32_t) lo_ifi; + r_tuple->scopeid = 0; idx += ALIGN(sizeof(struct gaih_addrtuple)); r_tuple_prev = r_tuple; @@ -158,7 +155,7 @@ enum nss_status _nss_myhostname_gethostbyname4_r( r_tuple->next = r_tuple_prev; r_tuple->name = r_name; r_tuple->family = a->family; - r_tuple->scopeid = a->ifindex; + r_tuple->scopeid = a->family == AF_INET6 && IN6_IS_ADDR_LINKLOCAL(&a->address.in6) ? a->ifindex : 0; memcpy(r_tuple->addr, &a->address, 16); idx += ALIGN(sizeof(struct gaih_addrtuple)); @@ -223,8 +220,8 @@ static enum nss_status fill_in_hostent( (c > 0 ? c+1 : 2) * sizeof(char*); if (buflen < ms) { - *errnop = ENOMEM; - *h_errnop = NO_RECOVERY; + *errnop = ERANGE; + *h_errnop = NETDB_INTERNAL; return NSS_STATUS_TRYAGAIN; } diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c index fac37faea5..ea90953abb 100644 --- a/src/nss-mymachines/nss-mymachines.c +++ b/src/nss-mymachines/nss-mymachines.c @@ -151,8 +151,8 @@ enum nss_status _nss_mymachines_gethostbyname4_r( l = strlen(name); ms = ALIGN(l+1) + ALIGN(sizeof(struct gaih_addrtuple)) * c; if (buflen < ms) { - *errnop = ENOMEM; - *h_errnop = TRY_AGAIN; + *errnop = ERANGE; + *h_errnop = NETDB_INTERNAL; return NSS_STATUS_TRYAGAIN; } @@ -306,8 +306,8 @@ enum nss_status _nss_mymachines_gethostbyname3_r( ms = ALIGN(l+1) + c * ALIGN(alen) + (c+2) * sizeof(char*); if (buflen < ms) { - *errnop = ENOMEM; - *h_errnop = NO_RECOVERY; + *errnop = ERANGE; + *h_errnop = NETDB_INTERNAL; return NSS_STATUS_TRYAGAIN; } @@ -471,7 +471,7 @@ enum nss_status _nss_mymachines_getpwnam_r( l = strlen(name); if (buflen < l+1) { - *errnop = ENOMEM; + *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } @@ -550,7 +550,7 @@ enum nss_status _nss_mymachines_getpwuid_r( goto not_found; if (snprintf(buffer, buflen, "vu-%s-" UID_FMT, machine, (uid_t) mapped) >= (int) buflen) { - *errnop = ENOMEM; + *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } @@ -645,7 +645,7 @@ enum nss_status _nss_mymachines_getgrnam_r( l = sizeof(char*) + strlen(name) + 1; if (buflen < l) { - *errnop = ENOMEM; + *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } @@ -722,13 +722,13 @@ enum nss_status _nss_mymachines_getgrgid_r( goto not_found; if (buflen < sizeof(char*) + 1) { - *errnop = ENOMEM; + *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } memzero(buffer, sizeof(char*)); if (snprintf(buffer + sizeof(char*), buflen - sizeof(char*), "vg-%s-" GID_FMT, machine, (gid_t) mapped) >= (int) buflen) { - *errnop = ENOMEM; + *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } diff --git a/src/nss-resolve/nss-resolve.c b/src/nss-resolve/nss-resolve.c index d46a3afe91..d155625e11 100644 --- a/src/nss-resolve/nss-resolve.c +++ b/src/nss-resolve/nss-resolve.c @@ -110,6 +110,20 @@ static int count_addresses(sd_bus_message *m, int af, const char **canonical) { return c; } +static uint32_t ifindex_to_scopeid(int family, const void *a, int ifindex) { + struct in6_addr in6; + + if (family != AF_INET6) + return 0; + + /* Some apps can't deal with the scope ID attached to non-link-local addresses. Hence, let's suppress that. */ + + assert(sizeof(in6) == FAMILY_ADDRESS_SIZE(AF_INET6)); + memcpy(&in6, a, sizeof(struct in6_addr)); + + return IN6_IS_ADDR_LINKLOCAL(&in6) ? ifindex : 0; +} + enum nss_status _nss_resolve_gethostbyname4_r( const char *name, struct gaih_addrtuple **pat, @@ -192,8 +206,8 @@ enum nss_status _nss_resolve_gethostbyname4_r( l = strlen(canonical); ms = ALIGN(l+1) + ALIGN(sizeof(struct gaih_addrtuple)) * c; if (buflen < ms) { - *errnop = ENOMEM; - *h_errnop = TRY_AGAIN; + *errnop = ERANGE; + *h_errnop = NETDB_INTERNAL; return NSS_STATUS_TRYAGAIN; } @@ -245,7 +259,7 @@ enum nss_status _nss_resolve_gethostbyname4_r( r_tuple->next = i == c-1 ? NULL : (struct gaih_addrtuple*) ((char*) r_tuple + ALIGN(sizeof(struct gaih_addrtuple))); r_tuple->name = r_name; r_tuple->family = family; - r_tuple->scopeid = ifindex; + r_tuple->scopeid = ifindex_to_scopeid(family, a, ifindex); memcpy(r_tuple->addr, a, sz); idx += ALIGN(sizeof(struct gaih_addrtuple)); @@ -380,8 +394,8 @@ enum nss_status _nss_resolve_gethostbyname3_r( ms = ALIGN(l+1) + c * ALIGN(alen) + (c+2) * sizeof(char*); if (buflen < ms) { - *errnop = ENOMEM; - *h_errnop = TRY_AGAIN; + *errnop = ERANGE; + *h_errnop = NETDB_INTERNAL; return NSS_STATUS_TRYAGAIN; } @@ -601,8 +615,8 @@ enum nss_status _nss_resolve_gethostbyaddr2_r( c * sizeof(char*); /* pointers to aliases, plus trailing NULL */ if (buflen < ms) { - *errnop = ENOMEM; - *h_errnop = TRY_AGAIN; + *errnop = ERANGE; + *h_errnop = NETDB_INTERNAL; return NSS_STATUS_TRYAGAIN; } diff --git a/src/nss-systemd/nss-systemd.c b/src/nss-systemd/nss-systemd.c index fd5064c937..f404755dac 100644 --- a/src/nss-systemd/nss-systemd.c +++ b/src/nss-systemd/nss-systemd.c @@ -185,7 +185,7 @@ enum nss_status _nss_systemd_getpwnam_r( l = strlen(name); if (buflen < l+1) { - *errnop = ENOMEM; + *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } @@ -286,7 +286,7 @@ enum nss_status _nss_systemd_getpwuid_r( l = strlen(translated) + 1; if (buflen < l) { - *errnop = ENOMEM; + *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } @@ -386,7 +386,7 @@ enum nss_status _nss_systemd_getgrnam_r( l = sizeof(char*) + strlen(name) + 1; if (buflen < l) { - *errnop = ENOMEM; + *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } @@ -484,7 +484,7 @@ enum nss_status _nss_systemd_getgrgid_r( l = sizeof(char*) + strlen(translated) + 1; if (buflen < l) { - *errnop = ENOMEM; + *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } diff --git a/src/resolve/resolve-tool.c b/src/resolve/resolve-tool.c index 07d9582ccb..32537ce6e8 100644 --- a/src/resolve/resolve-tool.c +++ b/src/resolve/resolve-tool.c @@ -38,7 +38,7 @@ #include "strv.h" #include "terminal-util.h" -#define DNS_CALL_TIMEOUT_USEC (45*USEC_PER_SEC) +#define DNS_CALL_TIMEOUT_USEC (90*USEC_PER_SEC) static int arg_family = AF_UNSPEC; static int arg_ifindex = 0; @@ -1186,6 +1186,7 @@ static int status_ifindex(sd_bus *bus, int ifindex, const char *name, bool *empt {} }; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_free_ char *ifi = NULL, *p = NULL; char ifname[IF_NAMESIZE] = ""; char **i; @@ -1213,9 +1214,10 @@ static int status_ifindex(sd_bus *bus, int ifindex, const char *name, bool *empt "org.freedesktop.resolve1", p, property_map, + &error, &link_info); if (r < 0) { - log_error_errno(r, "Failed to get link data for %i: %m", ifindex); + log_error_errno(r, "Failed to get link data for %i: %s", ifindex, bus_error_message(&error, r)); goto finish; } @@ -1405,6 +1407,7 @@ static int status_global(sd_bus *bus, bool *empty_line) { {} }; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; char **i; int r; @@ -1415,9 +1418,10 @@ static int status_global(sd_bus *bus, bool *empty_line) { "org.freedesktop.resolve1", "/org/freedesktop/resolve1", property_map, + &error, &global_info); if (r < 0) { - log_error_errno(r, "Failed to get global data: %m"); + log_error_errno(r, "Failed to get global data: %s", bus_error_message(&error, r)); goto finish; } @@ -1524,7 +1528,7 @@ static int status_all(sd_bus *bus) { static void help_protocol_types(void) { if (arg_legend) puts("Known protocol types:"); - puts("dns\nllmnr\nllmnr-ipv4\nllmnr-ipv6"); + puts("dns\nllmnr\nllmnr-ipv4\nllmnr-ipv6\nmdns\nmnds-ipv4\nmdns-ipv6"); } static void help_dns_types(void) { @@ -1722,6 +1726,12 @@ static int parse_argv(int argc, char *argv[]) { arg_flags |= SD_RESOLVED_LLMNR_IPV4; else if (streq(optarg, "llmnr-ipv6")) arg_flags |= SD_RESOLVED_LLMNR_IPV6; + else if (streq(optarg, "mdns")) + arg_flags |= SD_RESOLVED_MDNS; + else if (streq(optarg, "mdns-ipv4")) + arg_flags |= SD_RESOLVED_MDNS_IPV4; + else if (streq(optarg, "mdns-ipv6")) + arg_flags |= SD_RESOLVED_MDNS_IPV6; else { log_error("Unknown protocol specifier: %s", optarg); return -EINVAL; diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c index 2ca65e6953..2c50109388 100644 --- a/src/resolve/resolved-bus.c +++ b/src/resolve/resolved-bus.c @@ -211,7 +211,7 @@ static void bus_method_resolve_hostname_complete(DnsQuery *q) { r = sd_bus_message_append( reply, "st", normalized, - SD_RESOLVED_FLAGS_MAKE(q->answer_protocol, q->answer_family, q->answer_authenticated)); + SD_RESOLVED_FLAGS_MAKE(q->answer_protocol, q->answer_family, dns_query_fully_authenticated(q))); if (r < 0) goto finish; @@ -439,7 +439,7 @@ static void bus_method_resolve_address_complete(DnsQuery *q) { if (r < 0) goto finish; - r = sd_bus_message_append(reply, "t", SD_RESOLVED_FLAGS_MAKE(q->answer_protocol, q->answer_family, q->answer_authenticated)); + r = sd_bus_message_append(reply, "t", SD_RESOLVED_FLAGS_MAKE(q->answer_protocol, q->answer_family, dns_query_fully_authenticated(q))); if (r < 0) goto finish; @@ -605,7 +605,7 @@ static void bus_method_resolve_record_complete(DnsQuery *q) { if (r < 0) goto finish; - r = sd_bus_message_append(reply, "t", SD_RESOLVED_FLAGS_MAKE(q->answer_protocol, q->answer_family, q->answer_authenticated)); + r = sd_bus_message_append(reply, "t", SD_RESOLVED_FLAGS_MAKE(q->answer_protocol, q->answer_family, dns_query_fully_authenticated(q))); if (r < 0) goto finish; @@ -979,7 +979,7 @@ static void resolve_service_all_complete(DnsQuery *q) { reply, "ssst", name, type, domain, - SD_RESOLVED_FLAGS_MAKE(q->answer_protocol, q->answer_family, q->answer_authenticated)); + SD_RESOLVED_FLAGS_MAKE(q->answer_protocol, q->answer_family, dns_query_fully_authenticated(q))); if (r < 0) goto finish; diff --git a/src/resolve/resolved-dns-answer.c b/src/resolve/resolved-dns-answer.c index ab85754bf7..db86b4dcf6 100644 --- a/src/resolve/resolved-dns-answer.c +++ b/src/resolve/resolved-dns-answer.c @@ -148,7 +148,7 @@ int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr, int ifindex, DnsAnswerFl * match. We don't really care if they match * precisely, but we do care whether one is 0 * and the other is not. See RFC 2181, Section - * 5.2.*/ + * 5.2. */ if ((rr->ttl == 0) != (a->items[i].rr->ttl == 0)) return -EINVAL; diff --git a/src/resolve/resolved-dns-answer.h b/src/resolve/resolved-dns-answer.h index 4a92bd1150..11d2e25eeb 100644 --- a/src/resolve/resolved-dns-answer.h +++ b/src/resolve/resolved-dns-answer.h @@ -33,9 +33,11 @@ typedef struct DnsAnswerItem DnsAnswerItem; * Note that we usually encode the empty DnsAnswer object as a simple NULL. */ typedef enum DnsAnswerFlags { - DNS_ANSWER_AUTHENTICATED = 1, /* Item has been authenticated */ - DNS_ANSWER_CACHEABLE = 2, /* Item is subject to caching */ - DNS_ANSWER_SHARED_OWNER = 4, /* For mDNS: RRset may be owner by multiple peers */ + DNS_ANSWER_AUTHENTICATED = 1, /* Item has been authenticated */ + DNS_ANSWER_CACHEABLE = 2, /* Item is subject to caching */ + DNS_ANSWER_SHARED_OWNER = 4, /* For mDNS: RRset may be owner by multiple peers */ + DNS_ANSWER_CACHE_FLUSH = 8, /* For mDNS: sets cache-flush bit in the rrclass of response records */ + DNS_ANSWER_GOODBYE = 16, /* For mDNS: item is subject to disappear */ } DnsAnswerFlags; struct DnsAnswerItem { diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c index 9233fb0ac1..f8dab01308 100644 --- a/src/resolve/resolved-dns-cache.c +++ b/src/resolve/resolved-dns-cache.c @@ -34,6 +34,10 @@ /* We never keep any item longer than 2h in our cache */ #define CACHE_TTL_MAX_USEC (2 * USEC_PER_HOUR) +/* How long to cache strange rcodes, i.e. rcodes != SUCCESS and != NXDOMAIN (specifically: that's only SERVFAIL for + * now) */ +#define CACHE_TTL_STRANGE_RCODE_USEC (30 * USEC_PER_SEC) + typedef enum DnsCacheItemType DnsCacheItemType; typedef struct DnsCacheItem DnsCacheItem; @@ -41,12 +45,14 @@ enum DnsCacheItemType { DNS_CACHE_POSITIVE, DNS_CACHE_NODATA, DNS_CACHE_NXDOMAIN, + DNS_CACHE_RCODE, /* "strange" RCODE (effective only SERVFAIL for now) */ }; struct DnsCacheItem { DnsCacheItemType type; DnsResourceKey *key; DnsResourceRecord *rr; + int rcode; usec_t until; bool authenticated:1; @@ -60,6 +66,27 @@ struct DnsCacheItem { LIST_FIELDS(DnsCacheItem, by_key); }; +static const char *dns_cache_item_type_to_string(DnsCacheItem *item) { + assert(item); + + switch (item->type) { + + case DNS_CACHE_POSITIVE: + return "POSITIVE"; + + case DNS_CACHE_NODATA: + return "NODATA"; + + case DNS_CACHE_NXDOMAIN: + return "NXDOMAIN"; + + case DNS_CACHE_RCODE: + return dns_rcode_to_string(item->rcode); + } + + return NULL; +} + static void dns_cache_item_free(DnsCacheItem *i) { if (!i) return; @@ -406,7 +433,7 @@ static int dns_cache_put_positive( return 0; } - /* Entry exists already? Update TTL, timestamp and owner*/ + /* Entry exists already? Update TTL, timestamp and owner */ existing = dns_cache_get(c, rr); if (existing) { dns_cache_item_update_positive( @@ -484,7 +511,6 @@ static int dns_cache_put_negative( assert(c); assert(key); - assert(soa); assert(owner_address); /* Never cache pseudo RR keys. DNS_TYPE_ANY is particularly @@ -495,13 +521,17 @@ static int dns_cache_put_negative( if (dns_type_is_pseudo(key->type)) return 0; - if (nsec_ttl <= 0 || soa->soa.minimum <= 0 || soa->ttl <= 0) { - log_debug("Not caching negative entry with zero SOA/NSEC/NSEC3 TTL: %s", - dns_resource_key_to_string(key, key_str, sizeof key_str)); - return 0; - } + if (IN_SET(rcode, DNS_RCODE_SUCCESS, DNS_RCODE_NXDOMAIN)) { + if (!soa) + return 0; - if (!IN_SET(rcode, DNS_RCODE_SUCCESS, DNS_RCODE_NXDOMAIN)) + /* For negative replies, check if we have a TTL of a SOA */ + if (nsec_ttl <= 0 || soa->soa.minimum <= 0 || soa->ttl <= 0) { + log_debug("Not caching negative entry with zero SOA/NSEC/NSEC3 TTL: %s", + dns_resource_key_to_string(key, key_str, sizeof key_str)); + return 0; + } + } else if (rcode != DNS_RCODE_SERVFAIL) return 0; r = dns_cache_init(c); @@ -514,12 +544,17 @@ static int dns_cache_put_negative( if (!i) return -ENOMEM; - i->type = rcode == DNS_RCODE_SUCCESS ? DNS_CACHE_NODATA : DNS_CACHE_NXDOMAIN; - i->until = calculate_until(soa, nsec_ttl, timestamp, true); + i->type = + rcode == DNS_RCODE_SUCCESS ? DNS_CACHE_NODATA : + rcode == DNS_RCODE_NXDOMAIN ? DNS_CACHE_NXDOMAIN : DNS_CACHE_RCODE; + i->until = + i->type == DNS_CACHE_RCODE ? timestamp + CACHE_TTL_STRANGE_RCODE_USEC : + calculate_until(soa, nsec_ttl, timestamp, true); i->authenticated = authenticated; i->owner_family = owner_family; i->owner_address = *owner_address; i->prioq_idx = PRIOQ_IDX_NULL; + i->rcode = rcode; if (i->type == DNS_CACHE_NXDOMAIN) { /* NXDOMAIN entries should apply equally to all types, so we use ANY as @@ -543,7 +578,7 @@ static int dns_cache_put_negative( return r; log_debug("Added %s cache entry for %s "USEC_FMT"s", - i->type == DNS_CACHE_NODATA ? "NODATA" : "NXDOMAIN", + dns_cache_item_type_to_string(i), dns_resource_key_to_string(i->key, key_str, sizeof key_str), (i->until - timestamp) / USEC_PER_SEC); @@ -615,6 +650,7 @@ int dns_cache_put( const union in_addr_union *owner_address) { DnsResourceRecord *soa = NULL, *rr; + bool weird_rcode = false; DnsAnswerFlags flags; unsigned cache_keys; int r, ifindex; @@ -624,18 +660,28 @@ int dns_cache_put( dns_cache_remove_previous(c, key, answer); - /* We only care for positive replies and NXDOMAINs, on all - * other replies we will simply flush the respective entries, - * and that's it */ - if (!IN_SET(rcode, DNS_RCODE_SUCCESS, DNS_RCODE_NXDOMAIN)) - return 0; + /* We only care for positive replies and NXDOMAINs, on all other replies we will simply flush the respective + * entries, and that's it. (Well, with one further exception: since some DNS zones (akamai!) return SERVFAIL + * consistently for some lookups, and forwarders tend to propagate that we'll cache that too, but only for a + * short time.) */ - if (dns_answer_size(answer) <= 0) { - char key_str[DNS_RESOURCE_KEY_STRING_MAX]; + if (IN_SET(rcode, DNS_RCODE_SUCCESS, DNS_RCODE_NXDOMAIN)) { - log_debug("Not caching negative entry without a SOA record: %s", - dns_resource_key_to_string(key, key_str, sizeof key_str)); - return 0; + if (dns_answer_size(answer) <= 0) { + char key_str[DNS_RESOURCE_KEY_STRING_MAX]; + + log_debug("Not caching negative entry without a SOA record: %s", + dns_resource_key_to_string(key, key_str, sizeof key_str)); + return 0; + } + + } else { + /* Only cache SERVFAIL as "weird" rcode for now. We can add more later, should that turn out to be + * beneficial. */ + if (rcode != DNS_RCODE_SERVFAIL) + return 0; + + weird_rcode = true; } cache_keys = dns_answer_size(answer); @@ -690,19 +736,20 @@ int dns_cache_put( if (r > 0) return 0; - /* See https://tools.ietf.org/html/rfc2308, which say that a - * matching SOA record in the packet is used to enable - * negative caching. */ + /* See https://tools.ietf.org/html/rfc2308, which say that a matching SOA record in the packet is used to + * enable negative caching. We apply one exception though: if we are about to cache a weird rcode we do so + * regardless of a SOA. */ r = dns_answer_find_soa(answer, key, &soa, &flags); if (r < 0) goto fail; - if (r == 0) - return 0; - - /* Refuse using the SOA data if it is unsigned, but the key is - * signed */ - if (authenticated && (flags & DNS_ANSWER_AUTHENTICATED) == 0) + if (r == 0 && !weird_rcode) return 0; + if (r > 0) { + /* Refuse using the SOA data if it is unsigned, but the key is + * signed */ + if (authenticated && (flags & DNS_ANSWER_AUTHENTICATED) == 0) + return 0; + } r = dns_cache_put_negative( c, @@ -799,6 +846,7 @@ int dns_cache_lookup(DnsCache *c, DnsResourceKey *key, bool clamp_ttl, int *rcod DnsCacheItem *j, *first, *nsec = NULL; bool have_authenticated = false, have_non_authenticated = false; usec_t current; + int found_rcode = -1; assert(c); assert(key); @@ -817,6 +865,8 @@ int dns_cache_lookup(DnsCache *c, DnsResourceKey *key, bool clamp_ttl, int *rcod *ret = NULL; *rcode = DNS_RCODE_SUCCESS; + *authenticated = false; + return 0; } @@ -831,6 +881,8 @@ int dns_cache_lookup(DnsCache *c, DnsResourceKey *key, bool clamp_ttl, int *rcod *ret = NULL; *rcode = DNS_RCODE_SUCCESS; + *authenticated = false; + return 0; } @@ -842,6 +894,8 @@ int dns_cache_lookup(DnsCache *c, DnsResourceKey *key, bool clamp_ttl, int *rcod n++; } else if (j->type == DNS_CACHE_NXDOMAIN) nxdomain = true; + else if (j->type == DNS_CACHE_RCODE) + found_rcode = j->rcode; if (j->authenticated) have_authenticated = true; @@ -849,6 +903,19 @@ int dns_cache_lookup(DnsCache *c, DnsResourceKey *key, bool clamp_ttl, int *rcod have_non_authenticated = true; } + if (found_rcode >= 0) { + log_debug("RCODE %s cache hit for %s", + dns_rcode_to_string(found_rcode), + dns_resource_key_to_string(key, key_str, sizeof(key_str))); + + *ret = NULL; + *rcode = found_rcode; + *authenticated = false; + + c->n_hit++; + return 1; + } + if (nsec && !IN_SET(key->type, DNS_TYPE_NSEC, DNS_TYPE_DS)) { /* Note that we won't derive information for DS RRs from an NSEC, because we only cache NSEC RRs from * the lower-zone of a zone cut, but the DS RRs are on the upper zone. */ @@ -980,7 +1047,7 @@ int dns_cache_export_shared_to_packet(DnsCache *cache, DnsPacket *p) { if (!j->shared_owner) continue; - r = dns_packet_append_rr(p, j->rr, NULL, NULL); + r = dns_packet_append_rr(p, j->rr, 0, NULL, NULL); if (r == -EMSGSIZE && p->protocol == DNS_PROTOCOL_MDNS) { /* For mDNS, if we're unable to stuff all known answers into the given packet, * allocate a new one, push the RR into that one and link it to the current one. @@ -995,7 +1062,7 @@ int dns_cache_export_shared_to_packet(DnsCache *cache, DnsPacket *p) { /* continue with new packet */ p = p->more; - r = dns_packet_append_rr(p, j->rr, NULL, NULL); + r = dns_packet_append_rr(p, j->rr, 0, NULL, NULL); } if (r < 0) @@ -1042,7 +1109,7 @@ void dns_cache_dump(DnsCache *cache, FILE *f) { fputs(dns_resource_key_to_string(j->key, key_str, sizeof key_str), f); fputs(" -- ", f); - fputs(j->type == DNS_CACHE_NODATA ? "NODATA" : "NXDOMAIN", f); + fputs(dns_cache_item_type_to_string(j), f); fputc('\n', f); } } diff --git a/src/resolve/resolved-dns-dnssec.c b/src/resolve/resolved-dns-dnssec.c index 51327105d0..eddab58a81 100644 --- a/src/resolve/resolved-dns-dnssec.c +++ b/src/resolve/resolved-dns-dnssec.c @@ -1710,7 +1710,8 @@ static int dnssec_nsec_covers(DnsResourceRecord *rr, const char *name) { } static int dnssec_nsec_covers_wildcard(DnsResourceRecord *rr, const char *name) { - const char *common_suffix, *wc; + _cleanup_free_ char *wc = NULL; + const char *common_suffix; int r; assert(rr); @@ -1734,7 +1735,10 @@ static int dnssec_nsec_covers_wildcard(DnsResourceRecord *rr, const char *name) if (r <= 0) return r; - wc = strjoina("*.", common_suffix); + r = dns_name_concat("*", common_suffix, &wc); + if (r < 0) + return r; + return dns_name_between(dns_resource_key_name(rr->key), wc, rr->nsec.next_domain_name); } diff --git a/src/resolve/resolved-dns-packet.c b/src/resolve/resolved-dns-packet.c index 337a8c473f..652970284e 100644 --- a/src/resolve/resolved-dns-packet.c +++ b/src/resolve/resolved-dns-packet.c @@ -569,8 +569,9 @@ fail: return r; } -int dns_packet_append_key(DnsPacket *p, const DnsResourceKey *k, size_t *start) { +int dns_packet_append_key(DnsPacket *p, const DnsResourceKey *k, const DnsAnswerFlags flags, size_t *start) { size_t saved_size; + uint16_t class; int r; assert(p); @@ -586,7 +587,8 @@ int dns_packet_append_key(DnsPacket *p, const DnsResourceKey *k, size_t *start) if (r < 0) goto fail; - r = dns_packet_append_uint16(p, k->class, NULL); + class = flags & DNS_ANSWER_CACHE_FLUSH ? k->class | MDNS_RR_CACHE_FLUSH : k->class; + r = dns_packet_append_uint16(p, class, NULL); if (r < 0) goto fail; @@ -791,9 +793,10 @@ int dns_packet_truncate_opt(DnsPacket *p) { return 1; } -int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, size_t *start, size_t *rdata_start) { +int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, const DnsAnswerFlags flags, size_t *start, size_t *rdata_start) { size_t saved_size, rdlength_offset, end, rdlength, rds; + uint32_t ttl; int r; assert(p); @@ -801,11 +804,12 @@ int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, size_t *star saved_size = p->size; - r = dns_packet_append_key(p, rr->key, NULL); + r = dns_packet_append_key(p, rr->key, flags, NULL); if (r < 0) goto fail; - r = dns_packet_append_uint32(p, rr->ttl, NULL); + ttl = flags & DNS_ANSWER_GOODBYE ? 0 : rr->ttl; + r = dns_packet_append_uint32(p, ttl, NULL); if (r < 0) goto fail; @@ -1143,7 +1147,7 @@ int dns_packet_append_question(DnsPacket *p, DnsQuestion *q) { assert(p); DNS_QUESTION_FOREACH(key, q) { - r = dns_packet_append_key(p, key, NULL); + r = dns_packet_append_key(p, key, 0, NULL); if (r < 0) return r; } @@ -1153,12 +1157,13 @@ int dns_packet_append_question(DnsPacket *p, DnsQuestion *q) { int dns_packet_append_answer(DnsPacket *p, DnsAnswer *a) { DnsResourceRecord *rr; + DnsAnswerFlags flags; int r; assert(p); - DNS_ANSWER_FOREACH(rr, a) { - r = dns_packet_append_rr(p, rr, NULL, NULL); + DNS_ANSWER_FOREACH_FLAGS(rr, flags, a) { + r = dns_packet_append_rr(p, rr, flags, NULL, NULL); if (r < 0) return r; } diff --git a/src/resolve/resolved-dns-packet.h b/src/resolve/resolved-dns-packet.h index 054dc88a85..2c92392e4d 100644 --- a/src/resolve/resolved-dns-packet.h +++ b/src/resolve/resolved-dns-packet.h @@ -209,8 +209,8 @@ int dns_packet_append_string(DnsPacket *p, const char *s, size_t *start); int dns_packet_append_raw_string(DnsPacket *p, const void *s, size_t size, size_t *start); int dns_packet_append_label(DnsPacket *p, const char *s, size_t l, bool canonical_candidate, size_t *start); int dns_packet_append_name(DnsPacket *p, const char *name, bool allow_compression, bool canonical_candidate, size_t *start); -int dns_packet_append_key(DnsPacket *p, const DnsResourceKey *key, size_t *start); -int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, size_t *start, size_t *rdata_start); +int dns_packet_append_key(DnsPacket *p, const DnsResourceKey *key, const DnsAnswerFlags flags, size_t *start); +int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, const DnsAnswerFlags flags, size_t *start, size_t *rdata_start); int dns_packet_append_opt(DnsPacket *p, uint16_t max_udp_size, bool edns0_do, int rcode, size_t *start); int dns_packet_append_question(DnsPacket *p, DnsQuestion *q); int dns_packet_append_answer(DnsPacket *p, DnsAnswer *a); diff --git a/src/resolve/resolved-dns-query.c b/src/resolve/resolved-dns-query.c index e03db4d003..2b091e6c45 100644 --- a/src/resolve/resolved-dns-query.c +++ b/src/resolve/resolved-dns-query.c @@ -28,7 +28,7 @@ #include "string-util.h" /* How long to wait for the query in total */ -#define QUERY_TIMEOUT_USEC (30 * USEC_PER_SEC) +#define QUERY_TIMEOUT_USEC (60 * USEC_PER_SEC) #define CNAME_MAX 8 #define QUERIES_MAX 2048 @@ -403,6 +403,7 @@ DnsQuery *dns_query_free(DnsQuery *q) { sd_bus_track_unref(q->bus_track); dns_packet_unref(q->request_dns_packet); + dns_packet_unref(q->reply_dns_packet); if (q->request_dns_stream) { /* Detach the stream from our query, in case something else keeps a reference to it. */ @@ -810,6 +811,7 @@ static void dns_query_accept(DnsQuery *q, DnsQueryCandidate *c) { q->answer = dns_answer_unref(q->answer); q->answer_rcode = 0; q->answer_dnssec_result = _DNSSEC_RESULT_INVALID; + q->answer_authenticated = false; q->answer_errno = c->error_code; } @@ -846,15 +848,18 @@ static void dns_query_accept(DnsQuery *q, DnsQueryCandidate *c) { continue; default: - /* Any kind of failure? Store the data away, - * if there's nothing stored yet. */ - + /* Any kind of failure? Store the data away, if there's nothing stored yet. */ if (state == DNS_TRANSACTION_SUCCESS) continue; + /* If there's already an authenticated negative reply stored, then prefer that over any unauthenticated one */ + if (q->answer_authenticated && !t->answer_authenticated) + continue; + q->answer = dns_answer_unref(q->answer); q->answer_rcode = t->answer_rcode; q->answer_dnssec_result = t->answer_dnssec_result; + q->answer_authenticated = t->answer_authenticated; q->answer_errno = t->answer_errno; state = t->state; @@ -1028,6 +1033,9 @@ int dns_query_process_cname(DnsQuery *q) { if (q->flags & SD_RESOLVED_NO_CNAME) return -ELOOP; + if (!q->answer_authenticated) + q->previous_redirect_unauthenticated = true; + /* OK, let's actually follow the CNAME */ r = dns_query_cname_redirect(q, cname); if (r < 0) @@ -1115,3 +1123,9 @@ const char *dns_query_string(DnsQuery *q) { return dns_question_first_name(q->question_idna); } + +bool dns_query_fully_authenticated(DnsQuery *q) { + assert(q); + + return q->answer_authenticated && !q->previous_redirect_unauthenticated; +} diff --git a/src/resolve/resolved-dns-query.h b/src/resolve/resolved-dns-query.h index 49a35b846b..b8ea48f6af 100644 --- a/src/resolve/resolved-dns-query.h +++ b/src/resolve/resolved-dns-query.h @@ -71,7 +71,6 @@ struct DnsQuery { * family */ bool suppress_unroutable_family; - /* If true, the RR TTLs of the answer will be clamped by their current left validity in the cache */ bool clamp_ttl; @@ -90,6 +89,7 @@ struct DnsQuery { int answer_family; DnsSearchDomain *answer_search_domain; int answer_errno; /* if state is DNS_TRANSACTION_ERRNO */ + bool previous_redirect_unauthenticated; /* Bus client information */ sd_bus_message *request; @@ -102,6 +102,7 @@ struct DnsQuery { /* DNS stub information */ DnsPacket *request_dns_packet; DnsStream *request_dns_stream; + DnsPacket *reply_dns_packet; /* Completion callback */ void (*complete)(DnsQuery* q); @@ -139,3 +140,5 @@ DnsQuestion* dns_query_question_for_protocol(DnsQuery *q, DnsProtocol protocol); const char *dns_query_string(DnsQuery *q); DEFINE_TRIVIAL_CLEANUP_FUNC(DnsQuery*, dns_query_free); + +bool dns_query_fully_authenticated(DnsQuery *q); diff --git a/src/resolve/resolved-dns-rr.c b/src/resolve/resolved-dns-rr.c index 209d565033..e8c05ed0da 100644 --- a/src/resolve/resolved-dns-rr.c +++ b/src/resolve/resolved-dns-rr.c @@ -1262,7 +1262,7 @@ int dns_resource_record_to_wire_format(DnsResourceRecord *rr, bool canonical) { if (rr->wire_format && rr->wire_format_canonical == canonical) return 0; - r = dns_packet_append_rr(&packet, rr, &start, &rds); + r = dns_packet_append_rr(&packet, rr, 0, &start, &rds); if (r < 0) return r; diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c index 8dbc7f623b..ffaefbe3f2 100644 --- a/src/resolve/resolved-dns-scope.c +++ b/src/resolve/resolved-dns-scope.c @@ -124,6 +124,8 @@ DnsScope* dns_scope_free(DnsScope *s) { ordered_hashmap_free(s->conflict_queue); sd_event_source_unref(s->conflict_event_source); + sd_event_source_unref(s->announce_event_source); + dns_cache_flush(&s->cache); dns_zone_flush(&s->zone); @@ -549,7 +551,11 @@ static int dns_scope_multicast_membership(DnsScope *s, bool b, struct in_addr in .imr_ifindex = s->link->ifindex, }; - fd = manager_llmnr_ipv4_udp_fd(s->manager); + if (s->protocol == DNS_PROTOCOL_LLMNR) + fd = manager_llmnr_ipv4_udp_fd(s->manager); + else + fd = manager_mdns_ipv4_fd(s->manager); + if (fd < 0) return fd; @@ -568,7 +574,11 @@ static int dns_scope_multicast_membership(DnsScope *s, bool b, struct in_addr in .ipv6mr_interface = s->link->ifindex, }; - fd = manager_llmnr_ipv6_udp_fd(s->manager); + if (s->protocol == DNS_PROTOCOL_LLMNR) + fd = manager_llmnr_ipv6_udp_fd(s->manager); + else + fd = manager_mdns_ipv6_fd(s->manager); + if (fd < 0) return fd; @@ -601,7 +611,7 @@ int dns_scope_mdns_membership(DnsScope *s, bool b) { return dns_scope_multicast_membership(s, b, MDNS_MULTICAST_IPV4_ADDRESS, MDNS_MULTICAST_IPV6_ADDRESS); } -static int dns_scope_make_reply_packet( +int dns_scope_make_reply_packet( DnsScope *s, uint16_t id, int rcode, @@ -830,11 +840,11 @@ static int dns_scope_make_conflict_packet( DNS_PACKET_HEADER(p)->qdcount = htobe16(1); DNS_PACKET_HEADER(p)->arcount = htobe16(1); - r = dns_packet_append_key(p, rr->key, NULL); + r = dns_packet_append_key(p, rr->key, 0, NULL); if (r < 0) return r; - r = dns_packet_append_rr(p, rr, NULL, NULL); + r = dns_packet_append_rr(p, rr, 0, NULL, NULL); if (r < 0) return r; @@ -928,17 +938,19 @@ void dns_scope_check_conflicts(DnsScope *scope, DnsPacket *p) { assert(scope); assert(p); - if (p->protocol != DNS_PROTOCOL_LLMNR) + if (!IN_SET(p->protocol, DNS_PROTOCOL_LLMNR, DNS_PROTOCOL_MDNS)) return; if (DNS_PACKET_RRCOUNT(p) <= 0) return; - if (DNS_PACKET_LLMNR_C(p) != 0) - return; + if (p->protocol == DNS_PROTOCOL_LLMNR) { + if (DNS_PACKET_LLMNR_C(p) != 0) + return; - if (DNS_PACKET_LLMNR_T(p) != 0) - return; + if (DNS_PACKET_LLMNR_T(p) != 0) + return; + } if (manager_our_packet(scope->manager, p)) return; @@ -1041,3 +1053,77 @@ int dns_scope_ifindex(DnsScope *s) { return 0; } + +static int on_announcement_timeout(sd_event_source *s, usec_t usec, void *userdata) { + DnsScope *scope = userdata; + + assert(s); + + scope->announce_event_source = sd_event_source_unref(scope->announce_event_source); + + (void) dns_scope_announce(scope, false); + return 0; +} + +int dns_scope_announce(DnsScope *scope, bool goodbye) { + _cleanup_(dns_answer_unrefp) DnsAnswer *answer = NULL; + _cleanup_(dns_packet_unrefp) DnsPacket *p = NULL; + LinkAddress *a; + int r; + + if (!scope) + return 0; + + if (scope->protocol != DNS_PROTOCOL_MDNS) + return 0; + + answer = dns_answer_new(scope->link->n_addresses * 2); + if (!answer) + return log_oom(); + + LIST_FOREACH(addresses, a, scope->link->addresses) { + r = dns_answer_add(answer, a->mdns_address_rr, 0, goodbye ? DNS_ANSWER_GOODBYE : DNS_ANSWER_CACHE_FLUSH); + if (r < 0) + return log_debug_errno(r, "Failed to add address RR to answer: %m"); + + r = dns_answer_add(answer, a->mdns_ptr_rr, 0, goodbye ? DNS_ANSWER_GOODBYE : DNS_ANSWER_CACHE_FLUSH); + if (r < 0) + return log_debug_errno(r, "Failed to add PTR RR to answer: %m"); + } + + if (dns_answer_isempty(answer)) + return 0; + + r = dns_scope_make_reply_packet(scope, 0, DNS_RCODE_SUCCESS, NULL, answer, NULL, false, &p); + if (r < 0) + return log_debug_errno(r, "Failed to build reply packet: %m"); + + r = dns_scope_emit_udp(scope, -1, p); + if (r < 0) + return log_debug_errno(r, "Failed to send reply packet: %m"); + + /* In section 8.3 of RFC6762: "The Multicast DNS responder MUST send at least two unsolicited + * responses, one second apart." */ + if (!scope->announced) { + usec_t ts; + + scope->announced = true; + + assert_se(sd_event_now(scope->manager->event, clock_boottime_or_monotonic(), &ts) >= 0); + ts += MDNS_ANNOUNCE_DELAY; + + r = sd_event_add_time( + scope->manager->event, + &scope->announce_event_source, + clock_boottime_or_monotonic(), + ts, + MDNS_JITTER_RANGE_USEC, + on_announcement_timeout, scope); + if (r < 0) + return log_debug_errno(r, "Failed to schedule second announcement: %m"); + + (void) sd_event_source_set_description(scope->announce_event_source, "mdns-announce"); + } + + return 0; +} diff --git a/src/resolve/resolved-dns-scope.h b/src/resolve/resolved-dns-scope.h index 01a83a76b2..6f94b1fdcd 100644 --- a/src/resolve/resolved-dns-scope.h +++ b/src/resolve/resolved-dns-scope.h @@ -56,6 +56,9 @@ struct DnsScope { OrderedHashmap *conflict_queue; sd_event_source *conflict_event_source; + bool announced:1; + sd_event_source *announce_event_source; + RateLimit ratelimit; usec_t resend_timeout; @@ -96,6 +99,7 @@ void dns_scope_next_dns_server(DnsScope *s); int dns_scope_llmnr_membership(DnsScope *s, bool b); int dns_scope_mdns_membership(DnsScope *s, bool b); +int dns_scope_make_reply_packet(DnsScope *s, uint16_t id, int rcode, DnsQuestion *q, DnsAnswer *answer, DnsAnswer *soa, bool tentative, DnsPacket **ret); void dns_scope_process_query(DnsScope *s, DnsStream *stream, DnsPacket *p); DnsTransaction *dns_scope_find_transaction(DnsScope *scope, DnsResourceKey *key, bool cache_ok); @@ -112,3 +116,5 @@ bool dns_scope_name_needs_search_domain(DnsScope *s, const char *name); bool dns_scope_network_good(DnsScope *s); int dns_scope_ifindex(DnsScope *s); + +int dns_scope_announce(DnsScope *scope, bool goodbye); diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c index 22c64e8491..5498f7b9cb 100644 --- a/src/resolve/resolved-dns-server.c +++ b/src/resolve/resolved-dns-server.c @@ -28,7 +28,7 @@ #include "string-util.h" /* After how much time to repeat classic DNS requests */ -#define DNS_TIMEOUT_MIN_USEC (500 * USEC_PER_MSEC) +#define DNS_TIMEOUT_MIN_USEC (750 * USEC_PER_MSEC) #define DNS_TIMEOUT_MAX_USEC (5 * USEC_PER_SEC) /* The amount of time to wait before retrying with a full feature set */ @@ -399,12 +399,24 @@ static bool dns_server_grace_period_expired(DnsServer *s) { } DnsServerFeatureLevel dns_server_possible_feature_level(DnsServer *s) { + DnsServerFeatureLevel best; + assert(s); - if (s->possible_feature_level != DNS_SERVER_FEATURE_LEVEL_BEST && - dns_server_grace_period_expired(s)) { + /* Determine the best feature level we care about. If DNSSEC mode is off there's no point in using anything + * better than EDNS0, hence don't even try. */ + best = dns_server_get_dnssec_mode(s) == DNSSEC_NO ? + DNS_SERVER_FEATURE_LEVEL_EDNS0 : + DNS_SERVER_FEATURE_LEVEL_BEST; + + /* Clamp the feature level the highest level we care about. The DNSSEC mode might have changed since the last + * time, hence let's downgrade if we are still at a higher level. */ + if (s->possible_feature_level > best) + s->possible_feature_level = best; + + if (s->possible_feature_level < best && dns_server_grace_period_expired(s)) { - s->possible_feature_level = DNS_SERVER_FEATURE_LEVEL_BEST; + s->possible_feature_level = best; dns_server_reset_counters(s); @@ -415,6 +427,8 @@ DnsServerFeatureLevel dns_server_possible_feature_level(DnsServer *s) { dns_server_feature_level_to_string(s->possible_feature_level), dns_server_string(s)); + dns_server_flush_cache(s); + } else if (s->possible_feature_level <= s->verified_feature_level) s->possible_feature_level = s->verified_feature_level; else { @@ -451,18 +465,22 @@ DnsServerFeatureLevel dns_server_possible_feature_level(DnsServer *s) { s->possible_feature_level = DNS_SERVER_FEATURE_LEVEL_EDNS0; } else if (s->n_failed_udp >= DNS_SERVER_FEATURE_RETRY_ATTEMPTS && - s->possible_feature_level >= DNS_SERVER_FEATURE_LEVEL_UDP) { + s->possible_feature_level >= (dns_server_get_dnssec_mode(s) == DNSSEC_YES ? DNS_SERVER_FEATURE_LEVEL_LARGE : DNS_SERVER_FEATURE_LEVEL_UDP)) { /* We lost too many UDP packets in a row, and are on a feature level of UDP or higher. If the * packets are lost, maybe the server cannot parse them, hence downgrading sounds like a good - * idea. We might downgrade all the way down to TCP this way. */ + * idea. We might downgrade all the way down to TCP this way. + * + * If strict DNSSEC mode is used we won't downgrade below DO level however, as packet loss + * might have many reasons, a broken DNSSEC implementation being only one reason. And if the + * user is strict on DNSSEC, then let's assume that DNSSEC is not the fault here. */ log_debug("Lost too many UDP packets, downgrading feature level..."); s->possible_feature_level--; } else if (s->n_failed_tcp >= DNS_SERVER_FEATURE_RETRY_ATTEMPTS && s->packet_truncated && - s->possible_feature_level > DNS_SERVER_FEATURE_LEVEL_UDP) { + s->possible_feature_level > (dns_server_get_dnssec_mode(s) == DNSSEC_YES ? DNS_SERVER_FEATURE_LEVEL_LARGE : DNS_SERVER_FEATURE_LEVEL_UDP)) { /* We got too many TCP connection failures in a row, we had at least one truncated packet, and * are on a feature level above UDP. By downgrading things and getting rid of DNSSEC or EDNS0 @@ -566,7 +584,7 @@ void dns_server_warn_downgrade(DnsServer *server) { return; log_struct(LOG_NOTICE, - LOG_MESSAGE_ID(SD_MESSAGE_DNSSEC_DOWNGRADE), + "MESSAGE_ID=" SD_MESSAGE_DNSSEC_DOWNGRADE_STR, LOG_MESSAGE("Server %s does not support DNSSEC, downgrading to non-DNSSEC mode.", dns_server_string(server)), "DNS_SERVER=%s", dns_server_string(server), "DNS_SERVER_FEATURE_LEVEL=%s", dns_server_feature_level_to_string(server->possible_feature_level), @@ -779,6 +797,34 @@ bool dns_server_address_valid(int family, const union in_addr_union *sa) { return true; } +DnssecMode dns_server_get_dnssec_mode(DnsServer *s) { + assert(s); + + if (s->link) + return link_get_dnssec_mode(s->link); + + return manager_get_dnssec_mode(s->manager); +} + +void dns_server_flush_cache(DnsServer *s) { + DnsServer *current; + DnsScope *scope; + + assert(s); + + /* Flush the cache of the scope this server belongs to */ + + current = s->link ? s->link->current_dns_server : s->manager->current_dns_server; + if (current != s) + return; + + scope = s->link ? s->link->unicast_scope : s->manager->unicast_scope; + if (!scope) + return; + + dns_cache_flush(&scope->cache); +} + static const char* const dns_server_type_table[_DNS_SERVER_TYPE_MAX] = { [DNS_SERVER_SYSTEM] = "system", [DNS_SERVER_FALLBACK] = "fallback", diff --git a/src/resolve/resolved-dns-server.h b/src/resolve/resolved-dns-server.h index 83e288a202..bc95d53c6a 100644 --- a/src/resolve/resolved-dns-server.h +++ b/src/resolve/resolved-dns-server.h @@ -144,6 +144,10 @@ void manager_next_dns_server(Manager *m); bool dns_server_address_valid(int family, const union in_addr_union *sa); +DnssecMode dns_server_get_dnssec_mode(DnsServer *s); + DEFINE_TRIVIAL_CLEANUP_FUNC(DnsServer*, dns_server_unref); extern const struct hash_ops dns_server_hash_ops; + +void dns_server_flush_cache(DnsServer *s); diff --git a/src/resolve/resolved-dns-stub.c b/src/resolve/resolved-dns-stub.c index 4a3c5f612f..7afbfedfb0 100644 --- a/src/resolve/resolved-dns-stub.c +++ b/src/resolve/resolved-dns-stub.c @@ -29,49 +29,33 @@ static int manager_dns_stub_udp_fd(Manager *m); static int manager_dns_stub_tcp_fd(Manager *m); static int dns_stub_make_reply_packet( - uint16_t id, - int rcode, + DnsPacket **p, DnsQuestion *q, - DnsAnswer *answer, - bool add_opt, /* add an OPT RR to this packet */ - bool edns0_do, /* set the EDNS0 DNSSEC OK bit */ - bool ad, /* set the DNSSEC authenticated data bit */ - DnsPacket **ret) { + DnsAnswer *answer) { - _cleanup_(dns_packet_unrefp) DnsPacket *p = NULL; DnsResourceRecord *rr; unsigned c = 0; int r; + assert(p); + /* Note that we don't bother with any additional RRs, as this is stub is for local lookups only, and hence * roundtrips aren't expensive. */ - r = dns_packet_new(&p, DNS_PROTOCOL_DNS, 0); - if (r < 0) - return r; - - /* If the client didn't do EDNS, clamp the rcode to 4 bit */ - if (!add_opt && rcode > 0xF) - rcode = DNS_RCODE_SERVFAIL; + if (!*p) { + r = dns_packet_new(p, DNS_PROTOCOL_DNS, 0); + if (r < 0) + return r; - DNS_PACKET_HEADER(p)->id = id; - DNS_PACKET_HEADER(p)->flags = htobe16(DNS_PACKET_MAKE_FLAGS( - 1 /* qr */, - 0 /* opcode */, - 0 /* aa */, - 0 /* tc */, - 1 /* rd */, - 1 /* ra */, - ad /* ad */, - 0 /* cd */, - rcode)); + r = dns_packet_append_question(*p, q); + if (r < 0) + return r; - r = dns_packet_append_question(p, q); - if (r < 0) - return r; - DNS_PACKET_HEADER(p)->qdcount = htobe16(dns_question_size(q)); + DNS_PACKET_HEADER(*p)->qdcount = htobe16(dns_question_size(q)); + } DNS_ANSWER_FOREACH(rr, answer) { + r = dns_question_matches_rr(q, rr, NULL); if (r < 0) return r; @@ -86,13 +70,55 @@ static int dns_stub_make_reply_packet( continue; add: - r = dns_packet_append_rr(p, rr, NULL, NULL); + r = dns_packet_append_rr(*p, rr, 0, NULL, NULL); if (r < 0) return r; c++; } - DNS_PACKET_HEADER(p)->ancount = htobe16(c); + + DNS_PACKET_HEADER(*p)->ancount = htobe16(be16toh(DNS_PACKET_HEADER(*p)->ancount) + c); + + return 0; +} + +static int dns_stub_finish_reply_packet( + DnsPacket *p, + uint16_t id, + int rcode, + bool add_opt, /* add an OPT RR to this packet? */ + bool edns0_do, /* set the EDNS0 DNSSEC OK bit? */ + bool ad) { /* set the DNSSEC authenticated data bit? */ + + int r; + + assert(p); + + if (!add_opt) { + /* If the client can't to EDNS0, don't do DO either */ + edns0_do = false; + + /* If the client didn't do EDNS, clamp the rcode to 4 bit */ + if (rcode > 0xF) + rcode = DNS_RCODE_SERVFAIL; + } + + /* Don't set the AD bit unless DO is on, too */ + if (!edns0_do) + ad = false; + + DNS_PACKET_HEADER(p)->id = id; + + DNS_PACKET_HEADER(p)->flags = htobe16(DNS_PACKET_MAKE_FLAGS( + 1 /* qr */, + 0 /* opcode */, + 0 /* aa */, + 0 /* tc */, + 1 /* rd */, + 1 /* ra */, + ad /* ad */, + 0 /* cd */, + rcode)); if (add_opt) { r = dns_packet_append_opt(p, ADVERTISE_DATAGRAM_SIZE_MAX, edns0_do, rcode, NULL); @@ -100,9 +126,6 @@ static int dns_stub_make_reply_packet( return r; } - *ret = p; - p = NULL; - return 0; } @@ -148,14 +171,18 @@ static int dns_stub_send(Manager *m, DnsStream *s, DnsPacket *p, DnsPacket *repl return 0; } -static int dns_stub_send_failure(Manager *m, DnsStream *s, DnsPacket *p, int rcode) { +static int dns_stub_send_failure(Manager *m, DnsStream *s, DnsPacket *p, int rcode, bool authenticated) { _cleanup_(dns_packet_unrefp) DnsPacket *reply = NULL; int r; assert(m); assert(p); - r = dns_stub_make_reply_packet(DNS_PACKET_ID(p), rcode, p->question, NULL, !!p->opt, DNS_PACKET_DO(p), false, &reply); + r = dns_stub_make_reply_packet(&reply, p->question, NULL); + if (r < 0) + return log_debug_errno(r, "Failed to make failure packet: %m"); + + r = dns_stub_finish_reply_packet(reply, DNS_PACKET_ID(p), rcode, !!p->opt, DNS_PACKET_DO(p), authenticated); if (r < 0) return log_debug_errno(r, "Failed to build failure packet: %m"); @@ -170,33 +197,47 @@ static void dns_stub_query_complete(DnsQuery *q) { switch (q->state) { - case DNS_TRANSACTION_SUCCESS: { - _cleanup_(dns_packet_unrefp) DnsPacket *reply = NULL; + case DNS_TRANSACTION_SUCCESS: + + r = dns_stub_make_reply_packet(&q->reply_dns_packet, q->question_idna, q->answer); + if (r < 0) { + log_debug_errno(r, "Failed to build reply packet: %m"); + break; + } - r = dns_stub_make_reply_packet( + r = dns_query_process_cname(q); + if (r == -ELOOP) { + (void) dns_stub_send_failure(q->manager, q->request_dns_stream, q->request_dns_packet, DNS_RCODE_SERVFAIL, false); + break; + } + if (r < 0) { + log_debug_errno(r, "Failed to process CNAME: %m"); + break; + } + if (r == DNS_QUERY_RESTARTED) + return; + + r = dns_stub_finish_reply_packet( + q->reply_dns_packet, DNS_PACKET_ID(q->request_dns_packet), q->answer_rcode, - q->question_idna, - q->answer, !!q->request_dns_packet->opt, DNS_PACKET_DO(q->request_dns_packet), - DNS_PACKET_DO(q->request_dns_packet) && q->answer_authenticated, - &reply); + dns_query_fully_authenticated(q)); if (r < 0) { - log_debug_errno(r, "Failed to build reply packet: %m"); + log_debug_errno(r, "Failed to finish reply packet: %m"); break; } - (void) dns_stub_send(q->manager, q->request_dns_stream, q->request_dns_packet, reply); + (void) dns_stub_send(q->manager, q->request_dns_stream, q->request_dns_packet, q->reply_dns_packet); break; - } case DNS_TRANSACTION_RCODE_FAILURE: - (void) dns_stub_send_failure(q->manager, q->request_dns_stream, q->request_dns_packet, q->answer_rcode); + (void) dns_stub_send_failure(q->manager, q->request_dns_stream, q->request_dns_packet, q->answer_rcode, dns_query_fully_authenticated(q)); break; case DNS_TRANSACTION_NOT_FOUND: - (void) dns_stub_send_failure(q->manager, q->request_dns_stream, q->request_dns_packet, DNS_RCODE_NXDOMAIN); + (void) dns_stub_send_failure(q->manager, q->request_dns_stream, q->request_dns_packet, DNS_RCODE_NXDOMAIN, dns_query_fully_authenticated(q)); break; case DNS_TRANSACTION_TIMEOUT: @@ -212,7 +253,7 @@ static void dns_stub_query_complete(DnsQuery *q) { case DNS_TRANSACTION_NO_TRUST_ANCHOR: case DNS_TRANSACTION_RR_TYPE_UNSUPPORTED: case DNS_TRANSACTION_NETWORK_DOWN: - (void) dns_stub_send_failure(q->manager, q->request_dns_stream, q->request_dns_packet, DNS_RCODE_SERVFAIL); + (void) dns_stub_send_failure(q->manager, q->request_dns_stream, q->request_dns_packet, DNS_RCODE_SERVFAIL, false); break; case DNS_TRANSACTION_NULL: @@ -259,52 +300,52 @@ static void dns_stub_process_query(Manager *m, DnsStream *s, DnsPacket *p) { if (in_addr_is_localhost(p->family, &p->sender) <= 0 || in_addr_is_localhost(p->family, &p->destination) <= 0) { log_error("Got packet on unexpected IP range, refusing."); - dns_stub_send_failure(m, s, p, DNS_RCODE_SERVFAIL); + dns_stub_send_failure(m, s, p, DNS_RCODE_SERVFAIL, false); goto fail; } r = dns_packet_extract(p); if (r < 0) { log_debug_errno(r, "Failed to extract resources from incoming packet, ignoring packet: %m"); - dns_stub_send_failure(m, s, p, DNS_RCODE_FORMERR); + dns_stub_send_failure(m, s, p, DNS_RCODE_FORMERR, false); goto fail; } if (!DNS_PACKET_VERSION_SUPPORTED(p)) { log_debug("Got EDNS OPT field with unsupported version number."); - dns_stub_send_failure(m, s, p, DNS_RCODE_BADVERS); + dns_stub_send_failure(m, s, p, DNS_RCODE_BADVERS, false); goto fail; } if (dns_type_is_obsolete(p->question->keys[0]->type)) { log_debug("Got message with obsolete key type, refusing."); - dns_stub_send_failure(m, s, p, DNS_RCODE_NOTIMP); + dns_stub_send_failure(m, s, p, DNS_RCODE_NOTIMP, false); goto fail; } if (dns_type_is_zone_transer(p->question->keys[0]->type)) { log_debug("Got request for zone transfer, refusing."); - dns_stub_send_failure(m, s, p, DNS_RCODE_NOTIMP); + dns_stub_send_failure(m, s, p, DNS_RCODE_NOTIMP, false); goto fail; } if (!DNS_PACKET_RD(p)) { /* If the "rd" bit is off (i.e. recursion was not requested), then refuse operation */ log_debug("Got request with recursion disabled, refusing."); - dns_stub_send_failure(m, s, p, DNS_RCODE_REFUSED); + dns_stub_send_failure(m, s, p, DNS_RCODE_REFUSED, false); goto fail; } if (DNS_PACKET_DO(p) && DNS_PACKET_CD(p)) { log_debug("Got request with DNSSEC CD bit set, refusing."); - dns_stub_send_failure(m, s, p, DNS_RCODE_NOTIMP); + dns_stub_send_failure(m, s, p, DNS_RCODE_NOTIMP, false); goto fail; } - r = dns_query_new(m, &q, p->question, p->question, 0, SD_RESOLVED_PROTOCOLS_ALL|SD_RESOLVED_NO_SEARCH|SD_RESOLVED_NO_CNAME); + r = dns_query_new(m, &q, p->question, p->question, 0, SD_RESOLVED_PROTOCOLS_ALL|SD_RESOLVED_NO_SEARCH); if (r < 0) { log_error_errno(r, "Failed to generate query object: %m"); - dns_stub_send_failure(m, s, p, DNS_RCODE_SERVFAIL); + dns_stub_send_failure(m, s, p, DNS_RCODE_SERVFAIL, false); goto fail; } @@ -324,7 +365,7 @@ static void dns_stub_process_query(Manager *m, DnsStream *s, DnsPacket *p) { r = dns_query_go(q); if (r < 0) { log_error_errno(r, "Failed to start query: %m"); - dns_stub_send_failure(m, s, p, DNS_RCODE_SERVFAIL); + dns_stub_send_failure(m, s, p, DNS_RCODE_SERVFAIL, false); goto fail; } diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index 2fce44ec8b..ff2ad9c1de 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -31,6 +31,7 @@ #include "string-table.h" #define TRANSACTIONS_MAX 4096 +#define TRANSACTION_TCP_TIMEOUT_USEC (10U*USEC_PER_SEC) static void dns_transaction_reset_answer(DnsTransaction *t) { assert(t); @@ -318,7 +319,7 @@ void dns_transaction_complete(DnsTransaction *t, DnsTransactionState state) { dns_resource_key_to_string(t->key, key_str, sizeof key_str); log_struct(LOG_NOTICE, - LOG_MESSAGE_ID(SD_MESSAGE_DNSSEC_FAILURE), + "MESSAGE_ID=" SD_MESSAGE_DNSSEC_FAILURE_STR, LOG_MESSAGE("DNSSEC validation failed for question %s: %s", key_str, dnssec_result_to_string(t->answer_dnssec_result)), "DNS_TRANSACTION=%" PRIu16, t->id, "DNS_QUESTION=%s", key_str, @@ -363,6 +364,8 @@ void dns_transaction_complete(DnsTransaction *t, DnsTransactionState state) { SET_FOREACH_MOVE(z, t->notify_zone_items_done, t->notify_zone_items) dns_zone_item_notify(z); SWAP_TWO(t->notify_zone_items, t->notify_zone_items_done); + if (t->probing) + (void) dns_scope_announce(t->scope, false); SET_FOREACH_MOVE(d, t->notify_transactions_done, t->notify_transactions) dns_transaction_notify(d, t); @@ -830,7 +833,7 @@ void dns_transaction_process_reply(DnsTransaction *t, DnsPacket *p) { * should hence not attempt to access the query or transaction * after calling this function. */ - log_debug("Processing incoming packet on transaction %" PRIu16".", t->id); + log_debug("Processing incoming packet on transaction %" PRIu16". (rcode=%s)", t->id, dns_rcode_to_string(DNS_PACKET_RCODE(p))); switch (t->scope->protocol) { @@ -908,9 +911,13 @@ void dns_transaction_process_reply(DnsTransaction *t, DnsPacket *p) { /* Request failed, immediately try again with reduced features */ - if (t->current_feature_level <= DNS_SERVER_FEATURE_LEVEL_WORST) { - /* This was already at the lowest possible feature level? If so, we can't downgrade - * this transaction anymore, hence let's process the response, and accept the rcode. */ + if (t->current_feature_level <= DNS_SERVER_FEATURE_LEVEL_UDP) { + /* This was already at UDP feature level? If so, it doesn't make sense to downgrade + * this transaction anymore, hence let's process the response, and accept the + * rcode. Note that we don't retry on TCP, since that's a suitable way to mitigate + * packet loss, but is not going to give us better rcodes should we actually have + * managed to get them already at UDP level. */ + log_debug("Server returned error: %s", dns_rcode_to_string(DNS_PACKET_RCODE(p))); break; } @@ -924,7 +931,16 @@ void dns_transaction_process_reply(DnsTransaction *t, DnsPacket *p) { dns_transaction_retry(t, false /* use the same server */); return; - } else if (DNS_PACKET_TC(p)) + } + + if (DNS_PACKET_RCODE(p) == DNS_RCODE_REFUSED) { + /* This server refused our request? If so, try again, use a different server */ + log_debug("Server returned REFUSED, switching servers, and retrying."); + dns_transaction_retry(t, true /* pick a new server */); + return; + } + + if (DNS_PACKET_TC(p)) dns_server_packet_truncated(t->server, t->current_feature_level); break; @@ -1003,15 +1019,20 @@ void dns_transaction_process_reply(DnsTransaction *t, DnsPacket *p) { if (r > 0) /* Transaction got restarted... */ return; - if (IN_SET(t->scope->protocol, DNS_PROTOCOL_DNS, DNS_PROTOCOL_LLMNR)) { + if (IN_SET(t->scope->protocol, DNS_PROTOCOL_DNS, DNS_PROTOCOL_LLMNR, DNS_PROTOCOL_MDNS)) { - /* Only consider responses with equivalent query section to the request */ - r = dns_packet_is_reply_for(p, t->key); - if (r < 0) - goto fail; - if (r == 0) { - dns_transaction_complete(t, DNS_TRANSACTION_INVALID_REPLY); - return; + /* When dealing with protocols other than mDNS only consider responses with + * equivalent query section to the request. For mDNS this check doesn't make + * sense, because the section 6 of RFC6762 states that "Multicast DNS responses MUST NOT + * contain any questions in the Question Section". */ + if (t->scope->protocol != DNS_PROTOCOL_MDNS) { + r = dns_packet_is_reply_for(p, t->key); + if (r < 0) + goto fail; + if (r == 0) { + dns_transaction_complete(t, DNS_TRANSACTION_INVALID_REPLY); + return; + } } /* Install the answer as answer to the transaction */ @@ -1119,7 +1140,7 @@ static int dns_transaction_emit_udp(DnsTransaction *t) { return r; if (t->current_feature_level < DNS_SERVER_FEATURE_LEVEL_UDP) - return -EAGAIN; + return -EAGAIN; /* Sorry, can't do UDP, try TCP! */ if (!dns_server_dnssec_supported(t->server) && dns_type_is_dnssec(t->key->type)) return -EOPNOTSUPP; @@ -1196,15 +1217,26 @@ static usec_t transaction_get_resend_timeout(DnsTransaction *t) { assert(t); assert(t->scope); + switch (t->scope->protocol) { case DNS_PROTOCOL_DNS: + + /* When we do TCP, grant a much longer timeout, as in this case there's no need for us to quickly + * resend, as the kernel does that anyway for us, and we really don't want to interrupt it in that + * needlessly. */ + if (t->stream) + return TRANSACTION_TCP_TIMEOUT_USEC; + assert(t->server); return t->server->resend_timeout; case DNS_PROTOCOL_MDNS: assert(t->n_attempts > 0); - return (1 << (t->n_attempts - 1)) * USEC_PER_SEC; + if (t->probing) + return MDNS_PROBING_INTERVAL_USEC; + else + return (1 << (t->n_attempts - 1)) * USEC_PER_SEC; case DNS_PROTOCOL_LLMNR: return t->scope->resend_timeout; @@ -1358,7 +1390,7 @@ static int dns_transaction_make_packet_mdns(DnsTransaction *t) { if (r < 0) return r; - r = dns_packet_append_key(p, t->key, NULL); + r = dns_packet_append_key(p, t->key, 0, NULL); if (r < 0) return r; @@ -1390,7 +1422,7 @@ static int dns_transaction_make_packet_mdns(DnsTransaction *t) { if (qdcount >= UINT16_MAX) break; - r = dns_packet_append_key(p, other->key, NULL); + r = dns_packet_append_key(p, other->key, 0, NULL); /* * If we can't stuff more questions into the packet, just give up. @@ -1417,7 +1449,7 @@ static int dns_transaction_make_packet_mdns(DnsTransaction *t) { if (r < 0) return r; - (void) sd_event_source_set_description(t->timeout_event_source, "dns-transaction-timeout"); + (void) sd_event_source_set_description(other->timeout_event_source, "dns-transaction-timeout"); other->state = DNS_TRANSACTION_PENDING; other->next_attempt_after = ts; @@ -1459,7 +1491,7 @@ static int dns_transaction_make_packet(DnsTransaction *t) { if (r < 0) return r; - r = dns_packet_append_key(p, t->key, NULL); + r = dns_packet_append_key(p, t->key, 0, NULL); if (r < 0) return r; @@ -1560,7 +1592,7 @@ int dns_transaction_go(DnsTransaction *t) { r = dns_transaction_emit_udp(t); if (r == -EMSGSIZE) log_debug("Sending query via TCP since it is too large."); - if (r == -EAGAIN) + else if (r == -EAGAIN) log_debug("Sending query via TCP since server doesn't support UDP."); if (r == -EMSGSIZE || r == -EAGAIN) r = dns_transaction_open_tcp(t); @@ -1977,8 +2009,18 @@ int dns_transaction_request_dnssec_keys(DnsTransaction *t) { r = dns_resource_key_match_rr(t->key, rr, NULL); if (r < 0) return r; - if (r == 0) - continue; + if (r == 0) { + /* Hmm, so this SOA RR doesn't match our original question. In this case, maybe this is + * a negative reply, and we need the a SOA RR's TTL in order to cache a negative entry? + * If so, we need to validate it, too. */ + + r = dns_answer_match_key(t->answer, t->key, NULL); + if (r < 0) + return r; + if (r > 0) /* positive reply, we won't need the SOA and hence don't need to validate + * it. */ + continue; + } r = dnssec_has_rrsig(t->answer, rr->key); if (r < 0) @@ -2416,7 +2458,7 @@ static int dns_transaction_requires_nsec(DnsTransaction *t) { if (r > 0) { /* The lookup is from a TLD that is proven not to * exist, and we are in downgrade mode, hence ignore - * that fact that we didn't get any NSEC RRs.*/ + * that fact that we didn't get any NSEC RRs. */ log_info("Detected a negative query %s in a private DNS zone, permitting unsigned response.", dns_resource_key_to_string(t->key, key_str, sizeof key_str)); @@ -2721,7 +2763,7 @@ static int dnssec_validate_records( const char *source; /* This RRset validated, but as a wildcard. This means we need - * to prove via NSEC/NSEC3 that no matching non-wildcard RR exists.*/ + * to prove via NSEC/NSEC3 that no matching non-wildcard RR exists. */ /* First step, determine the source of synthesis */ r = dns_resource_record_source(rrsig, &source); @@ -2756,7 +2798,7 @@ static int dnssec_validate_records( return r; if (r == 0) { /* Data does not require signing. In that case, just copy it over, - * but remember that this is by no means authenticated.*/ + * but remember that this is by no means authenticated. */ r = dns_answer_move_by_key(validated, &t->answer, rr->key, 0); if (r < 0) return r; diff --git a/src/resolve/resolved-dns-transaction.h b/src/resolve/resolved-dns-transaction.h index 5a1df70422..a8d97738ef 100644 --- a/src/resolve/resolved-dns-transaction.h +++ b/src/resolve/resolved-dns-transaction.h @@ -78,6 +78,8 @@ struct DnsTransaction { bool clamp_ttl:1; + bool probing:1; + DnsPacket *sent, *received; DnsAnswer *answer; @@ -172,10 +174,20 @@ DnsTransactionSource dns_transaction_source_from_string(const char *s) _pure_; #define MDNS_JITTER_MIN_USEC (20 * USEC_PER_MSEC) #define MDNS_JITTER_RANGE_USEC (100 * USEC_PER_MSEC) +/* mDNS probing interval, see RFC 6762 Section 8.1 */ +#define MDNS_PROBING_INTERVAL_USEC (250 * USEC_PER_MSEC) + /* Maximum attempts to send DNS requests, across all DNS servers */ -#define DNS_TRANSACTION_ATTEMPTS_MAX 16 +#define DNS_TRANSACTION_ATTEMPTS_MAX 24 /* Maximum attempts to send LLMNR requests, see RFC 4795 Section 2.7 */ #define LLMNR_TRANSACTION_ATTEMPTS_MAX 3 -#define TRANSACTION_ATTEMPTS_MAX(p) ((p) == DNS_PROTOCOL_LLMNR ? LLMNR_TRANSACTION_ATTEMPTS_MAX : DNS_TRANSACTION_ATTEMPTS_MAX) +/* Maximum attempts to send MDNS requests, see RFC 6762 Section 8.1 */ +#define MDNS_TRANSACTION_ATTEMPTS_MAX 3 + +#define TRANSACTION_ATTEMPTS_MAX(p) (((p) == DNS_PROTOCOL_LLMNR) ? \ + LLMNR_TRANSACTION_ATTEMPTS_MAX : \ + (((p) == DNS_PROTOCOL_MDNS) ? \ + MDNS_TRANSACTION_ATTEMPTS_MAX : \ + DNS_TRANSACTION_ATTEMPTS_MAX)) diff --git a/src/resolve/resolved-dns-trust-anchor.c b/src/resolve/resolved-dns-trust-anchor.c index 9917b9e984..7e9f9e5a20 100644 --- a/src/resolve/resolved-dns-trust-anchor.c +++ b/src/resolve/resolved-dns-trust-anchor.c @@ -35,11 +35,16 @@ static const char trust_anchor_dirs[] = CONF_PATHS_NULSTR("dnssec-trust-anchors.d"); -/* The DS RR from https://data.iana.org/root-anchors/root-anchors.xml, retrieved December 2015 */ -static const uint8_t root_digest[] = +/* The first DS RR from https://data.iana.org/root-anchors/root-anchors.xml, retrieved December 2015 */ +static const uint8_t root_digest1[] = { 0x49, 0xAA, 0xC1, 0x1D, 0x7B, 0x6F, 0x64, 0x46, 0x70, 0x2E, 0x54, 0xA1, 0x60, 0x73, 0x71, 0x60, 0x7A, 0x1A, 0x41, 0x85, 0x52, 0x00, 0xFD, 0x2C, 0xE1, 0xCD, 0xDE, 0x32, 0xF2, 0x4E, 0x8F, 0xB5 }; +/* The second DS RR from https://data.iana.org/root-anchors/root-anchors.xml, retrieved February 2017 */ +static const uint8_t root_digest2[] = + { 0xE0, 0x6D, 0x44, 0xB8, 0x0B, 0x8F, 0x1D, 0x39, 0xA9, 0x5C, 0x0B, 0x0D, 0x7C, 0x65, 0xD0, 0x84, + 0x58, 0xE8, 0x80, 0x40, 0x9B, 0xBC, 0x68, 0x34, 0x57, 0x10, 0x42, 0x37, 0xC7, 0xF8, 0xEC, 0x8D }; + static bool dns_trust_anchor_knows_domain_positive(DnsTrustAnchor *d, const char *name) { assert(d); @@ -51,9 +56,40 @@ static bool dns_trust_anchor_knows_domain_positive(DnsTrustAnchor *d, const char hashmap_contains(d->positive_by_key, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_IN, DNS_TYPE_DS, name)); } -static int dns_trust_anchor_add_builtin_positive(DnsTrustAnchor *d) { +static int add_root_ksk( + DnsAnswer *answer, + DnsResourceKey *key, + uint16_t key_tag, + uint8_t algorithm, + uint8_t digest_type, + const void *digest, + size_t digest_size) { + _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr = NULL; + int r; + + rr = dns_resource_record_new(key); + if (!rr) + return -ENOMEM; + + rr->ds.key_tag = key_tag; + rr->ds.algorithm = algorithm; + rr->ds.digest_type = digest_type; + rr->ds.digest_size = digest_size; + rr->ds.digest = memdup(digest, rr->ds.digest_size); + if (!rr->ds.digest) + return -ENOMEM; + + r = dns_answer_add(answer, rr, 0, DNS_ANSWER_AUTHENTICATED); + if (r < 0) + return r; + + return 0; +} + +static int dns_trust_anchor_add_builtin_positive(DnsTrustAnchor *d) { _cleanup_(dns_answer_unrefp) DnsAnswer *answer = NULL; + _cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL; int r; assert(d); @@ -62,35 +98,29 @@ static int dns_trust_anchor_add_builtin_positive(DnsTrustAnchor *d) { if (r < 0) return r; - /* Only add the built-in trust anchor if there's neither a DS - * nor a DNSKEY defined for the root domain. That way users - * have an easy way to override the root domain DS/DNSKEY - * data. */ + /* Only add the built-in trust anchor if there's neither a DS nor a DNSKEY defined for the root domain. That + * way users have an easy way to override the root domain DS/DNSKEY data. */ if (dns_trust_anchor_knows_domain_positive(d, ".")) return 0; - /* Add the RR from https://data.iana.org/root-anchors/root-anchors.xml */ - rr = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_DS, ""); - if (!rr) + key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_DS, ""); + if (!key) return -ENOMEM; - rr->ds.key_tag = 19036; - rr->ds.algorithm = DNSSEC_ALGORITHM_RSASHA256; - rr->ds.digest_type = DNSSEC_DIGEST_SHA256; - rr->ds.digest_size = sizeof(root_digest); - rr->ds.digest = memdup(root_digest, rr->ds.digest_size); - if (!rr->ds.digest) - return -ENOMEM; - - answer = dns_answer_new(1); + answer = dns_answer_new(2); if (!answer) return -ENOMEM; - r = dns_answer_add(answer, rr, 0, DNS_ANSWER_AUTHENTICATED); + /* Add the two RRs from https://data.iana.org/root-anchors/root-anchors.xml */ + r = add_root_ksk(answer, key, 19036, DNSSEC_ALGORITHM_RSASHA256, DNSSEC_DIGEST_SHA256, root_digest1, sizeof(root_digest1)); if (r < 0) return r; - r = hashmap_put(d->positive_by_key, rr->key, answer); + r = add_root_ksk(answer, key, 20326, DNSSEC_ALGORITHM_RSASHA256, DNSSEC_DIGEST_SHA256, root_digest2, sizeof(root_digest2)); + if (r < 0) + return r; + + r = hashmap_put(d->positive_by_key, key, answer); if (r < 0) return r; @@ -547,10 +577,33 @@ int dns_trust_anchor_lookup_positive(DnsTrustAnchor *d, const DnsResourceKey *ke } int dns_trust_anchor_lookup_negative(DnsTrustAnchor *d, const char *name) { + int r; + assert(d); assert(name); - return set_contains(d->negative_by_name, name); + for (;;) { + /* If the domain is listed as-is in the NTA database, then that counts */ + if (set_contains(d->negative_by_name, name)) + return true; + + /* If the domain isn't listed as NTA, but is listed as positive trust anchor, then that counts. See RFC + * 7646, section 1.1 */ + if (hashmap_contains(d->positive_by_key, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_IN, DNS_TYPE_DS, name))) + return false; + + if (hashmap_contains(d->positive_by_key, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_IN, DNS_TYPE_KEY, name))) + return false; + + /* And now, let's look at the parent, and check that too */ + r = dns_name_parent(&name); + if (r < 0) + return r; + if (r == 0) + break; + } + + return false; } static int dns_trust_anchor_revoked_put(DnsTrustAnchor *d, DnsResourceRecord *rr) { @@ -594,7 +647,7 @@ static int dns_trust_anchor_remove_revoked(DnsTrustAnchor *d, DnsResourceRecord /* We found the key! Warn the user */ log_struct(LOG_WARNING, - LOG_MESSAGE_ID(SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED), + "MESSAGE_ID=" SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED_STR, LOG_MESSAGE("DNSSEC Trust anchor %s has been revoked. Please update the trust anchor, or upgrade your operating system."), strna(dns_resource_record_to_string(rr)), "TRUST_ANCHOR=%s", dns_resource_record_to_string(rr), NULL); diff --git a/src/resolve/resolved-dns-zone.c b/src/resolve/resolved-dns-zone.c index 746a979f47..ad024b54f5 100644 --- a/src/resolve/resolved-dns-zone.c +++ b/src/resolve/resolved-dns-zone.c @@ -196,6 +196,7 @@ static int dns_zone_item_probe_start(DnsZoneItem *i) { goto gc; i->probe_transaction = t; + t->probing = true; if (t->state == DNS_TRANSACTION_NULL) { diff --git a/src/resolve/resolved-dns-zone.h b/src/resolve/resolved-dns-zone.h index a41df37e6b..545ec958fb 100644 --- a/src/resolve/resolved-dns-zone.h +++ b/src/resolve/resolved-dns-zone.h @@ -37,6 +37,9 @@ typedef enum DnsZoneItemState DnsZoneItemState; /* RFC 4795 Section 2.8. suggests a TTL of 30s by default */ #define LLMNR_DEFAULT_TTL (30) +/* RFC 6762 Section 10. suggests a TTL of 120s by default */ +#define MDNS_DEFAULT_TTL (120) + enum DnsZoneItemState { DNS_ZONE_ITEM_PROBING, DNS_ZONE_ITEM_ESTABLISHED, diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c index e7e5c5f5a7..3f7f9035cf 100644 --- a/src/resolve/resolved-link.c +++ b/src/resolve/resolved-link.c @@ -85,6 +85,10 @@ Link *link_free(Link *l) { if (!l) return NULL; + /* Send goodbye messages. */ + dns_scope_announce(l->mdns_ipv4_scope, true); + dns_scope_announce(l->mdns_ipv6_scope, true); + link_flush_settings(l); while (l->addresses) @@ -539,7 +543,7 @@ bool link_relevant(Link *l, int family, bool local_multicast) { * beat, can do multicast and has at least one link-local (or better) IP address. * * A link is relevant for non-multicast traffic if it isn't a loopback device, has a link beat, and has at - * least one routable address.*/ + * least one routable address. */ if (l->flags & (IFF_LOOPBACK|IFF_DORMANT)) return false; @@ -665,6 +669,7 @@ int link_address_new(Link *l, LinkAddress **ret, int family, const union in_addr a->link = l; LIST_PREPEND(addresses, l->addresses, a); + l->n_addresses++; if (ret) *ret = a; @@ -679,6 +684,9 @@ LinkAddress *link_address_free(LinkAddress *a) { if (a->link) { LIST_REMOVE(addresses, a->link->addresses, a); + assert(a->link->n_addresses > 0); + a->link->n_addresses--; + if (a->llmnr_address_rr) { if (a->family == AF_INET && a->link->llmnr_ipv4_scope) dns_zone_remove_rr(&a->link->llmnr_ipv4_scope->zone, a->llmnr_address_rr); @@ -692,10 +700,26 @@ LinkAddress *link_address_free(LinkAddress *a) { else if (a->family == AF_INET6 && a->link->llmnr_ipv6_scope) dns_zone_remove_rr(&a->link->llmnr_ipv6_scope->zone, a->llmnr_ptr_rr); } + + if (a->mdns_address_rr) { + if (a->family == AF_INET && a->link->mdns_ipv4_scope) + dns_zone_remove_rr(&a->link->mdns_ipv4_scope->zone, a->mdns_address_rr); + else if (a->family == AF_INET6 && a->link->mdns_ipv6_scope) + dns_zone_remove_rr(&a->link->mdns_ipv6_scope->zone, a->mdns_address_rr); + } + + if (a->mdns_ptr_rr) { + if (a->family == AF_INET && a->link->mdns_ipv4_scope) + dns_zone_remove_rr(&a->link->mdns_ipv4_scope->zone, a->mdns_ptr_rr); + else if (a->family == AF_INET6 && a->link->mdns_ipv6_scope) + dns_zone_remove_rr(&a->link->mdns_ipv6_scope->zone, a->mdns_ptr_rr); + } } dns_resource_record_unref(a->llmnr_address_rr); dns_resource_record_unref(a->llmnr_ptr_rr); + dns_resource_record_unref(a->mdns_address_rr); + dns_resource_record_unref(a->mdns_ptr_rr); return mfree(a); } @@ -746,7 +770,7 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) { r = dns_zone_put(&a->link->llmnr_ipv4_scope->zone, a->link->llmnr_ipv4_scope, a->llmnr_ptr_rr, false); if (r < 0) - log_warning_errno(r, "Failed to add IPv6 PTR record to LLMNR zone: %m"); + log_warning_errno(r, "Failed to add IPv4 PTR record to LLMNR zone: %m"); } else { if (a->llmnr_address_rr) { if (a->link->llmnr_ipv4_scope) @@ -760,6 +784,59 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) { a->llmnr_ptr_rr = dns_resource_record_unref(a->llmnr_ptr_rr); } } + + if (!force_remove && + link_address_relevant(a, true) && + a->link->mdns_ipv4_scope && + a->link->mdns_support == RESOLVE_SUPPORT_YES && + a->link->manager->mdns_support == RESOLVE_SUPPORT_YES) { + if (!a->link->manager->mdns_host_ipv4_key) { + a->link->manager->mdns_host_ipv4_key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, a->link->manager->mdns_hostname); + if (!a->link->manager->mdns_host_ipv4_key) { + r = -ENOMEM; + goto fail; + } + } + + if (!a->mdns_address_rr) { + a->mdns_address_rr = dns_resource_record_new(a->link->manager->mdns_host_ipv4_key); + if (!a->mdns_address_rr) { + r = -ENOMEM; + goto fail; + } + + a->mdns_address_rr->a.in_addr = a->in_addr.in; + a->mdns_address_rr->ttl = MDNS_DEFAULT_TTL; + } + + if (!a->mdns_ptr_rr) { + r = dns_resource_record_new_reverse(&a->mdns_ptr_rr, a->family, &a->in_addr, a->link->manager->mdns_hostname); + if (r < 0) + goto fail; + + a->mdns_ptr_rr->ttl = MDNS_DEFAULT_TTL; + } + + r = dns_zone_put(&a->link->mdns_ipv4_scope->zone, a->link->mdns_ipv4_scope, a->mdns_address_rr, true); + if (r < 0) + log_warning_errno(r, "Failed to add A record to MDNS zone: %m"); + + r = dns_zone_put(&a->link->mdns_ipv4_scope->zone, a->link->mdns_ipv4_scope, a->mdns_ptr_rr, false); + if (r < 0) + log_warning_errno(r, "Failed to add IPv4 PTR record to MDNS zone: %m"); + } else { + if (a->mdns_address_rr) { + if (a->link->mdns_ipv4_scope) + dns_zone_remove_rr(&a->link->mdns_ipv4_scope->zone, a->mdns_address_rr); + a->mdns_address_rr = dns_resource_record_unref(a->mdns_address_rr); + } + + if (a->mdns_ptr_rr) { + if (a->link->mdns_ipv4_scope) + dns_zone_remove_rr(&a->link->mdns_ipv4_scope->zone, a->mdns_ptr_rr); + a->mdns_ptr_rr = dns_resource_record_unref(a->mdns_ptr_rr); + } + } } if (a->family == AF_INET6) { @@ -817,6 +894,60 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) { a->llmnr_ptr_rr = dns_resource_record_unref(a->llmnr_ptr_rr); } } + + if (!force_remove && + link_address_relevant(a, true) && + a->link->mdns_ipv6_scope && + a->link->mdns_support == RESOLVE_SUPPORT_YES && + a->link->manager->mdns_support == RESOLVE_SUPPORT_YES) { + + if (!a->link->manager->mdns_host_ipv6_key) { + a->link->manager->mdns_host_ipv6_key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_AAAA, a->link->manager->mdns_hostname); + if (!a->link->manager->mdns_host_ipv6_key) { + r = -ENOMEM; + goto fail; + } + } + + if (!a->mdns_address_rr) { + a->mdns_address_rr = dns_resource_record_new(a->link->manager->mdns_host_ipv6_key); + if (!a->mdns_address_rr) { + r = -ENOMEM; + goto fail; + } + + a->mdns_address_rr->aaaa.in6_addr = a->in_addr.in6; + a->mdns_address_rr->ttl = MDNS_DEFAULT_TTL; + } + + if (!a->mdns_ptr_rr) { + r = dns_resource_record_new_reverse(&a->mdns_ptr_rr, a->family, &a->in_addr, a->link->manager->mdns_hostname); + if (r < 0) + goto fail; + + a->mdns_ptr_rr->ttl = MDNS_DEFAULT_TTL; + } + + r = dns_zone_put(&a->link->mdns_ipv6_scope->zone, a->link->mdns_ipv6_scope, a->mdns_address_rr, true); + if (r < 0) + log_warning_errno(r, "Failed to add AAAA record to MDNS zone: %m"); + + r = dns_zone_put(&a->link->mdns_ipv6_scope->zone, a->link->mdns_ipv6_scope, a->mdns_ptr_rr, false); + if (r < 0) + log_warning_errno(r, "Failed to add IPv6 PTR record to MDNS zone: %m"); + } else { + if (a->mdns_address_rr) { + if (a->link->mdns_ipv6_scope) + dns_zone_remove_rr(&a->link->mdns_ipv6_scope->zone, a->mdns_address_rr); + a->mdns_address_rr = dns_resource_record_unref(a->mdns_address_rr); + } + + if (a->mdns_ptr_rr) { + if (a->link->mdns_ipv6_scope) + dns_zone_remove_rr(&a->link->mdns_ipv6_scope->zone, a->mdns_ptr_rr); + a->mdns_ptr_rr = dns_resource_record_unref(a->mdns_ptr_rr); + } + } } return; diff --git a/src/resolve/resolved-link.h b/src/resolve/resolved-link.h index c9b2a58c34..55a56b7906 100644 --- a/src/resolve/resolved-link.h +++ b/src/resolve/resolved-link.h @@ -47,6 +47,8 @@ struct LinkAddress { DnsResourceRecord *llmnr_address_rr; DnsResourceRecord *llmnr_ptr_rr; + DnsResourceRecord *mdns_address_rr; + DnsResourceRecord *mdns_ptr_rr; LIST_FIELDS(LinkAddress, addresses); }; @@ -58,6 +60,7 @@ struct Link { unsigned flags; LIST_HEAD(LinkAddress, addresses); + unsigned n_addresses; LIST_HEAD(DnsServer, dns_servers); DnsServer *current_dns_server; diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c index 667774b906..c4e4409fe3 100644 --- a/src/resolve/resolved-manager.c +++ b/src/resolve/resolved-manager.c @@ -322,28 +322,28 @@ static int manager_network_monitor_listen(Manager *m) { return 0; } -static int determine_hostname(char **llmnr_hostname, char **mdns_hostname) { +static int determine_hostname(char **full_hostname, char **llmnr_hostname, char **mdns_hostname) { _cleanup_free_ char *h = NULL, *n = NULL; char label[DNS_LABEL_MAX]; const char *p; int r, k; + assert(full_hostname); assert(llmnr_hostname); assert(mdns_hostname); - /* Extract and normalize the first label of the locally - * configured hostname, and check it's not "localhost". */ + /* Extract and normalize the first label of the locally configured hostname, and check it's not "localhost". */ - h = gethostname_malloc(); - if (!h) - return log_oom(); + r = gethostname_strict(&h); + if (r < 0) + return log_debug_errno(r, "Can't determine system hostname: %m"); p = h; r = dns_label_unescape(&p, label, sizeof(label)); if (r < 0) return log_error_errno(r, "Failed to unescape host name: %m"); if (r == 0) { - log_error("Couldn't find a single label in hosntame."); + log_error("Couldn't find a single label in hostname."); return -EINVAL; } @@ -374,32 +374,84 @@ static int determine_hostname(char **llmnr_hostname, char **mdns_hostname) { *llmnr_hostname = n; n = NULL; + *full_hostname = h; + h = NULL; + + return 0; +} + +static const char *fallback_hostname(void) { + + /* Determine the fall back hostname. For exposing this system to the outside world, we cannot have it to be + * "localhost" even if that's the compiled in hostname. In this case, let's revert to "linux" instead. */ + + if (is_localhost(FALLBACK_HOSTNAME)) + return "linux"; + + return FALLBACK_HOSTNAME; +} + +static int make_fallback_hostnames(char **full_hostname, char **llmnr_hostname, char **mdns_hostname) { + _cleanup_free_ char *n = NULL, *m = NULL; + char label[DNS_LABEL_MAX], *h; + const char *p; + int r; + + assert(full_hostname); + assert(llmnr_hostname); + assert(mdns_hostname); + + p = fallback_hostname(); + r = dns_label_unescape(&p, label, sizeof(label)); + if (r < 0) + return log_error_errno(r, "Failed to unescape fallback host name: %m"); + + assert(r > 0); /* The fallback hostname must have at least one label */ + + r = dns_label_escape_new(label, r, &n); + if (r < 0) + return log_error_errno(r, "Failed to escape fallback hostname: %m"); + + r = dns_name_concat(n, "local", &m); + if (r < 0) + return log_error_errno(r, "Failed to concatenate mDNS hostname: %m"); + + h = strdup(fallback_hostname()); + if (!h) + return log_oom(); + + *llmnr_hostname = n; + n = NULL; + + *mdns_hostname = m; + m = NULL; + + *full_hostname = h; + return 0; } static int on_hostname_change(sd_event_source *es, int fd, uint32_t revents, void *userdata) { - _cleanup_free_ char *llmnr_hostname = NULL, *mdns_hostname = NULL; + _cleanup_free_ char *full_hostname = NULL, *llmnr_hostname = NULL, *mdns_hostname = NULL; Manager *m = userdata; int r; assert(m); - r = determine_hostname(&llmnr_hostname, &mdns_hostname); + r = determine_hostname(&full_hostname, &llmnr_hostname, &mdns_hostname); if (r < 0) return 0; /* ignore invalid hostnames */ - if (streq(llmnr_hostname, m->llmnr_hostname) && streq(mdns_hostname, m->mdns_hostname)) + if (streq(full_hostname, m->full_hostname) && + streq(llmnr_hostname, m->llmnr_hostname) && + streq(mdns_hostname, m->mdns_hostname)) return 0; - log_info("System hostname changed to '%s'.", llmnr_hostname); + log_info("System hostname changed to '%s'.", full_hostname); - free(m->llmnr_hostname); - free(m->mdns_hostname); - - m->llmnr_hostname = llmnr_hostname; - m->mdns_hostname = mdns_hostname; - - llmnr_hostname = mdns_hostname = NULL; + free_and_replace(m->full_hostname, full_hostname); + free_and_replace(m->llmnr_hostname, llmnr_hostname); + free_and_replace(m->mdns_hostname, mdns_hostname); manager_refresh_rrs(m); @@ -428,18 +480,15 @@ static int manager_watch_hostname(Manager *m) { (void) sd_event_source_set_description(m->hostname_event_source, "hostname"); - r = determine_hostname(&m->llmnr_hostname, &m->mdns_hostname); + r = determine_hostname(&m->full_hostname, &m->llmnr_hostname, &m->mdns_hostname); if (r < 0) { - log_info("Defaulting to hostname 'linux'."); - m->llmnr_hostname = strdup("linux"); - if (!m->llmnr_hostname) - return log_oom(); - - m->mdns_hostname = strdup("linux.local"); - if (!m->mdns_hostname) - return log_oom(); + log_info("Defaulting to hostname '%s'.", fallback_hostname()); + + r = make_fallback_hostnames(&m->full_hostname, &m->llmnr_hostname, &m->mdns_hostname); + if (r < 0) + return r; } else - log_info("Using system hostname '%s'.", m->llmnr_hostname); + log_info("Using system hostname '%s'.", m->full_hostname); return 0; } @@ -498,7 +547,7 @@ int manager_new(Manager **ret) { m->hostname_fd = -1; m->llmnr_support = RESOLVE_SUPPORT_YES; - m->mdns_support = RESOLVE_SUPPORT_NO; + m->mdns_support = RESOLVE_SUPPORT_YES; m->dnssec_mode = DEFAULT_DNSSEC_MODE; m->enable_cache = true; m->dns_stub_listener_mode = DNS_STUB_LISTENER_UDP; @@ -621,9 +670,13 @@ Manager *manager_free(Manager *m) { dns_resource_key_unref(m->llmnr_host_ipv4_key); dns_resource_key_unref(m->llmnr_host_ipv6_key); + dns_resource_key_unref(m->mdns_host_ipv4_key); + dns_resource_key_unref(m->mdns_host_ipv6_key); sd_event_source_unref(m->hostname_event_source); safe_close(m->hostname_fd); + + free(m->full_hostname); free(m->llmnr_hostname); free(m->mdns_hostname); @@ -1007,6 +1060,8 @@ void manager_refresh_rrs(Manager *m) { m->llmnr_host_ipv4_key = dns_resource_key_unref(m->llmnr_host_ipv4_key); m->llmnr_host_ipv6_key = dns_resource_key_unref(m->llmnr_host_ipv6_key); + m->mdns_host_ipv4_key = dns_resource_key_unref(m->mdns_host_ipv4_key); + m->mdns_host_ipv6_key = dns_resource_key_unref(m->mdns_host_ipv6_key); HASHMAP_FOREACH(l, m->links, i) { link_add_rrs(l, true); @@ -1146,8 +1201,14 @@ int manager_is_own_hostname(Manager *m, const char *name) { return r; } - if (m->mdns_hostname) - return dns_name_equal(name, m->mdns_hostname); + if (m->mdns_hostname) { + r = dns_name_equal(name, m->mdns_hostname); + if (r != 0) + return r; + } + + if (m->full_hostname) + return dns_name_equal(name, m->full_hostname); return 0; } diff --git a/src/resolve/resolved-manager.h b/src/resolve/resolved-manager.h index 6b2208ed94..97c52b7729 100644 --- a/src/resolve/resolved-manager.h +++ b/src/resolve/resolved-manager.h @@ -109,10 +109,13 @@ struct Manager { sd_event_source *bus_retry_event_source; /* The hostname we publish on LLMNR and mDNS */ + char *full_hostname; char *llmnr_hostname; char *mdns_hostname; DnsResourceKey *llmnr_host_ipv4_key; DnsResourceKey *llmnr_host_ipv6_key; + DnsResourceKey *mdns_host_ipv4_key; + DnsResourceKey *mdns_host_ipv6_key; /* Watch the system hostname */ int hostname_fd; diff --git a/src/resolve/resolved-mdns.c b/src/resolve/resolved-mdns.c index b13b1d0144..c40e8f75f0 100644 --- a/src/resolve/resolved-mdns.c +++ b/src/resolve/resolved-mdns.c @@ -67,6 +67,50 @@ eaddrinuse: return 0; } +static int mdns_scope_process_query(DnsScope *s, DnsPacket *p) { + _cleanup_(dns_answer_unrefp) DnsAnswer *answer = NULL, *soa = NULL; + _cleanup_(dns_packet_unrefp) DnsPacket *reply = NULL; + DnsResourceKey *key = NULL; + bool tentative = false; + int r; + + assert(s); + assert(p); + + r = dns_packet_extract(p); + if (r < 0) + return log_debug_errno(r, "Failed to extract resource records from incoming packet: %m"); + + /* TODO: there might be more than one question in mDNS queries. */ + assert_return((dns_question_size(p->question) > 0), -EINVAL); + key = p->question->keys[0]; + + r = dns_zone_lookup(&s->zone, key, 0, &answer, &soa, &tentative); + if (r < 0) { + log_debug_errno(r, "Failed to lookup key: %m"); + return r; + } + if (r == 0) + return 0; + + r = dns_scope_make_reply_packet(s, DNS_PACKET_ID(p), DNS_RCODE_SUCCESS, NULL, answer, NULL, false, &reply); + if (r < 0) { + log_debug_errno(r, "Failed to build reply packet: %m"); + return r; + } + + if (!ratelimit_test(&s->ratelimit)) + return 0; + + r = dns_scope_emit_udp(s, -1, reply); + if (r < 0) { + log_debug_errno(r, "Failed to send reply packet: %m"); + return r; + } + + return 0; +} + static int on_mdns_packet(sd_event_source *s, int fd, uint32_t revents, void *userdata) { _cleanup_(dns_packet_unrefp) DnsPacket *p = NULL; Manager *m = userdata; @@ -77,6 +121,9 @@ static int on_mdns_packet(sd_event_source *s, int fd, uint32_t revents, void *us if (r <= 0) return r; + if (manager_our_packet(m, p)) + return 0; + scope = manager_find_scope(m, p); if (!scope) { log_warning("Got mDNS UDP packet on unknown scope. Ignoring."); @@ -115,9 +162,28 @@ static int on_mdns_packet(sd_event_source *s, int fd, uint32_t revents, void *us dns_name_endswith(name, "local") > 0)) return 0; + if (rr->ttl == 0) { + log_debug("Got a goodbye packet"); + /* See the section 10.1 of RFC6762 */ + rr->ttl = 1; + } + t = dns_scope_find_transaction(scope, rr->key, false); if (t) dns_transaction_process_reply(t, p); + + /* Also look for the various types of ANY transactions */ + t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(rr->key->class, DNS_TYPE_ANY, dns_resource_key_name(rr->key)), false); + if (t) + dns_transaction_process_reply(t, p); + + t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_ANY, rr->key->type, dns_resource_key_name(rr->key)), false); + if (t) + dns_transaction_process_reply(t, p); + + t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_ANY, DNS_TYPE_ANY, dns_resource_key_name(rr->key)), false); + if (t) + dns_transaction_process_reply(t, p); } dns_cache_put(&scope->cache, NULL, DNS_PACKET_RCODE(p), p->answer, false, (uint32_t) -1, 0, p->family, &p->sender); @@ -125,7 +191,11 @@ static int on_mdns_packet(sd_event_source *s, int fd, uint32_t revents, void *us } else if (dns_packet_validate_query(p) > 0) { log_debug("Got mDNS query packet for id %u", DNS_PACKET_ID(p)); - dns_scope_process_query(scope, NULL, p); + r = mdns_scope_process_query(scope, p); + if (r < 0) { + log_debug_errno(r, "mDNS query processing failed: %m"); + return 0; + } } else log_debug("Invalid mDNS UDP packet."); diff --git a/src/resolve/resolved-mdns.h b/src/resolve/resolved-mdns.h index 5d274648f4..06bd3296be 100644 --- a/src/resolve/resolved-mdns.h +++ b/src/resolve/resolved-mdns.h @@ -22,6 +22,7 @@ #include "resolved-manager.h" #define MDNS_PORT 5353 +#define MDNS_ANNOUNCE_DELAY (1 * USEC_PER_SEC) int manager_mdns_ipv4_fd(Manager *m); int manager_mdns_ipv6_fd(Manager *m); diff --git a/src/resolve/resolved-resolv-conf.c b/src/resolve/resolved-resolv-conf.c index 13f08f8a6c..3c62550872 100644 --- a/src/resolve/resolved-resolv-conf.c +++ b/src/resolve/resolved-resolv-conf.c @@ -203,13 +203,13 @@ static void write_resolv_conf_search( static int write_resolv_conf_contents(FILE *f, OrderedSet *dns, OrderedSet *domains) { Iterator i; - fputs("# This file is managed by systemd-resolved(8). Do not edit.\n#\n" + fputs("# This file is managed by man:systemd-resolved(8). Do not edit.\n#\n" "# This is a dynamic resolv.conf file for connecting local clients directly to\n" "# all known DNS servers.\n#\n" "# Third party programs must not access this file directly, but only through the\n" - "# symlink at /etc/resolv.conf. To manage resolv.conf(5) in a different way,\n" + "# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,\n" "# replace this symlink by a static file or a different symlink.\n#\n" - "# See systemd-resolved.service(8) for details about the supported modes of\n" + "# See man:systemd-resolved.service(8) for details about the supported modes of\n" "# operation for /etc/resolv.conf.\n\n", f); if (ordered_set_isempty(dns)) diff --git a/src/resolve/test-dns-packet.c b/src/resolve/test-dns-packet.c index 956b155872..8cbe492526 100644 --- a/src/resolve/test-dns-packet.c +++ b/src/resolve/test-dns-packet.c @@ -29,6 +29,7 @@ #include "resolved-dns-rr.h" #include "string-util.h" #include "strv.h" +#include "tests.h" #include "unaligned.h" #define HASH_KEY SD_ID128_MAKE(d3,1e,48,90,4b,fa,4c,fe,af,9d,d5,a1,d7,2e,8a,b1) @@ -115,7 +116,7 @@ int main(int argc, char **argv) { N = argc - 1; fnames = argv + 1; } else { - assert_se(glob(RESOLVE_TEST_DIR "/*.pkts", GLOB_NOSORT, NULL, &g) == 0); + assert_se(glob(get_testdata_dir("/test-resolve/*.pkts"), GLOB_NOSORT, NULL, &g) == 0); N = g.gl_pathc; fnames = g.gl_pathv; } diff --git a/src/run/run.c b/src/run/run.c index 08f7e12336..2e6765aa18 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -497,7 +497,7 @@ static int transient_service_set_properties(sd_bus_message *m, char **argv, cons if (r < 0) return r; - if (arg_wait) { + if (arg_wait || arg_pty) { r = sd_bus_message_append(m, "(sv)", "AddRef", "b", 1); if (r < 0) return r; @@ -818,16 +818,18 @@ static int run_context_update(RunContext *c, const char *path) { {} }; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; int r; r = bus_map_all_properties(c->bus, "org.freedesktop.systemd1", path, map, + &error, c); if (r < 0) { sd_event_exit(c->event, EXIT_FAILURE); - return log_error_errno(r, "Failed to query unit state: %m"); + return log_error_errno(r, "Failed to query unit state: %s", bus_error_message(&error, r)); } run_context_check_done(c); @@ -1024,7 +1026,6 @@ static int start_transient_service( pty_forward_set_handler(c.forward, pty_forward_handler, &c); } - path = unit_dbus_path_from_name(service); if (!path) return log_oom(); diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c index 20c1085697..aae69f6da5 100644 --- a/src/shared/bus-unit-util.c +++ b/src/shared/bus-unit-util.c @@ -554,7 +554,7 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen } else if (streq(field, "RestrictNamespaces")) { bool invert = false; - uint64_t flags = 0; + unsigned long flags = 0; if (eq[0] == '~') { invert = true; @@ -575,7 +575,7 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen if (invert) flags = (~flags) & NAMESPACE_FLAGS_ALL; - r = sd_bus_message_append(m, "v", "t", flags); + r = sd_bus_message_append(m, "v", "t", (uint64_t) flags); } else if ((dep = unit_dependency_from_string(field)) >= 0) r = sd_bus_message_append(m, "v", "as", 1, eq); else if (streq(field, "MountFlags")) { @@ -585,7 +585,7 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen if (r < 0) return log_error_errno(r, "Failed to parse mount propagation flags: %s", eq); - r = sd_bus_message_append(m, "v", "t", f); + r = sd_bus_message_append(m, "v", "t", (uint64_t) f); } else if (STR_IN_SET(field, "BindPaths", "BindReadOnlyPaths")) { const char *p = eq; @@ -862,7 +862,7 @@ static void log_job_error_with_service_result(const char* service, const char *r service_shell_quoted = shell_maybe_quote(service); - if (extra_args && extra_args[1]) { + if (extra_args) { _cleanup_free_ char *t; t = strv_join((char**) extra_args, " "); diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index 6aebe18fc0..8ddfb584ea 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -1116,9 +1116,9 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_ int bus_message_map_all_properties( sd_bus_message *m, const struct bus_properties_map *map, + sd_bus_error *error, void *userdata) { - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; int r; assert(m); @@ -1156,9 +1156,9 @@ int bus_message_map_all_properties( v = (uint8_t *)userdata + prop->offset; if (map[i].set) - r = prop->set(sd_bus_message_get_bus(m), member, m, &error, v); + r = prop->set(sd_bus_message_get_bus(m), member, m, error, v); else - r = map_basic(sd_bus_message_get_bus(m), member, m, &error, v); + r = map_basic(sd_bus_message_get_bus(m), member, m, error, v); if (r < 0) return r; @@ -1184,6 +1184,7 @@ int bus_message_map_all_properties( int bus_message_map_properties_changed( sd_bus_message *m, const struct bus_properties_map *map, + sd_bus_error *error, void *userdata) { const char *member; @@ -1192,7 +1193,7 @@ int bus_message_map_properties_changed( assert(m); assert(map); - r = bus_message_map_all_properties(m, map, userdata); + r = bus_message_map_all_properties(m, map, error, userdata); if (r < 0) return r; @@ -1222,10 +1223,10 @@ int bus_map_all_properties( const char *destination, const char *path, const struct bus_properties_map *map, + sd_bus_error *error, void *userdata) { _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL; - _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; int r; assert(bus); @@ -1239,13 +1240,13 @@ int bus_map_all_properties( path, "org.freedesktop.DBus.Properties", "GetAll", - &error, + error, &m, "s", ""); if (r < 0) return r; - return bus_message_map_all_properties(m, map, userdata); + return bus_message_map_all_properties(m, map, error, userdata); } int bus_connect_transport(BusTransport transport, const char *host, bool user, sd_bus **ret) { diff --git a/src/shared/bus-util.h b/src/shared/bus-util.h index af5f133912..d9ce4263bb 100644 --- a/src/shared/bus-util.h +++ b/src/shared/bus-util.h @@ -50,9 +50,9 @@ struct bus_properties_map { int bus_map_id128(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata); -int bus_message_map_all_properties(sd_bus_message *m, const struct bus_properties_map *map, void *userdata); -int bus_message_map_properties_changed(sd_bus_message *m, const struct bus_properties_map *map, void *userdata); -int bus_map_all_properties(sd_bus *bus, const char *destination, const char *path, const struct bus_properties_map *map, void *userdata); +int bus_message_map_all_properties(sd_bus_message *m, const struct bus_properties_map *map, sd_bus_error *error, void *userdata); +int bus_message_map_properties_changed(sd_bus_message *m, const struct bus_properties_map *map, sd_bus_error *error, void *userdata); +int bus_map_all_properties(sd_bus *bus, const char *destination, const char *path, const struct bus_properties_map *map, sd_bus_error *error, void *userdata); int bus_async_unregister_and_exit(sd_event *e, sd_bus *bus, const char *name); diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index 410a7764ed..39e724c51a 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -61,12 +61,8 @@ static int probe_filesystem(const char *node, char **ret_fstype) { log_debug("Failed to identify any partition type on partition %s", node); goto not_found; } - if (r != 0) { - if (errno == 0) - return -EIO; - - return -errno; - } + if (r != 0) + return -errno ?: -EIO; (void) blkid_probe_lookup_value(b, "TYPE", &fstype, NULL); @@ -146,12 +142,8 @@ int dissect_image(int fd, const void *root_hash, size_t root_hash_size, DissectI errno = 0; r = blkid_probe_set_device(b, fd, 0, 0); - if (r != 0) { - if (errno == 0) - return -ENOMEM; - - return -errno; - } + if (r != 0) + return -errno ?: -ENOMEM; if ((flags & DISSECT_IMAGE_GPT_ONLY) == 0) { /* Look for file system superblocks, unless we only shall look for GPT partition tables */ @@ -168,12 +160,8 @@ int dissect_image(int fd, const void *root_hash, size_t root_hash_size, DissectI log_debug("Failed to identify any partition table."); return -ENOPKG; } - if (r != 0) { - if (errno == 0) - return -EIO; - - return -errno; - } + if (r != 0) + return -errno ?: -EIO; m = new0(DissectedImage, 1); if (!m) @@ -232,12 +220,8 @@ int dissect_image(int fd, const void *root_hash, size_t root_hash_size, DissectI errno = 0; pl = blkid_probe_get_partitions(b); - if (!pl) { - if (errno == 0) - return -ENOMEM; - - return -errno; - } + if (!pl) + return -errno ?: -ENOMEM; udev = udev_new(); if (!udev) diff --git a/src/shared/dropin.c b/src/shared/dropin.c index 3917eb8f23..15ccd1b6ca 100644 --- a/src/shared/dropin.c +++ b/src/shared/dropin.c @@ -43,11 +43,10 @@ int drop_in_file(const char *dir, const char *unit, unsigned level, const char *name, char **_p, char **_q) { + char prefix[DECIMAL_STR_MAX(unsigned)]; _cleanup_free_ char *b = NULL; char *p, *q; - char prefix[DECIMAL_STR_MAX(unsigned)]; - assert(unit); assert(name); assert(_p); @@ -128,9 +127,10 @@ static int unit_file_find_dir( assert(path); r = chase_symlinks(path, original_root, 0, &chased); + if (r == -ENOENT) /* Ignore -ENOENT, after all most units won't have a drop-in dir */ + return 0; if (r < 0) - return log_full_errno(r == -ENOENT ? LOG_DEBUG : LOG_WARNING, - r, "Failed to canonicalize path %s: %m", path); + return log_full_errno(LOG_WARNING, r, "Failed to canonicalize path %s: %m", path); r = strv_push(dirs, chased); if (r < 0) @@ -148,16 +148,14 @@ static int unit_file_find_dirs( const char *suffix, char ***dirs) { - _cleanup_free_ char *path = NULL; + char *path; int r; assert(unit_path); assert(name); assert(suffix); - path = strjoin(unit_path, "/", name, suffix); - if (!path) - return log_oom(); + path = strjoina(unit_path, "/", name, suffix); if (!unit_path_cache || set_get(unit_path_cache, path)) { r = unit_file_find_dir(original_root, path, dirs); @@ -166,22 +164,15 @@ static int unit_file_find_dirs( } if (unit_name_is_valid(name, UNIT_NAME_INSTANCE)) { - _cleanup_free_ char *template = NULL, *p = NULL; /* Also try the template dir */ + _cleanup_free_ char *template = NULL; + r = unit_name_template(name, &template); if (r < 0) return log_error_errno(r, "Failed to generate template from unit name: %m"); - p = strjoin(unit_path, "/", template, suffix); - if (!p) - return log_oom(); - - if (!unit_path_cache || set_get(unit_path_cache, p)) { - r = unit_file_find_dir(original_root, p, dirs); - if (r < 0) - return r; - } + return unit_file_find_dirs(original_root, unit_path_cache, unit_path, template, suffix, dirs); } return 0; @@ -194,27 +185,30 @@ int unit_file_find_dropin_paths( const char *dir_suffix, const char *file_suffix, Set *names, - char ***paths) { + char ***ret) { _cleanup_strv_free_ char **dirs = NULL, **ans = NULL; Iterator i; char *t, **p; int r; - assert(paths); + assert(ret); SET_FOREACH(t, names, i) STRV_FOREACH(p, lookup_path) unit_file_find_dirs(original_root, unit_path_cache, *p, t, dir_suffix, &dirs); - if (strv_isempty(dirs)) + if (strv_isempty(dirs)) { + *ret = NULL; return 0; + } r = conf_files_list_strv(&ans, file_suffix, NULL, (const char**) dirs); if (r < 0) return log_warning_errno(r, "Failed to sort the list of configuration files: %m"); - *paths = ans; + *ret = ans; ans = NULL; + return 1; } diff --git a/src/shared/firewall-util.c b/src/shared/firewall-util.c index 9c29b0afca..952fc48c45 100644 --- a/src/shared/firewall-util.c +++ b/src/shared/firewall-util.c @@ -76,8 +76,11 @@ static int entry_fill_basics( } if (out_interface) { + size_t l = strlen(out_interface); + assert(l < sizeof entry->ip.outiface && l < sizeof entry->ip.outiface_mask); + strcpy(entry->ip.outiface, out_interface); - memset(entry->ip.outiface_mask, 0xFF, strlen(out_interface)+1); + memset(entry->ip.outiface_mask, 0xFF, l + 1); } if (destination) { entry->ip.dst = destination->in; diff --git a/src/shared/fstab-util.c b/src/shared/fstab-util.c index 87b520b540..c3106f1ae9 100644 --- a/src/shared/fstab-util.c +++ b/src/shared/fstab-util.c @@ -213,7 +213,7 @@ static char *unquote(const char *s, const char* quotes) { * trailing quotes if there is one. Doesn't care about * escaping or anything. * - * DON'T USE THIS FOR NEW CODE ANYMORE!*/ + * DON'T USE THIS FOR NEW CODE ANYMORE! */ l = strlen(s); if (l < 2) diff --git a/src/shared/install.c b/src/shared/install.c index f25ed685f6..58c8e852b2 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -389,6 +389,12 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang verb, changes[i].path); logged = true; break; + + case -ENOENT: + log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.", verb, changes[i].path); + logged = true; + break; + default: assert(changes[i].type < 0); log_error_errno(changes[i].type, "Failed to %s unit, file %s: %m.", @@ -1807,7 +1813,9 @@ static int install_context_mark_for_removal( InstallContext *c, const LookupPaths *paths, Set **remove_symlinks_to, - const char *config_path) { + const char *config_path, + UnitFileChange **changes, + unsigned *n_changes) { UnitFileInstallInfo *i; int r; @@ -1833,19 +1841,26 @@ static int install_context_mark_for_removal( r = install_info_traverse(scope, c, paths, i, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, NULL); if (r == -ENOLINK) { - log_debug_errno(r, "Name %s leads to a dangling symlink, ignoring.", i->name); - continue; - } else if (r == -ENOENT && i->auxiliary) { - /* some unit specified in Also= or similar is missing */ - log_debug_errno(r, "Auxiliary unit %s not found, ignoring.", i->name); - continue; - } else if (r < 0) - return log_debug_errno(r, "Failed to find unit %s: %m", i->name); + log_debug_errno(r, "Name %s leads to a dangling symlink, removing name.", i->name); + unit_file_changes_add(changes, n_changes, UNIT_FILE_IS_DANGLING, i->path ?: i->name, NULL); + } else if (r == -ENOENT) { - if (i->type != UNIT_FILE_TYPE_REGULAR) { - log_debug("Unit %s has type %s, ignoring.", - i->name, - unit_file_type_to_string(i->type) ?: "invalid"); + if (i->auxiliary) /* some unit specified in Also= or similar is missing */ + log_debug_errno(r, "Auxiliary unit of %s not found, removing name.", i->name); + else { + log_debug_errno(r, "Unit %s not found, removing name.", i->name); + unit_file_changes_add(changes, n_changes, r, i->path ?: i->name, NULL); + } + + } else if (r < 0) { + log_debug_errno(r, "Failed to find unit %s, removing name: %m", i->name); + unit_file_changes_add(changes, n_changes, r, i->path ?: i->name, NULL); + } else if (i->type == UNIT_FILE_TYPE_MASKED) { + log_debug("Unit file %s is masked, ignoring.", i->name); + unit_file_changes_add(changes, n_changes, UNIT_FILE_IS_MASKED, i->path ?: i->name, NULL); + continue; + } else if (i->type != UNIT_FILE_TYPE_REGULAR) { + log_debug("Unit %s has type %s, ignoring.", i->name, unit_file_type_to_string(i->type) ?: "invalid"); continue; } @@ -1878,6 +1893,8 @@ int unit_file_mask( return r; config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; + if (!config_path) + return -ENXIO; STRV_FOREACH(i, files) { _cleanup_free_ char *path = NULL; @@ -1926,6 +1943,9 @@ int unit_file_unmask( return r; config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; + if (!config_path) + return -ENXIO; + dry_run = !!(flags & UNIT_FILE_DRY_RUN); STRV_FOREACH(i, files) { @@ -2015,6 +2035,8 @@ int unit_file_link( return r; config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; + if (!config_path) + return -ENXIO; STRV_FOREACH(i, files) { _cleanup_free_ char *full = NULL; @@ -2282,6 +2304,8 @@ int unit_file_add_dependency( return r; config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; + if (!config_path) + return -ENXIO; r = install_info_discover(scope, &c, &paths, target, SEARCH_FOLLOW_CONFIG_SYMLINKS, &target_info, changes, n_changes); @@ -2347,6 +2371,8 @@ int unit_file_enable( return r; config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; + if (!config_path) + return -ENXIO; STRV_FOREACH(f, files) { r = install_info_discover(scope, &c, &paths, *f, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS, @@ -2391,6 +2417,8 @@ int unit_file_disable( return r; config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; + if (!config_path) + return -ENXIO; STRV_FOREACH(i, files) { if (!unit_name_is_valid(*i, UNIT_NAME_ANY)) @@ -2401,7 +2429,7 @@ int unit_file_disable( return r; } - r = install_context_mark_for_removal(scope, &c, &paths, &remove_symlinks_to, config_path); + r = install_context_mark_for_removal(scope, &c, &paths, &remove_symlinks_to, config_path, changes, n_changes); if (r < 0) return r; @@ -2790,7 +2818,7 @@ static int execute_preset( if (mode != UNIT_FILE_PRESET_ENABLE_ONLY) { _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; - r = install_context_mark_for_removal(scope, minus, paths, &remove_symlinks_to, config_path); + r = install_context_mark_for_removal(scope, minus, paths, &remove_symlinks_to, config_path, changes, n_changes); if (r < 0) return r; @@ -2885,6 +2913,8 @@ int unit_file_preset( return r; config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; + if (!config_path) + return -ENXIO; r = read_presets(scope, root_dir, &presets); if (r < 0) @@ -2923,6 +2953,8 @@ int unit_file_preset_all( return r; config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config; + if (!config_path) + return -ENXIO; r = read_presets(scope, root_dir, &presets); if (r < 0) diff --git a/src/shared/journal-util.c b/src/shared/journal-util.c new file mode 100644 index 0000000000..8479221a44 --- /dev/null +++ b/src/shared/journal-util.c @@ -0,0 +1,151 @@ +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + Copyright 2015 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include "acl-util.h" +#include "fs-util.h" +#include "hashmap.h" +#include "journal-internal.h" +#include "journal-util.h" +#include "log.h" +#include "strv.h" +#include "user-util.h" + +static int access_check_var_log_journal(sd_journal *j) { +#ifdef HAVE_ACL + _cleanup_strv_free_ char **g = NULL; + const char* dir; +#endif + int r; + + assert(j); + + /* If we are root, we should have access, don't warn. */ + if (getuid() == 0) + return 0; + + /* If we are in the 'systemd-journal' group, we should have + * access too. */ + r = in_group("systemd-journal"); + if (r < 0) + return log_error_errno(r, "Failed to check if we are in the 'systemd-journal' group: %m"); + if (r > 0) + return 0; + +#ifdef HAVE_ACL + if (laccess("/run/log/journal", F_OK) >= 0) + dir = "/run/log/journal"; + else + dir = "/var/log/journal"; + + /* If we are in any of the groups listed in the journal ACLs, + * then all is good, too. Let's enumerate all groups from the + * default ACL of the directory, which generally should allow + * access to most journal files too. */ + r = acl_search_groups(dir, &g); + if (r < 0) + return log_error_errno(r, "Failed to search journal ACL: %m"); + if (r > 0) + return 0; + + /* Print a pretty list, if there were ACLs set. */ + if (!strv_isempty(g)) { + _cleanup_free_ char *s = NULL; + + /* Thre are groups in the ACL, let's list them */ + r = strv_extend(&g, "systemd-journal"); + if (r < 0) + return log_oom(); + + strv_sort(g); + strv_uniq(g); + + s = strv_join(g, "', '"); + if (!s) + return log_oom(); + + log_notice("Hint: You are currently not seeing messages from other users and the system.\n" + " Users in groups '%s' can see all messages.\n" + " Pass -q to turn off this notice.", s); + return 1; + } +#endif + + /* If no ACLs were found, print a short version of the message. */ + log_notice("Hint: You are currently not seeing messages from other users and the system.\n" + " Users in the 'systemd-journal' group can see all messages. Pass -q to\n" + " turn off this notice."); + + return 1; +} + +int journal_access_check_and_warn(sd_journal *j, bool quiet) { + Iterator it; + void *code; + char *path; + int r = 0; + + assert(j); + + if (hashmap_isempty(j->errors)) { + if (ordered_hashmap_isempty(j->files) && !quiet) + log_notice("No journal files were found."); + + return 0; + } + + if (hashmap_contains(j->errors, INT_TO_PTR(-EACCES))) { + if (!quiet) + (void) access_check_var_log_journal(j); + + if (ordered_hashmap_isempty(j->files)) + r = log_error_errno(EACCES, "No journal files were opened due to insufficient permissions."); + } + + HASHMAP_FOREACH_KEY(path, code, j->errors, it) { + int err; + + err = abs(PTR_TO_INT(code)); + + switch (err) { + case EACCES: + continue; + + case ENODATA: + log_warning_errno(err, "Journal file %s is truncated, ignoring file.", path); + break; + + case EPROTONOSUPPORT: + log_warning_errno(err, "Journal file %1$s uses an unsupported feature, ignoring file.\n" + "Use SYSTEMD_LOG_LEVEL=debug journalctl --file=%1$s to see the details.", + path); + break; + + case EBADMSG: + log_warning_errno(err, "Journal file %s corrupted, ignoring file.", path); + break; + + default: + log_warning_errno(err, "An error was encountered while opening journal file or directory %s, ignoring file: %m", path); + break; + } + } + + return r; +} diff --git a/src/shared/journal-util.h b/src/shared/journal-util.h new file mode 100644 index 0000000000..499e6c62ec --- /dev/null +++ b/src/shared/journal-util.h @@ -0,0 +1,25 @@ +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + Copyright 2015 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <stdbool.h> + +#include "sd-journal.h" + +int journal_access_check_and_warn(sd_journal *j, bool quiet); diff --git a/src/shared/machine-image.c b/src/shared/machine-image.c index 7bc5c0a128..32a4c67590 100644 --- a/src/shared/machine-image.c +++ b/src/shared/machine-image.c @@ -594,7 +594,7 @@ static int clone_auxiliary_file(const char *path, const char *new_name, const ch if (!rs) return -ENOMEM; - return copy_file_atomic(path, rs, 0664, false, 0); + return copy_file_atomic(path, rs, 0664, 0, COPY_REFLINK); } int image_clone(Image *i, const char *new_name, bool read_only) { @@ -636,7 +636,7 @@ int image_clone(Image *i, const char *new_name, bool read_only) { case IMAGE_SUBVOLUME: case IMAGE_DIRECTORY: /* If we can we'll always try to create a new btrfs subvolume here, even if the source is a plain - * directory.*/ + * directory. */ new_path = strjoina("/var/lib/machines/", new_name); @@ -656,7 +656,7 @@ int image_clone(Image *i, const char *new_name, bool read_only) { case IMAGE_RAW: new_path = strjoina("/var/lib/machines/", new_name, ".raw"); - r = copy_file_atomic(i->path, new_path, read_only ? 0444 : 0644, false, FS_NOCOW_FL); + r = copy_file_atomic(i->path, new_path, read_only ? 0444 : 0644, FS_NOCOW_FL, COPY_REFLINK); break; default: @@ -712,7 +712,7 @@ int image_read_only(Image *i, bool b) { use the "immutable" flag, to at least make the top-level directory read-only. It's not as good as a read-only subvolume, but at least something, and - we can read the value back.*/ + we can read the value back. */ r = chattr_path(i->path, b ? FS_IMMUTABLE_FL : 0, FS_IMMUTABLE_FL); if (r < 0) diff --git a/src/shared/pager.c b/src/shared/pager.c index 09672a4abf..f00ba9e1e7 100644 --- a/src/shared/pager.c +++ b/src/shared/pager.c @@ -44,7 +44,7 @@ static pid_t pager_pid = 0; noreturn static void pager_fallback(void) { int r; - r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (uint64_t) -1, false); + r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (uint64_t) -1, 0); if (r < 0) { log_error_errno(r, "Internal pager failed: %m"); _exit(EXIT_FAILURE); @@ -104,7 +104,8 @@ int pager_open(bool no_pager, bool jump_to_end) { less_opts = "FRSXMK"; if (jump_to_end) less_opts = strjoina(less_opts, " +G"); - setenv("LESS", less_opts, 1); + if (setenv("LESS", less_opts, 1) < 0) + _exit(EXIT_FAILURE); /* Initialize a good charset for less. This is * particularly important if we output UTF-8 @@ -112,8 +113,9 @@ int pager_open(bool no_pager, bool jump_to_end) { less_charset = getenv("SYSTEMD_LESSCHARSET"); if (!less_charset && is_locale_utf8()) less_charset = "utf-8"; - if (less_charset) - setenv("LESSCHARSET", less_charset, 1); + if (less_charset && + setenv("LESSCHARSET", less_charset, 1) < 0) + _exit(EXIT_FAILURE); /* Make sure the pager goes away when the parent dies */ if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0) diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c index 586ef64e72..e2b3f8b742 100644 --- a/src/shared/path-lookup.c +++ b/src/shared/path-lookup.c @@ -33,6 +33,7 @@ #include "stat-util.h" #include "string-util.h" #include "strv.h" +#include "user-util.h" #include "util.h" static int user_runtime_dir(char **ret, const char *suffix) { @@ -57,6 +58,7 @@ static int user_runtime_dir(char **ret, const char *suffix) { static int user_config_dir(char **ret, const char *suffix) { const char *e; char *j; + int r; assert(ret); @@ -64,11 +66,11 @@ static int user_config_dir(char **ret, const char *suffix) { if (e) j = strappend(e, suffix); else { - const char *home; + _cleanup_free_ char *home = NULL; - home = getenv("HOME"); - if (!home) - return -ENXIO; + r = get_home_dir(&home); + if (r < 0) + return r; j = strjoin(home, "/.config", suffix); } @@ -83,6 +85,7 @@ static int user_config_dir(char **ret, const char *suffix) { static int user_data_dir(char **ret, const char *suffix) { const char *e; char *j; + int r; assert(ret); assert(suffix); @@ -95,12 +98,11 @@ static int user_data_dir(char **ret, const char *suffix) { if (e) j = strappend(e, suffix); else { - const char *home; - - home = getenv("HOME"); - if (!home) - return -ENXIO; + _cleanup_free_ char *home = NULL; + r = get_home_dir(&home); + if (r < 0) + return r; j = strjoin(home, "/.local/share", suffix); } @@ -136,10 +138,10 @@ static char** user_dirs( NULL }; - const char *e; _cleanup_strv_free_ char **config_dirs = NULL, **data_dirs = NULL; _cleanup_free_ char *data_home = NULL; _cleanup_strv_free_ char **res = NULL; + const char *e; char **tmp; int r; @@ -186,9 +188,8 @@ static char** user_dirs( if (strv_extend(&res, generator_early) < 0) return NULL; - if (!strv_isempty(config_dirs)) - if (strv_extend_strv_concat(&res, config_dirs, "/systemd/user") < 0) - return NULL; + if (strv_extend_strv_concat(&res, config_dirs, "/systemd/user") < 0) + return NULL; if (strv_extend(&res, persistent_config) < 0) return NULL; @@ -205,9 +206,8 @@ static char** user_dirs( if (strv_extend(&res, data_home) < 0) return NULL; - if (!strv_isempty(data_dirs)) - if (strv_extend_strv_concat(&res, data_dirs, "/systemd/user") < 0) - return NULL; + if (strv_extend_strv_concat(&res, data_dirs, "/systemd/user") < 0) + return NULL; if (strv_extend_strv(&res, (char**) data_unit_paths, false) < 0) return NULL; @@ -220,6 +220,7 @@ static char** user_dirs( tmp = res; res = NULL; + return tmp; } @@ -328,12 +329,18 @@ static int acquire_config_dirs(UnitFileScope scope, char **persistent, char **ru case UNIT_FILE_USER: r = user_config_dir(&a, "/systemd/user"); - if (r < 0) + if (r < 0 && r != -ENXIO) return r; r = user_runtime_dir(runtime, "/systemd/user"); - if (r < 0) - return r; + if (r < 0) { + if (r != -ENXIO) + return r; + + /* If XDG_RUNTIME_DIR is not set, don't consider that fatal, simply initialize the runtime + * directory to NULL */ + *runtime = NULL; + } *persistent = a; a = NULL; @@ -382,12 +389,18 @@ static int acquire_control_dirs(UnitFileScope scope, char **persistent, char **r case UNIT_FILE_USER: r = user_config_dir(&a, "/systemd/system.control"); - if (r < 0) + if (r < 0 && r != -ENXIO) return r; r = user_runtime_dir(runtime, "/systemd/system.control"); - if (r < 0) - return r; + if (r < 0) { + if (r != -ENXIO) + return r; + + /* If XDG_RUNTIME_DIR is not set, don't consider this fatal, simply initialize the directory to + * NULL */ + *runtime = NULL; + } break; @@ -474,22 +487,26 @@ int lookup_paths_init( return -ENOMEM; } + /* Note: when XDG_RUNTIME_DIR is not set this will not return -ENXIO, but simply set runtime_config to NULL */ r = acquire_config_dirs(scope, &persistent_config, &runtime_config); - if (r < 0 && r != -ENXIO) + if (r < 0) return r; if ((flags & LOOKUP_PATHS_EXCLUDE_GENERATED) == 0) { + /* Note: if XDG_RUNTIME_DIR is not set, this will fail completely with ENXIO */ r = acquire_generator_dirs(scope, &generator, &generator_early, &generator_late); if (r < 0 && r != -EOPNOTSUPP && r != -ENXIO) return r; } + /* Note: if XDG_RUNTIME_DIR is not set, this will fail completely with ENXIO */ r = acquire_transient_dir(scope, &transient); if (r < 0 && r != -EOPNOTSUPP && r != -ENXIO) return r; + /* Note: when XDG_RUNTIME_DIR is not set this will not return -ENXIO, but simply set runtime_control to NULL */ r = acquire_control_dirs(scope, &persistent_control, &runtime_control); - if (r < 0 && r != -EOPNOTSUPP && r != -ENXIO) + if (r < 0 && r != -EOPNOTSUPP) return r; /* First priority is whatever has been passed to us via env vars */ @@ -503,8 +520,7 @@ int lookup_paths_init( append = true; } - /* FIXME: empty components in other places should be - * rejected. */ + /* FIXME: empty components in other places should be rejected. */ r = path_split_and_make_absolute(e, &paths); if (r < 0) diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c index e35f18471c..2631856563 100644 --- a/src/shared/seccomp-util.c +++ b/src/shared/seccomp-util.c @@ -36,31 +36,72 @@ const uint32_t seccomp_local_archs[] = { -#if defined(__i386__) || defined(__x86_64__) + /* Note: always list the native arch we are compiled as last, so that users can blacklist seccomp(), but our own calls to it still succeed */ + +#if defined(__x86_64__) && defined(__ILP32__) SCMP_ARCH_X86, SCMP_ARCH_X86_64, + SCMP_ARCH_X32, /* native */ +#elif defined(__x86_64__) && !defined(__ILP32__) + SCMP_ARCH_X86, SCMP_ARCH_X32, - -#elif defined(__arm__) || defined(__aarch64__) + SCMP_ARCH_X86_64, /* native */ +#elif defined(__i386__) + SCMP_ARCH_X86, +#elif defined(__aarch64__) SCMP_ARCH_ARM, - SCMP_ARCH_AARCH64, - -#elif defined(__mips__) || defined(__mips64__) + SCMP_ARCH_AARCH64, /* native */ +#elif defined(__arm__) + SCMP_ARCH_ARM, +#elif defined(__mips__) && __BYTE_ORDER == __BIG_ENDIAN && _MIPS_SIM == _MIPS_SIM_ABI32 + SCMP_ARCH_MIPSEL, + SCMP_ARCH_MIPS, /* native */ +#elif defined(__mips__) && __BYTE_ORDER == __LITTLE_ENDIAN && _MIPS_SIM == _MIPS_SIM_ABI32 SCMP_ARCH_MIPS, - SCMP_ARCH_MIPS64, + SCMP_ARCH_MIPSEL, /* native */ +#elif defined(__mips__) && __BYTE_ORDER == __BIG_ENDIAN && _MIPS_SIM == _MIPS_SIM_ABI64 + SCMP_ARCH_MIPSEL, + SCMP_ARCH_MIPS, + SCMP_ARCH_MIPSEL64N32, + SCMP_ARCH_MIPS64N32, + SCMP_ARCH_MIPSEL64, + SCMP_ARCH_MIPS64, /* native */ +#elif defined(__mips__) && __BYTE_ORDER == __LITTLE_ENDIAN && _MIPS_SIM == _MIPS_SIM_ABI64 + SCMP_ARCH_MIPS, + SCMP_ARCH_MIPSEL, SCMP_ARCH_MIPS64N32, + SCMP_ARCH_MIPSEL64N32, + SCMP_ARCH_MIPS64, + SCMP_ARCH_MIPSEL64, /* native */ +#elif defined(__mips__) && __BYTE_ORDER == __BIG_ENDIAN && _MIPS_SIM == _MIPS_SIM_NABI32 SCMP_ARCH_MIPSEL, + SCMP_ARCH_MIPS, SCMP_ARCH_MIPSEL64, + SCMP_ARCH_MIPS64, SCMP_ARCH_MIPSEL64N32, - -#elif defined(__powerpc__) || defined(__powerpc64__) + SCMP_ARCH_MIPS64N32, /* native */ +#elif defined(__mips__) && __BYTE_ORDER == __LITTLE_ENDIAN && _MIPS_SIM == _MIPS_SIM_NABI32 + SCMP_ARCH_MIPS, + SCMP_ARCH_MIPSEL, + SCMP_ARCH_MIPS64, + SCMP_ARCH_MIPSEL64, + SCMP_ARCH_MIPS64N32, + SCMP_ARCH_MIPSEL64N32, /* native */ +#elif defined(__powerpc64__) && __BYTE_ORDER == __BIG_ENDIAN SCMP_ARCH_PPC, - SCMP_ARCH_PPC64, SCMP_ARCH_PPC64LE, - -#elif defined(__s390__) || defined(__s390x__) + SCMP_ARCH_PPC64, /* native */ +#elif defined(__powerpc64__) && __BYTE_ORDER == __LITTLE_ENDIAN + SCMP_ARCH_PPC, + SCMP_ARCH_PPC64, + SCMP_ARCH_PPC64LE, /* native */ +#elif defined(__powerpc__) + SCMP_ARCH_PPC, +#elif defined(__s390x__) + SCMP_ARCH_S390, + SCMP_ARCH_S390X, /* native */ +#elif defined(__s390__) SCMP_ARCH_S390, - SCMP_ARCH_S390X, #endif (uint32_t) -1 }; @@ -344,6 +385,7 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = { "mknodat\0" "mmap2\0" "mmap\0" + "munmap\0" "newfstatat\0" "open\0" "openat\0" @@ -760,6 +802,8 @@ int seccomp_restrict_namespaces(unsigned long retain) { case SCMP_ARCH_X86_64: case SCMP_ARCH_X86: case SCMP_ARCH_X32: + case SCMP_ARCH_PPC64: + case SCMP_ARCH_PPC64LE: clone_reversed_order = 0; break; @@ -771,8 +815,8 @@ int seccomp_restrict_namespaces(unsigned long retain) { /* Please add more definitions here, if you port systemd to other architectures! */ -#if !defined(__i386__) && !defined(__x86_64__) && !defined(__s390__) && !defined(__s390x__) -#warning "Consider adding the right clone() syscall definitions here!" +#if SECCOMP_RESTRICT_NAMESPACES_BROKEN +# warning "Consider adding the right clone() syscall definitions here!" #endif } @@ -906,17 +950,42 @@ int seccomp_protect_sysctl(void) { } int seccomp_restrict_address_families(Set *address_families, bool whitelist) { - -#if !SECCOMP_RESTRICT_ADDRESS_FAMILIES_BROKEN uint32_t arch; int r; SECCOMP_FOREACH_LOCAL_ARCH(arch) { _cleanup_(seccomp_releasep) scmp_filter_ctx seccomp = NULL; + bool supported; Iterator i; log_debug("Operating on architecture: %s", seccomp_arch_to_string(arch)); + switch (arch) { + + case SCMP_ARCH_X86_64: + case SCMP_ARCH_X32: + case SCMP_ARCH_ARM: + case SCMP_ARCH_AARCH64: + /* These we know we support (i.e. are the ones that do not use socketcall()) */ + supported = true; + break; + + case SCMP_ARCH_X86: + case SCMP_ARCH_S390: + case SCMP_ARCH_S390X: + case SCMP_ARCH_PPC: + case SCMP_ARCH_PPC64: + case SCMP_ARCH_PPC64LE: + default: + /* These we either know we don't support (i.e. are the ones that do use socketcall()), or we + * don't know */ + supported = false; + break; + } + + if (!supported) + continue; + r = seccomp_init_for_arch(&seccomp, arch, SCMP_ACT_ALLOW); if (r < 0) return r; @@ -1036,7 +1105,6 @@ int seccomp_restrict_address_families(Set *address_families, bool whitelist) { if (r < 0) log_debug_errno(r, "Failed to install socket family rules for architecture %s, skipping: %m", seccomp_arch_to_string(arch)); } -#endif return 0; } diff --git a/src/shared/seccomp-util.h b/src/shared/seccomp-util.h index 61f94de638..b56ac3f763 100644 --- a/src/shared/seccomp-util.h +++ b/src/shared/seccomp-util.h @@ -92,7 +92,7 @@ int seccomp_memory_deny_write_execute(void); #endif /* we don't know the right order of the clone() parameters except for these archs, for now */ -#if defined(__x86_64__) || defined(__i386__) || defined(__s390x__) || defined(__s390__) +#if defined(__x86_64__) || defined(__i386__) || defined(__s390x__) || defined(__s390__) || defined(__powerpc64__) #define SECCOMP_RESTRICT_NAMESPACES_BROKEN 0 #else #define SECCOMP_RESTRICT_NAMESPACES_BROKEN 1 diff --git a/src/shared/tests.c b/src/shared/tests.c index 409116290d..f300bbc66f 100644 --- a/src/shared/tests.c +++ b/src/shared/tests.c @@ -17,10 +17,14 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <alloc-util.h> +#include <fs-util.h> +#include <libgen.h> #include <stdlib.h> #include <util.h> #include "tests.h" +#include "path-util.h" char* setup_fake_runtime_dir(void) { char t[] = "/tmp/fake-xdg-runtime-XXXXXX", *p; @@ -31,3 +35,39 @@ char* setup_fake_runtime_dir(void) { return p; } + +const char* get_testdata_dir(const char *suffix) { + const char *env; + /* convenience: caller does not need to free result */ + static char testdir[PATH_MAX]; + + /* if the env var is set, use that */ + env = getenv("SYSTEMD_TEST_DATA"); + testdir[sizeof(testdir) - 1] = '\0'; + if (env) { + if (access(env, F_OK) < 0) { + fputs("ERROR: $SYSTEMD_TEST_DATA directory does not exist\n", stderr); + exit(1); + } + strncpy(testdir, env, sizeof(testdir) - 1); + } else { + _cleanup_free_ char *exedir = NULL; + assert_se(readlink_and_make_absolute("/proc/self/exe", &exedir) >= 0); + + /* Check if we're running from the builddir. If so, use the compiled in path. */ + if (path_startswith(exedir, ABS_BUILD_DIR)) + assert_se(snprintf(testdir, sizeof(testdir), "%s/test", ABS_SRC_DIR) > 0); + else + /* Try relative path, according to the install-test layout */ + assert_se(snprintf(testdir, sizeof(testdir), "%s/testdata", dirname(exedir)) > 0); + + /* test this without the suffix, as it may contain a glob */ + if (access(testdir, F_OK) < 0) { + fputs("ERROR: Cannot find testdata directory, set $SYSTEMD_TEST_DATA\n", stderr); + exit(1); + } + } + + strncpy(testdir + strlen(testdir), suffix, sizeof(testdir) - strlen(testdir) - 1); + return testdir; +} diff --git a/src/shared/tests.h b/src/shared/tests.h index 93f09013a1..7055124990 100644 --- a/src/shared/tests.h +++ b/src/shared/tests.h @@ -20,3 +20,4 @@ ***/ char* setup_fake_runtime_dir(void); +const char* get_testdata_dir(const char *suffix); diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c index c8f0742183..3bac78b3e4 100644 --- a/src/sleep/sleep.c +++ b/src/sleep/sleep.c @@ -25,6 +25,7 @@ #include "sd-messages.h" #include "def.h" +#include "exec-util.h" #include "fd-util.h" #include "fileio.h" #include "log.h" @@ -106,10 +107,10 @@ static int execute(char **modes, char **states) { if (r < 0) return r; - execute_directories(dirs, DEFAULT_TIMEOUT_USEC, arguments); + execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, arguments); log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_SLEEP_START), + "MESSAGE_ID=" SD_MESSAGE_SLEEP_START_STR, LOG_MESSAGE("Suspending system..."), "SLEEP=%s", arg_verb, NULL); @@ -119,13 +120,13 @@ static int execute(char **modes, char **states) { return r; log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_SLEEP_STOP), + "MESSAGE_ID=" SD_MESSAGE_SLEEP_STOP_STR, LOG_MESSAGE("System resumed."), "SLEEP=%s", arg_verb, NULL); arguments[1] = (char*) "post"; - execute_directories(dirs, DEFAULT_TIMEOUT_USEC, arguments); + execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, arguments); return r; } diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 2809dece50..d78e56d777 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1922,7 +1922,7 @@ static int get_machine_properties(sd_bus *bus, struct machine_info *mi) { bus = container; } - r = bus_map_all_properties(bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", machine_info_property_map, mi); + r = bus_map_all_properties(bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", machine_info_property_map, NULL, mi); if (r < 0) return r; @@ -1957,7 +1957,7 @@ static int get_machine_list( machine_infos[c].name = hn; hn = NULL; - get_machine_properties(bus, &machine_infos[c]); + (void) get_machine_properties(bus, &machine_infos[c]); c++; } @@ -1987,7 +1987,7 @@ static int get_machine_list( return log_oom(); } - get_machine_properties(NULL, &machine_infos[c]); + (void) get_machine_properties(NULL, &machine_infos[c]); c++; } @@ -3482,6 +3482,8 @@ static int set_exit_code(uint8_t code) { static int start_special(int argc, char *argv[], void *userdata) { enum action a; int r; + bool termination_action; /* an action that terminates the manager, + * can be performed also by signal. */ assert(argv); @@ -3521,40 +3523,43 @@ static int start_special(int argc, char *argv[], void *userdata) { return r; } - if (arg_force >= 2 && - IN_SET(a, - ACTION_HALT, - ACTION_POWEROFF, - ACTION_REBOOT)) + termination_action = IN_SET(a, + ACTION_HALT, + ACTION_POWEROFF, + ACTION_REBOOT); + if (termination_action && arg_force >= 2) return halt_now(a); if (arg_force >= 1 && - IN_SET(a, - ACTION_HALT, - ACTION_POWEROFF, - ACTION_REBOOT, - ACTION_KEXEC, - ACTION_EXIT)) - return trivial_method(argc, argv, userdata); + (termination_action || IN_SET(a, ACTION_KEXEC, ACTION_EXIT))) + r = trivial_method(argc, argv, userdata); + else { + /* First try logind, to allow authentication with polkit */ + if (IN_SET(a, + ACTION_POWEROFF, + ACTION_REBOOT, + ACTION_SUSPEND, + ACTION_HIBERNATE, + ACTION_HYBRID_SLEEP)) { + + r = logind_reboot(a); + if (r >= 0) + return r; + if (IN_SET(r, -EOPNOTSUPP, -EINPROGRESS)) + /* requested operation is not supported or already in progress */ + return r; - /* First try logind, to allow authentication with polkit */ - if (IN_SET(a, - ACTION_POWEROFF, - ACTION_REBOOT, - ACTION_SUSPEND, - ACTION_HIBERNATE, - ACTION_HYBRID_SLEEP)) { - r = logind_reboot(a); - if (r >= 0) - return r; - if (IN_SET(r, -EOPNOTSUPP, -EINPROGRESS)) - /* requested operation is not supported or already in progress */ - return r; + /* On all other errors, try low-level operation */ + } - /* On all other errors, try low-level operation */ + r = start_unit(argc, argv, userdata); } - return start_unit(argc, argv, userdata); + if (termination_action && arg_force < 2 && + IN_SET(r, -ENOENT, -ETIMEDOUT)) + log_notice("It is possible to perform action directly, see discussion of --force --force in man:systemctl(1)."); + + return r; } static int start_system_special(int argc, char *argv[], void *userdata) { @@ -4953,7 +4958,7 @@ static int show_one( return log_error_errno(r, "Failed to get properties: %s", bus_error_message(&error, r)); if (unit) { - r = bus_message_map_all_properties(reply, property_map, &info); + r = bus_message_map_all_properties(reply, property_map, &error, &info); if (r < 0) return log_error_errno(r, "Failed to map properties: %s", bus_error_message(&error, r)); @@ -5125,8 +5130,9 @@ static int show_all( static int show_system_status(sd_bus *bus) { char since1[FORMAT_TIMESTAMP_RELATIVE_MAX], since2[FORMAT_TIMESTAMP_MAX]; - _cleanup_free_ char *hn = NULL; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(machine_info_clear) struct machine_info mi = {}; + _cleanup_free_ char *hn = NULL; const char *on, *off; int r; @@ -5134,9 +5140,9 @@ static int show_system_status(sd_bus *bus) { if (!hn) return log_oom(); - r = bus_map_all_properties(bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", machine_info_property_map, &mi); + r = bus_map_all_properties(bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", machine_info_property_map, &error, &mi); if (r < 0) - return log_error_errno(r, "Failed to read server status: %m"); + return log_error_errno(r, "Failed to read server status: %s", bus_error_message(&error, r)); if (streq_ptr(mi.state, "degraded")) { on = ansi_highlight_red(); @@ -5299,7 +5305,7 @@ static int cat_file(const char *filename, bool newline) { ansi_normal()); fflush(stdout); - return copy_bytes(fd, STDOUT_FILENO, (uint64_t) -1, false); + return copy_bytes(fd, STDOUT_FILENO, (uint64_t) -1, 0); } static int cat(int argc, char *argv[], void *userdata) { @@ -5958,6 +5964,7 @@ static int mangle_names(char **original_names, char ***mangled_names) { } else { r = unit_name_mangle(*name, UNIT_NAME_NOGLOB, i); if (r < 0) { + *i = NULL; strv_free(l); return log_error_errno(r, "Failed to mangle unit name: %m"); } @@ -6028,7 +6035,7 @@ static int unit_exists(const char *unit) { if (r < 0) return log_error_errno(r, "Failed to get properties: %s", bus_error_message(&error, r)); - r = bus_message_map_all_properties(reply, property_map, &info); + r = bus_message_map_all_properties(reply, property_map, &error, &info); if (r < 0) return log_error_errno(r, "Failed to map properties: %s", bus_error_message(&error, r)); @@ -6581,7 +6588,7 @@ static int create_edit_temp_file(const char *new_path, const char *original_path if (r < 0) return log_error_errno(r, "Failed to create directories for \"%s\": %m", new_path); - r = copy_file(original_path, t, 0, 0644, 0); + r = copy_file(original_path, t, 0, 0644, 0, COPY_REFLINK); if (r == -ENOENT) { r = touch(t); @@ -6805,29 +6812,54 @@ static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) { return r; STRV_FOREACH(name, names) { - _cleanup_free_ char *path = NULL, *new_path = NULL, *tmp_path = NULL; + _cleanup_free_ char *path = NULL, *new_path = NULL, *tmp_path = NULL, *tmp_name = NULL; + const char *unit_name; r = unit_find_paths(bus, *name, &lp, &path, NULL); if (r < 0) return r; - else if (!arg_force) { - if (r == 0) { - log_error("Run 'systemctl edit --force %s' to create a new unit.", *name); - return -ENOENT; - } else if (!path) { - // FIXME: support units with path==NULL (no FragmentPath) - log_error("No fragment exists for %s.", *name); + + if (r == 0) { + assert(!path); + + if (!arg_force) { + log_error("Run 'systemctl edit%s --force %s' to create a new unit.", + arg_scope == UNIT_FILE_GLOBAL ? " --global" : + arg_scope == UNIT_FILE_USER ? " --user" : "", + *name); return -ENOENT; } - } - if (path) { + /* Create a new unit from scratch */ + unit_name = *name; + r = unit_file_create_new(&lp, unit_name, + arg_full ? NULL : ".d/override.conf", + &new_path, &tmp_path); + } else { + assert(path); + + unit_name = basename(path); + /* We follow unit aliases, but we need to propagate the instance */ + if (unit_name_is_valid(*name, UNIT_NAME_INSTANCE) && + unit_name_is_valid(unit_name, UNIT_NAME_TEMPLATE)) { + _cleanup_free_ char *instance = NULL; + + r = unit_name_to_instance(*name, &instance); + if (r < 0) + return r; + + r = unit_name_replace_instance(unit_name, instance, &tmp_name); + if (r < 0) + return r; + + unit_name = tmp_name; + } + if (arg_full) - r = unit_file_create_copy(&lp, basename(path), path, &new_path, &tmp_path); + r = unit_file_create_copy(&lp, unit_name, path, &new_path, &tmp_path); else - r = unit_file_create_new(&lp, basename(path), ".d/override.conf", &new_path, &tmp_path); - } else - r = unit_file_create_new(&lp, *name, NULL, &new_path, &tmp_path); + r = unit_file_create_new(&lp, unit_name, ".d/override.conf", &new_path, &tmp_path); + } if (r < 0) return r; @@ -7299,7 +7331,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { case 't': { if (isempty(optarg)) { - log_error("--type requires arguments."); + log_error("--type= requires arguments."); return -EINVAL; } @@ -7539,7 +7571,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { case ARG_STATE: { if (isempty(optarg)) { - log_error("--signal requires arguments."); + log_error("--state= requires arguments."); return -EINVAL; } @@ -7548,7 +7580,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { r = extract_first_word(&p, &s, ",", 0); if (r < 0) - return log_error_errno(r, "Failed to parse signal: %s", optarg); + return log_error_errno(r, "Failed to parse state: %s", optarg); if (r == 0) break; diff --git a/src/systemd/sd-bus-vtable.h b/src/systemd/sd-bus-vtable.h index e8f84eb545..3563a2b126 100644 --- a/src/systemd/sd-bus-vtable.h +++ b/src/systemd/sd-bus-vtable.h @@ -86,18 +86,26 @@ struct sd_bus_vtable { { \ .type = _SD_BUS_VTABLE_START, \ .flags = _flags, \ - .x.start.element_size = sizeof(sd_bus_vtable), \ + .x = { \ + .start = { \ + .element_size = sizeof(sd_bus_vtable) \ + }, \ + }, \ } #define SD_BUS_METHOD_WITH_OFFSET(_member, _signature, _result, _handler, _offset, _flags) \ { \ .type = _SD_BUS_VTABLE_METHOD, \ .flags = _flags, \ - .x.method.member = _member, \ - .x.method.signature = _signature, \ - .x.method.result = _result, \ - .x.method.handler = _handler, \ - .x.method.offset = _offset, \ + .x = { \ + .method = { \ + .member = _member, \ + .signature = _signature, \ + .result = _result, \ + .handler = _handler, \ + .offset = _offset, \ + }, \ + }, \ } #define SD_BUS_METHOD(_member, _signature, _result, _handler, _flags) \ SD_BUS_METHOD_WITH_OFFSET(_member, _signature, _result, _handler, 0, _flags) @@ -106,29 +114,41 @@ struct sd_bus_vtable { { \ .type = _SD_BUS_VTABLE_SIGNAL, \ .flags = _flags, \ - .x.signal.member = _member, \ - .x.signal.signature = _signature, \ + .x = { \ + .signal = { \ + .member = _member, \ + .signature = _signature, \ + }, \ + }, \ } #define SD_BUS_PROPERTY(_member, _signature, _get, _offset, _flags) \ { \ .type = _SD_BUS_VTABLE_PROPERTY, \ .flags = _flags, \ - .x.property.member = _member, \ - .x.property.signature = _signature, \ - .x.property.get = _get, \ - .x.property.offset = _offset, \ + .x = { \ + .property = { \ + .member = _member, \ + .signature = _signature, \ + .get = _get, \ + .offset = _offset, \ + }, \ + }, \ } #define SD_BUS_WRITABLE_PROPERTY(_member, _signature, _get, _set, _offset, _flags) \ { \ .type = _SD_BUS_VTABLE_WRITABLE_PROPERTY, \ .flags = _flags, \ - .x.property.member = _member, \ - .x.property.signature = _signature, \ - .x.property.get = _get, \ - .x.property.set = _set, \ - .x.property.offset = _offset, \ + .x = { \ + .property = { \ + .member = _member, \ + .signature = _signature, \ + .get = _get, \ + .set = _set, \ + .offset = _offset, \ + }, \ + }, \ } #define SD_BUS_VTABLE_END \ diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h index 6cc8e4ac0e..9b38969b77 100644 --- a/src/systemd/sd-id128.h +++ b/src/systemd/sd-id128.h @@ -100,6 +100,9 @@ int sd_id128_get_invocation(sd_id128_t *ret); ((x).bytes[15] & 15) >= 10 ? 'a' + ((x).bytes[15] & 15) - 10 : '0' + ((x).bytes[15] & 15), \ 0 }) +#define SD_ID128_MAKE_STR(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) \ + #a #b #c #d #e #f #g #h #i #j #k #l #m #n #o #p + _sd_pure_ static __inline__ int sd_id128_equal(sd_id128_t a, sd_id128_t b) { return memcmp(&a, &b, 16) == 0; } diff --git a/src/systemd/sd-messages.h b/src/systemd/sd-messages.h index db1a21be05..f466d9b062 100644 --- a/src/systemd/sd-messages.h +++ b/src/systemd/sd-messages.h @@ -33,60 +33,109 @@ _SD_BEGIN_DECLARATIONS; * with journalctl --new-id128. Do not use any other IDs, and do not * count them up manually. */ -#define SD_MESSAGE_JOURNAL_START SD_ID128_MAKE(f7,73,79,a8,49,0b,40,8b,be,5f,69,40,50,5a,77,7b) -#define SD_MESSAGE_JOURNAL_STOP SD_ID128_MAKE(d9,3f,b3,c9,c2,4d,45,1a,97,ce,a6,15,ce,59,c0,0b) -#define SD_MESSAGE_JOURNAL_DROPPED SD_ID128_MAKE(a5,96,d6,fe,7b,fa,49,94,82,8e,72,30,9e,95,d6,1e) -#define SD_MESSAGE_JOURNAL_MISSED SD_ID128_MAKE(e9,bf,28,e6,e8,34,48,1b,b6,f4,8f,54,8a,d1,36,06) -#define SD_MESSAGE_JOURNAL_USAGE SD_ID128_MAKE(ec,38,7f,57,7b,84,4b,8f,a9,48,f3,3c,ad,9a,75,e6) - -#define SD_MESSAGE_COREDUMP SD_ID128_MAKE(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1) -#define SD_MESSAGE_TRUNCATED_CORE SD_ID128_MAKE(5a,ad,d8,e9,54,dc,4b,1a,8c,95,4d,63,fd,9e,11,37) - -#define SD_MESSAGE_SESSION_START SD_ID128_MAKE(8d,45,62,0c,1a,43,48,db,b1,74,10,da,57,c6,0c,66) -#define SD_MESSAGE_SESSION_STOP SD_ID128_MAKE(33,54,93,94,24,b4,45,6d,98,02,ca,83,33,ed,42,4a) -#define SD_MESSAGE_SEAT_START SD_ID128_MAKE(fc,be,fc,5d,a2,3d,42,80,93,f9,7c,82,a9,29,0f,7b) -#define SD_MESSAGE_SEAT_STOP SD_ID128_MAKE(e7,85,2b,fe,46,78,4e,d0,ac,cd,e0,4b,c8,64,c2,d5) -#define SD_MESSAGE_MACHINE_START SD_ID128_MAKE(24,d8,d4,45,25,73,40,24,96,06,83,81,a6,31,2d,f2) -#define SD_MESSAGE_MACHINE_STOP SD_ID128_MAKE(58,43,2b,d3,ba,ce,47,7c,b5,14,b5,63,81,b8,a7,58) - -#define SD_MESSAGE_TIME_CHANGE SD_ID128_MAKE(c7,a7,87,07,9b,35,4e,aa,a9,e7,7b,37,18,93,cd,27) -#define SD_MESSAGE_TIMEZONE_CHANGE SD_ID128_MAKE(45,f8,2f,4a,ef,7a,4b,bf,94,2c,e8,61,d1,f2,09,90) - -#define SD_MESSAGE_STARTUP_FINISHED SD_ID128_MAKE(b0,7a,24,9c,d0,24,41,4a,82,dd,00,cd,18,13,78,ff) -#define SD_MESSAGE_USER_STARTUP_FINISHED SD_ID128_MAKE(ee,d0,0a,68,ff,d8,4e,31,88,21,05,fd,97,3a,bd,d1) - -#define SD_MESSAGE_SLEEP_START SD_ID128_MAKE(6b,bd,95,ee,97,79,41,e4,97,c4,8b,e2,7c,25,41,28) -#define SD_MESSAGE_SLEEP_STOP SD_ID128_MAKE(88,11,e6,df,2a,8e,40,f5,8a,94,ce,a2,6f,8e,bf,14) - -#define SD_MESSAGE_SHUTDOWN SD_ID128_MAKE(98,26,88,66,d1,d5,4a,49,9c,4e,98,92,1d,93,bc,40) - -#define SD_MESSAGE_UNIT_STARTING SD_ID128_MAKE(7d,49,58,e8,42,da,4a,75,8f,6c,1c,dc,7b,36,dc,c5) -#define SD_MESSAGE_UNIT_STARTED SD_ID128_MAKE(39,f5,34,79,d3,a0,45,ac,8e,11,78,62,48,23,1f,bf) -#define SD_MESSAGE_UNIT_STOPPING SD_ID128_MAKE(de,5b,42,6a,63,be,47,a7,b6,ac,3e,aa,c8,2e,2f,6f) -#define SD_MESSAGE_UNIT_STOPPED SD_ID128_MAKE(9d,1a,aa,27,d6,01,40,bd,96,36,54,38,aa,d2,02,86) -#define SD_MESSAGE_UNIT_FAILED SD_ID128_MAKE(be,02,cf,68,55,d2,42,8b,a4,0d,f7,e9,d0,22,f0,3d) -#define SD_MESSAGE_UNIT_RELOADING SD_ID128_MAKE(d3,4d,03,7f,ff,18,47,e6,ae,66,9a,37,0e,69,47,25) -#define SD_MESSAGE_UNIT_RELOADED SD_ID128_MAKE(7b,05,eb,c6,68,38,42,22,ba,a8,88,11,79,cf,da,54) - -#define SD_MESSAGE_SPAWN_FAILED SD_ID128_MAKE(64,12,57,65,1c,1b,4e,c9,a8,62,4d,7a,40,a9,e1,e7) - -#define SD_MESSAGE_FORWARD_SYSLOG_MISSED SD_ID128_MAKE(00,27,22,9c,a0,64,41,81,a7,6c,4e,92,45,8a,fa,2e) - -#define SD_MESSAGE_OVERMOUNTING SD_ID128_MAKE(1d,ee,03,69,c7,fc,47,36,b7,09,9b,38,ec,b4,6e,e7) - -#define SD_MESSAGE_LID_OPENED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,6f) -#define SD_MESSAGE_LID_CLOSED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,70) -#define SD_MESSAGE_SYSTEM_DOCKED SD_ID128_MAKE(f5,f4,16,b8,62,07,4b,28,92,7a,48,c3,ba,7d,51,ff) -#define SD_MESSAGE_SYSTEM_UNDOCKED SD_ID128_MAKE(51,e1,71,bd,58,52,48,56,81,10,14,4c,51,7c,ca,53) -#define SD_MESSAGE_POWER_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,71) -#define SD_MESSAGE_SUSPEND_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,72) -#define SD_MESSAGE_HIBERNATE_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,73) - -#define SD_MESSAGE_INVALID_CONFIGURATION SD_ID128_MAKE(c7,72,d2,4e,9a,88,4c,be,b9,ea,12,62,5c,30,6c,01) - -#define SD_MESSAGE_DNSSEC_FAILURE SD_ID128_MAKE(16,75,d7,f1,72,17,40,98,b1,10,8b,f8,c7,dc,8f,5d) -#define SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED SD_ID128_MAKE(4d,44,08,cf,d0,d1,44,85,91,84,d1,e6,5d,7c,8a,65) -#define SD_MESSAGE_DNSSEC_DOWNGRADE SD_ID128_MAKE(36,db,2d,fa,5a,90,45,e1,bd,4a,f5,f9,3e,1c,f0,57) +#define SD_MESSAGE_JOURNAL_START SD_ID128_MAKE(f7,73,79,a8,49,0b,40,8b,be,5f,69,40,50,5a,77,7b) +#define SD_MESSAGE_JOURNAL_START_STR SD_ID128_MAKE_STR(f7,73,79,a8,49,0b,40,8b,be,5f,69,40,50,5a,77,7b) +#define SD_MESSAGE_JOURNAL_STOP SD_ID128_MAKE(d9,3f,b3,c9,c2,4d,45,1a,97,ce,a6,15,ce,59,c0,0b) +#define SD_MESSAGE_JOURNAL_STOP_STR SD_ID128_MAKE_STR(d9,3f,b3,c9,c2,4d,45,1a,97,ce,a6,15,ce,59,c0,0b) +#define SD_MESSAGE_JOURNAL_DROPPED SD_ID128_MAKE(a5,96,d6,fe,7b,fa,49,94,82,8e,72,30,9e,95,d6,1e) +#define SD_MESSAGE_JOURNAL_DROPPED_STR SD_ID128_MAKE_STR(a5,96,d6,fe,7b,fa,49,94,82,8e,72,30,9e,95,d6,1e) +#define SD_MESSAGE_JOURNAL_MISSED SD_ID128_MAKE(e9,bf,28,e6,e8,34,48,1b,b6,f4,8f,54,8a,d1,36,06) +#define SD_MESSAGE_JOURNAL_MISSED_STR SD_ID128_MAKE_STR(e9,bf,28,e6,e8,34,48,1b,b6,f4,8f,54,8a,d1,36,06) +#define SD_MESSAGE_JOURNAL_USAGE SD_ID128_MAKE(ec,38,7f,57,7b,84,4b,8f,a9,48,f3,3c,ad,9a,75,e6) +#define SD_MESSAGE_JOURNAL_USAGE_STR SD_ID128_MAKE_STR(ec,38,7f,57,7b,84,4b,8f,a9,48,f3,3c,ad,9a,75,e6) + +#define SD_MESSAGE_COREDUMP SD_ID128_MAKE(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1) +#define SD_MESSAGE_COREDUMP_STR SD_ID128_MAKE_STR(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1) +#define SD_MESSAGE_TRUNCATED_CORE SD_ID128_MAKE(5a,ad,d8,e9,54,dc,4b,1a,8c,95,4d,63,fd,9e,11,37) +#define SD_MESSAGE_TRUNCATED_CORE_STR SD_ID128_MAKE_STR(5a,ad,d8,e9,54,dc,4b,1a,8c,95,4d,63,fd,9e,11,37) +#define SD_MESSAGE_BACKTRACE SD_ID128_MAKE(1f,4e,0a,44,a8,86,49,93,9a,ae,a3,4f,c6,da,8c,95) +#define SD_MESSAGE_BACKTRACE_STR SD_ID128_MAKE_STR(1f,4e,0a,44,a8,86,49,93,9a,ae,a3,4f,c6,da,8c,95) + +#define SD_MESSAGE_SESSION_START SD_ID128_MAKE(8d,45,62,0c,1a,43,48,db,b1,74,10,da,57,c6,0c,66) +#define SD_MESSAGE_SESSION_START_STR SD_ID128_MAKE_STR(8d,45,62,0c,1a,43,48,db,b1,74,10,da,57,c6,0c,66) +#define SD_MESSAGE_SESSION_STOP SD_ID128_MAKE(33,54,93,94,24,b4,45,6d,98,02,ca,83,33,ed,42,4a) +#define SD_MESSAGE_SESSION_STOP_STR SD_ID128_MAKE_STR(33,54,93,94,24,b4,45,6d,98,02,ca,83,33,ed,42,4a) +#define SD_MESSAGE_SEAT_START SD_ID128_MAKE(fc,be,fc,5d,a2,3d,42,80,93,f9,7c,82,a9,29,0f,7b) +#define SD_MESSAGE_SEAT_START_STR SD_ID128_MAKE_STR(fc,be,fc,5d,a2,3d,42,80,93,f9,7c,82,a9,29,0f,7b) +#define SD_MESSAGE_SEAT_STOP SD_ID128_MAKE(e7,85,2b,fe,46,78,4e,d0,ac,cd,e0,4b,c8,64,c2,d5) +#define SD_MESSAGE_SEAT_STOP_STR SD_ID128_MAKE_STR(e7,85,2b,fe,46,78,4e,d0,ac,cd,e0,4b,c8,64,c2,d5) +#define SD_MESSAGE_MACHINE_START SD_ID128_MAKE(24,d8,d4,45,25,73,40,24,96,06,83,81,a6,31,2d,f2) +#define SD_MESSAGE_MACHINE_START_STR SD_ID128_MAKE_STR(24,d8,d4,45,25,73,40,24,96,06,83,81,a6,31,2d,f2) +#define SD_MESSAGE_MACHINE_STOP SD_ID128_MAKE(58,43,2b,d3,ba,ce,47,7c,b5,14,b5,63,81,b8,a7,58) +#define SD_MESSAGE_MACHINE_STOP_STR SD_ID128_MAKE_STR(58,43,2b,d3,ba,ce,47,7c,b5,14,b5,63,81,b8,a7,58) + +#define SD_MESSAGE_TIME_CHANGE SD_ID128_MAKE(c7,a7,87,07,9b,35,4e,aa,a9,e7,7b,37,18,93,cd,27) +#define SD_MESSAGE_TIME_CHANGE_STR SD_ID128_MAKE_STR(c7,a7,87,07,9b,35,4e,aa,a9,e7,7b,37,18,93,cd,27) +#define SD_MESSAGE_TIMEZONE_CHANGE SD_ID128_MAKE(45,f8,2f,4a,ef,7a,4b,bf,94,2c,e8,61,d1,f2,09,90) +#define SD_MESSAGE_TIMEZONE_CHANGE_STR SD_ID128_MAKE_STR(45,f8,2f,4a,ef,7a,4b,bf,94,2c,e8,61,d1,f2,09,90) + +#define SD_MESSAGE_STARTUP_FINISHED SD_ID128_MAKE(b0,7a,24,9c,d0,24,41,4a,82,dd,00,cd,18,13,78,ff) +#define SD_MESSAGE_STARTUP_FINISHED_STR SD_ID128_MAKE_STR(b0,7a,24,9c,d0,24,41,4a,82,dd,00,cd,18,13,78,ff) +#define SD_MESSAGE_USER_STARTUP_FINISHED \ + SD_ID128_MAKE(ee,d0,0a,68,ff,d8,4e,31,88,21,05,fd,97,3a,bd,d1) +#define SD_MESSAGE_USER_STARTUP_FINISHED_STR \ + SD_ID128_MAKE_STR(ee,d0,0a,68,ff,d8,4e,31,88,21,05,fd,97,3a,bd,d1) + +#define SD_MESSAGE_SLEEP_START SD_ID128_MAKE(6b,bd,95,ee,97,79,41,e4,97,c4,8b,e2,7c,25,41,28) +#define SD_MESSAGE_SLEEP_START_STR SD_ID128_MAKE_STR(6b,bd,95,ee,97,79,41,e4,97,c4,8b,e2,7c,25,41,28) +#define SD_MESSAGE_SLEEP_STOP SD_ID128_MAKE(88,11,e6,df,2a,8e,40,f5,8a,94,ce,a2,6f,8e,bf,14) +#define SD_MESSAGE_SLEEP_STOP_STR SD_ID128_MAKE_STR(88,11,e6,df,2a,8e,40,f5,8a,94,ce,a2,6f,8e,bf,14) + +#define SD_MESSAGE_SHUTDOWN SD_ID128_MAKE(98,26,88,66,d1,d5,4a,49,9c,4e,98,92,1d,93,bc,40) +#define SD_MESSAGE_SHUTDOWN_STR SD_ID128_MAKE_STR(98,26,88,66,d1,d5,4a,49,9c,4e,98,92,1d,93,bc,40) + +#define SD_MESSAGE_UNIT_STARTING SD_ID128_MAKE(7d,49,58,e8,42,da,4a,75,8f,6c,1c,dc,7b,36,dc,c5) +#define SD_MESSAGE_UNIT_STARTING_STR SD_ID128_MAKE_STR(7d,49,58,e8,42,da,4a,75,8f,6c,1c,dc,7b,36,dc,c5) +#define SD_MESSAGE_UNIT_STARTED SD_ID128_MAKE(39,f5,34,79,d3,a0,45,ac,8e,11,78,62,48,23,1f,bf) +#define SD_MESSAGE_UNIT_STARTED_STR SD_ID128_MAKE_STR(39,f5,34,79,d3,a0,45,ac,8e,11,78,62,48,23,1f,bf) +#define SD_MESSAGE_UNIT_STOPPING SD_ID128_MAKE(de,5b,42,6a,63,be,47,a7,b6,ac,3e,aa,c8,2e,2f,6f) +#define SD_MESSAGE_UNIT_STOPPING_STR SD_ID128_MAKE_STR(de,5b,42,6a,63,be,47,a7,b6,ac,3e,aa,c8,2e,2f,6f) +#define SD_MESSAGE_UNIT_STOPPED SD_ID128_MAKE(9d,1a,aa,27,d6,01,40,bd,96,36,54,38,aa,d2,02,86) +#define SD_MESSAGE_UNIT_STOPPED_STR SD_ID128_MAKE_STR(9d,1a,aa,27,d6,01,40,bd,96,36,54,38,aa,d2,02,86) +#define SD_MESSAGE_UNIT_FAILED SD_ID128_MAKE(be,02,cf,68,55,d2,42,8b,a4,0d,f7,e9,d0,22,f0,3d) +#define SD_MESSAGE_UNIT_FAILED_STR SD_ID128_MAKE_STR(be,02,cf,68,55,d2,42,8b,a4,0d,f7,e9,d0,22,f0,3d) +#define SD_MESSAGE_UNIT_RELOADING SD_ID128_MAKE(d3,4d,03,7f,ff,18,47,e6,ae,66,9a,37,0e,69,47,25) +#define SD_MESSAGE_UNIT_RELOADING_STR SD_ID128_MAKE_STR(d3,4d,03,7f,ff,18,47,e6,ae,66,9a,37,0e,69,47,25) +#define SD_MESSAGE_UNIT_RELOADED SD_ID128_MAKE(7b,05,eb,c6,68,38,42,22,ba,a8,88,11,79,cf,da,54) +#define SD_MESSAGE_UNIT_RELOADED_STR SD_ID128_MAKE_STR(7b,05,eb,c6,68,38,42,22,ba,a8,88,11,79,cf,da,54) + +#define SD_MESSAGE_SPAWN_FAILED SD_ID128_MAKE(64,12,57,65,1c,1b,4e,c9,a8,62,4d,7a,40,a9,e1,e7) +#define SD_MESSAGE_SPAWN_FAILED_STR SD_ID128_MAKE_STR(64,12,57,65,1c,1b,4e,c9,a8,62,4d,7a,40,a9,e1,e7) + +#define SD_MESSAGE_FORWARD_SYSLOG_MISSED SD_ID128_MAKE(00,27,22,9c,a0,64,41,81,a7,6c,4e,92,45,8a,fa,2e) +#define SD_MESSAGE_FORWARD_SYSLOG_MISSED_STR \ + SD_ID128_MAKE_STR(00,27,22,9c,a0,64,41,81,a7,6c,4e,92,45,8a,fa,2e) + +#define SD_MESSAGE_OVERMOUNTING SD_ID128_MAKE(1d,ee,03,69,c7,fc,47,36,b7,09,9b,38,ec,b4,6e,e7) +#define SD_MESSAGE_OVERMOUNTING_STR SD_ID128_MAKE_STR(1d,ee,03,69,c7,fc,47,36,b7,09,9b,38,ec,b4,6e,e7) + +#define SD_MESSAGE_LID_OPENED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,6f) +#define SD_MESSAGE_LID_OPENED_STR SD_ID128_MAKE_STR(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,6f) +#define SD_MESSAGE_LID_CLOSED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,70) +#define SD_MESSAGE_LID_CLOSED_STR SD_ID128_MAKE_STR(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,70) +#define SD_MESSAGE_SYSTEM_DOCKED SD_ID128_MAKE(f5,f4,16,b8,62,07,4b,28,92,7a,48,c3,ba,7d,51,ff) +#define SD_MESSAGE_SYSTEM_DOCKED_STR SD_ID128_MAKE_STR(f5,f4,16,b8,62,07,4b,28,92,7a,48,c3,ba,7d,51,ff) +#define SD_MESSAGE_SYSTEM_UNDOCKED SD_ID128_MAKE(51,e1,71,bd,58,52,48,56,81,10,14,4c,51,7c,ca,53) +#define SD_MESSAGE_SYSTEM_UNDOCKED_STR SD_ID128_MAKE_STR(51,e1,71,bd,58,52,48,56,81,10,14,4c,51,7c,ca,53) +#define SD_MESSAGE_POWER_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,71) +#define SD_MESSAGE_POWER_KEY_STR SD_ID128_MAKE_STR(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,71) +#define SD_MESSAGE_SUSPEND_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,72) +#define SD_MESSAGE_SUSPEND_KEY_STR SD_ID128_MAKE_STR(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,72) +#define SD_MESSAGE_HIBERNATE_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,73) +#define SD_MESSAGE_HIBERNATE_KEY_STR SD_ID128_MAKE_STR(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,73) + +#define SD_MESSAGE_INVALID_CONFIGURATION SD_ID128_MAKE(c7,72,d2,4e,9a,88,4c,be,b9,ea,12,62,5c,30,6c,01) +#define SD_MESSAGE_INVALID_CONFIGURATION_STR \ + SD_ID128_MAKE_STR(c7,72,d2,4e,9a,88,4c,be,b9,ea,12,62,5c,30,6c,01) + +#define SD_MESSAGE_DNSSEC_FAILURE SD_ID128_MAKE(16,75,d7,f1,72,17,40,98,b1,10,8b,f8,c7,dc,8f,5d) +#define SD_MESSAGE_DNSSEC_FAILURE_STR SD_ID128_MAKE_STR(16,75,d7,f1,72,17,40,98,b1,10,8b,f8,c7,dc,8f,5d) +#define SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED \ + SD_ID128_MAKE(4d,44,08,cf,d0,d1,44,85,91,84,d1,e6,5d,7c,8a,65) +#define SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED_STR \ + SD_ID128_MAKE_STR(4d,44,08,cf,d0,d1,44,85,91,84,d1,e6,5d,7c,8a,65) +#define SD_MESSAGE_DNSSEC_DOWNGRADE SD_ID128_MAKE(36,db,2d,fa,5a,90,45,e1,bd,4a,f5,f9,3e,1c,f0,57) +#define SD_MESSAGE_DNSSEC_DOWNGRADE_STR SD_ID128_MAKE_STR(36,db,2d,fa,5a,90,45,e1,bd,4a,f5,f9,3e,1c,f0,57) _SD_END_DECLARATIONS; diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c index 17b966eb52..4a0a49f2bb 100644 --- a/src/sysusers/sysusers.c +++ b/src/sysusers/sysusers.c @@ -211,7 +211,7 @@ static int make_backup(const char *target, const char *x) { if (r < 0) return r; - r = copy_bytes(src, fileno(dst), (uint64_t) -1, true); + r = copy_bytes(src, fileno(dst), (uint64_t) -1, COPY_REFLINK); if (r < 0) goto fail; diff --git a/src/test/test-calendarspec.c b/src/test/test-calendarspec.c index 1f34a91b10..f90b73aeaf 100644 --- a/src/test/test-calendarspec.c +++ b/src/test/test-calendarspec.c @@ -192,6 +192,7 @@ int main(int argc, char* argv[]) { test_one("00..07-*-*", "2000..2007-*-* 00:00:00"); test_one("*:20..39/5", "*-*-* *:20..35/5:00"); test_one("00:00:20..40/1", "*-*-* 00:00:20..40"); + test_one("*~03/1,03..05", "*-*~03/1,03..05 00:00:00"); test_next("2016-03-27 03:17:00", "", 12345, 1459048620000000); test_next("2016-03-27 03:17:00", "CET", 12345, 1459041420000000); diff --git a/src/test/test-cgroup-mask.c b/src/test/test-cgroup-mask.c index a027eb0fd2..b42088c680 100644 --- a/src/test/test-cgroup-mask.c +++ b/src/test/test-cgroup-mask.c @@ -27,6 +27,7 @@ #include "unit.h" static int test_cgroup_mask(void) { + _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL; Manager *m = NULL; Unit *son, *daughter, *parent, *root, *grandchild, *parent_deep; FILE *serial = NULL; @@ -34,7 +35,8 @@ static int test_cgroup_mask(void) { int r; /* Prepare the manager. */ - assert_se(set_unit_path(TEST_DIR) >= 0); + assert_se(set_unit_path(get_testdata_dir("")) >= 0); + assert_se(runtime_dir = setup_fake_runtime_dir()); r = manager_new(UNIT_FILE_USER, true, &m); if (r == -EPERM || r == -EACCES) { puts("manager_new: Permission denied. Skipping test."); @@ -110,10 +112,8 @@ static int test_cgroup_mask(void) { } int main(int argc, char* argv[]) { - _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL; int rc = 0; - assert_se(runtime_dir = setup_fake_runtime_dir()); TEST_REQ_RUNNING_SYSTEMD(rc = test_cgroup_mask()); return rc; diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c index c60fb631fa..30cd463722 100644 --- a/src/test/test-cgroup-util.c +++ b/src/test/test-cgroup-util.c @@ -18,11 +18,13 @@ ***/ #include "alloc-util.h" +#include "build.h" #include "cgroup-util.h" #include "dirent-util.h" #include "fd-util.h" #include "format-util.h" #include "parse-util.h" +#include "proc-cmdline.h" #include "process-util.h" #include "stat-util.h" #include "string-util.h" @@ -332,7 +334,49 @@ static void test_fd_is_cgroup_fs(void) { fd = safe_close(fd); } +static void test_is_wanted_print(bool header) { + _cleanup_free_ char *cmdline = NULL; + + log_info("-- %s --", __func__); + assert_se(proc_cmdline(&cmdline) >= 0); + log_info("cmdline: %s", cmdline); + if (header) { + + log_info(_CGROUP_HIEARCHY_); + (void) system("findmnt -n /sys/fs/cgroup"); + } + + log_info("is_unified_wanted() → %s", yes_no(cg_is_unified_wanted())); + log_info("is_hybrid_wanted() → %s", yes_no(cg_is_hybrid_wanted())); + log_info("is_legacy_wanted() → %s", yes_no(cg_is_legacy_wanted())); + log_info(" "); +} + +static void test_is_wanted(void) { + assert_se(setenv("SYSTEMD_PROC_CMDLINE", + "systemd.unified_cgroup_hierarchy", 1) >= 0); + test_is_wanted_print(false); + + assert_se(setenv("SYSTEMD_PROC_CMDLINE", + "systemd.unified_cgroup_hierarchy=0", 1) >= 0); + test_is_wanted_print(false); + + assert_se(setenv("SYSTEMD_PROC_CMDLINE", + "systemd.unified_cgroup_hierarchy=0 " + "systemd.legacy_systemd_cgroup_controller", 1) >= 0); + test_is_wanted_print(false); + + assert_se(setenv("SYSTEMD_PROC_CMDLINE", + "systemd.unified_cgroup_hierarchy=0 " + "systemd.legacy_systemd_cgroup_controller=0", 1) >= 0); + test_is_wanted_print(false); +} + int main(void) { + log_set_max_level(LOG_DEBUG); + log_parse_environment(); + log_open(); + test_path_decode_unit(); test_path_get_unit(); test_path_get_user_unit(); @@ -349,6 +393,9 @@ int main(void) { TEST_REQ_RUNNING_SYSTEMD(test_mask_supported()); TEST_REQ_RUNNING_SYSTEMD(test_is_cgroup_fs()); TEST_REQ_RUNNING_SYSTEMD(test_fd_is_cgroup_fs()); + test_is_wanted_print(true); + test_is_wanted_print(false); /* run twice to test caching */ + test_is_wanted(); return 0; } diff --git a/src/test/test-conf-files.c b/src/test/test-conf-files.c index 03b3a9fa5c..22b7c61204 100644 --- a/src/test/test-conf-files.c +++ b/src/test/test-conf-files.c @@ -47,13 +47,16 @@ static void setup_test_dir(char *tmp_dir, const char *files, ...) { static void test_conf_files_list(bool use_root) { char tmp_dir[] = "/tmp/test-conf-files-XXXXXX"; - _cleanup_strv_free_ char **found_files = NULL; - const char *root_dir, *search_1, *search_2, *expect_a, *expect_b; + _cleanup_strv_free_ char **found_files = NULL, **found_files2 = NULL; + const char *root_dir, *search_1, *search_2, *expect_a, *expect_b, *expect_c; + + log_debug("/* %s */", __func__); setup_test_dir(tmp_dir, "/dir1/a.conf", "/dir2/a.conf", "/dir2/b.conf", + "/dir2/c.foo", NULL); if (use_root) { @@ -68,6 +71,9 @@ static void test_conf_files_list(bool use_root) { expect_a = strjoina(tmp_dir, "/dir1/a.conf"); expect_b = strjoina(tmp_dir, "/dir2/b.conf"); + expect_c = strjoina(tmp_dir, "/dir2/c.foo"); + + log_debug("/* Check when filtered by suffix */"); assert_se(conf_files_list(&found_files, ".conf", root_dir, search_1, search_2, NULL) == 0); strv_print(found_files); @@ -77,10 +83,24 @@ static void test_conf_files_list(bool use_root) { assert_se(streq_ptr(found_files[1], expect_b)); assert_se(found_files[2] == NULL); + log_debug("/* Check when unfiltered */"); + assert_se(conf_files_list(&found_files2, NULL, root_dir, search_1, search_2, NULL) == 0); + strv_print(found_files2); + + assert_se(found_files2); + assert_se(streq_ptr(found_files2[0], expect_a)); + assert_se(streq_ptr(found_files2[1], expect_b)); + assert_se(streq_ptr(found_files2[2], expect_c)); + assert_se(found_files2[3] == NULL); + assert_se(rm_rf(tmp_dir, REMOVE_ROOT|REMOVE_PHYSICAL) == 0); } int main(int argc, char **argv) { + log_set_max_level(LOG_DEBUG); + log_parse_environment(); + log_open(); + test_conf_files_list(false); test_conf_files_list(true); return 0; diff --git a/src/test/test-copy.c b/src/test/test-copy.c index e65516f080..ed6725611d 100644 --- a/src/test/test-copy.c +++ b/src/test/test-copy.c @@ -31,6 +31,7 @@ #include "rm-rf.h" #include "string-util.h" #include "strv.h" +#include "user-util.h" #include "util.h" static void test_copy_file(void) { @@ -52,7 +53,7 @@ static void test_copy_file(void) { assert_se(write_string_file(fn, "foo bar bar bar foo", WRITE_STRING_FILE_CREATE) == 0); - assert_se(copy_file(fn, fn_copy, 0, 0644, 0) == 0); + assert_se(copy_file(fn, fn_copy, 0, 0644, 0, COPY_REFLINK) == 0); assert_se(read_full_file(fn_copy, &buf, &sz) == 0); assert_se(streq(buf, "foo bar bar bar foo\n")); @@ -77,8 +78,8 @@ static void test_copy_file_fd(void) { assert_se(out_fd >= 0); assert_se(write_string_file(in_fn, text, WRITE_STRING_FILE_CREATE) == 0); - assert_se(copy_file_fd("/a/file/which/does/not/exist/i/guess", out_fd, true) < 0); - assert_se(copy_file_fd(in_fn, out_fd, true) >= 0); + assert_se(copy_file_fd("/a/file/which/does/not/exist/i/guess", out_fd, COPY_REFLINK) < 0); + assert_se(copy_file_fd(in_fn, out_fd, COPY_REFLINK) >= 0); assert_se(lseek(out_fd, SEEK_SET, 0) == 0); assert_se(read(out_fd, buf, sizeof(buf)) == sizeof(text) - 1); @@ -125,7 +126,7 @@ static void test_copy_tree(void) { unixsockp = strjoina(original_dir, "unixsock"); assert_se(mknod(unixsockp, S_IFSOCK|0644, 0) >= 0); - assert_se(copy_tree(original_dir, copy_dir, true) == 0); + assert_se(copy_tree(original_dir, copy_dir, UID_INVALID, GID_INVALID, COPY_REFLINK|COPY_MERGE) == 0); STRV_FOREACH(p, files) { _cleanup_free_ char *buf = NULL, *f; @@ -152,8 +153,8 @@ static void test_copy_tree(void) { assert_se(stat(unixsockp, &st) >= 0); assert_se(S_ISSOCK(st.st_mode)); - assert_se(copy_tree(original_dir, copy_dir, false) < 0); - assert_se(copy_tree("/tmp/inexistent/foo/bar/fsdoi", copy_dir, false) < 0); + assert_se(copy_tree(original_dir, copy_dir, UID_INVALID, GID_INVALID, COPY_REFLINK) < 0); + assert_se(copy_tree("/tmp/inexistent/foo/bar/fsdoi", copy_dir, UID_INVALID, GID_INVALID, COPY_REFLINK) < 0); (void) rm_rf(copy_dir, REMOVE_ROOT|REMOVE_PHYSICAL); (void) rm_rf(original_dir, REMOVE_ROOT|REMOVE_PHYSICAL); @@ -172,7 +173,7 @@ static void test_copy_bytes(void) { assert_se(pipe2(pipefd, O_CLOEXEC) == 0); - r = copy_bytes(infd, pipefd[1], (uint64_t) -1, false); + r = copy_bytes(infd, pipefd[1], (uint64_t) -1, 0); assert_se(r == 0); r = read(pipefd[0], buf, sizeof(buf)); @@ -185,13 +186,13 @@ static void test_copy_bytes(void) { assert_se(strneq(buf, buf2, r)); /* test copy_bytes with invalid descriptors */ - r = copy_bytes(pipefd[0], pipefd[0], 1, false); + r = copy_bytes(pipefd[0], pipefd[0], 1, 0); assert_se(r == -EBADF); - r = copy_bytes(pipefd[1], pipefd[1], 1, false); + r = copy_bytes(pipefd[1], pipefd[1], 1, 0); assert_se(r == -EBADF); - r = copy_bytes(pipefd[1], infd, 1, false); + r = copy_bytes(pipefd[1], infd, 1, 0); assert_se(r == -EBADF); } @@ -213,7 +214,7 @@ static void test_copy_bytes_regular_file(const char *src, bool try_reflink, uint fd3 = mkostemp_safe(fn3); assert_se(fd3 >= 0); - r = copy_bytes(fd, fd2, max_bytes, try_reflink); + r = copy_bytes(fd, fd2, max_bytes, try_reflink ? COPY_REFLINK : 0); if (max_bytes == (uint64_t) -1) assert_se(r == 0); else @@ -221,7 +222,7 @@ static void test_copy_bytes_regular_file(const char *src, bool try_reflink, uint assert_se(lseek(fd2, 0, SEEK_SET) == 0); - r = copy_bytes(fd2, fd3, max_bytes, try_reflink); + r = copy_bytes(fd2, fd3, max_bytes, try_reflink ? COPY_REFLINK : 0); if (max_bytes == (uint64_t) -1) assert_se(r == 0); else diff --git a/src/test/test-dns-domain.c b/src/test/test-dns-domain.c index b4db4a6702..a7cd8e4b51 100644 --- a/src/test/test-dns-domain.c +++ b/src/test/test-dns-domain.c @@ -373,16 +373,16 @@ static void test_dns_name_is_valid(void) { test_dns_name_is_valid_one("ä", 1); test_dns_name_is_valid_one("\n", 0); - /* 256 characters*/ + /* 256 characters */ test_dns_name_is_valid_one("a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345", 0); - /* 255 characters*/ + /* 255 characters */ test_dns_name_is_valid_one("a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a1234", 0); - /* 254 characters*/ + /* 254 characters */ test_dns_name_is_valid_one("a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a123", 0); - /* 253 characters*/ + /* 253 characters */ test_dns_name_is_valid_one("a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12345678.a12", 1); /* label of 64 chars length */ diff --git a/src/test/test-engine.c b/src/test/test-engine.c index a651f6b683..8133343fb3 100644 --- a/src/test/test-engine.c +++ b/src/test/test-engine.c @@ -37,10 +37,9 @@ int main(int argc, char *argv[]) { Job *j; int r; - assert_se(runtime_dir = setup_fake_runtime_dir()); - /* prepare the test */ - assert_se(set_unit_path(TEST_DIR) >= 0); + assert_se(set_unit_path(get_testdata_dir("")) >= 0); + assert_se(runtime_dir = setup_fake_runtime_dir()); r = manager_new(UNIT_FILE_USER, true, &m); if (MANAGER_SKIP_TEST(r)) { log_notice_errno(r, "Skipping test: manager_new: %m"); diff --git a/src/test/test-env-util.c b/src/test/test-env-util.c index 35bb62906e..e5cc2a2df8 100644 --- a/src/test/test-env-util.c +++ b/src/test/test-env-util.c @@ -45,6 +45,16 @@ static void test_strv_env_delete(void) { assert_se(strv_length(d) == 2); } +static void test_strv_env_get(void) { + char **l; + + l = STRV_MAKE("ONE_OR_TWO=1", "THREE=3", "ONE_OR_TWO=2", "FOUR=4"); + + assert_se(streq(strv_env_get(l, "ONE_OR_TWO"), "2")); + assert_se(streq(strv_env_get(l, "THREE"), "3")); + assert_se(streq(strv_env_get(l, "FOUR"), "4")); +} + static void test_strv_env_unset(void) { _cleanup_strv_free_ char **l = NULL; @@ -102,7 +112,90 @@ static void test_strv_env_merge(void) { assert_se(strv_length(r) == 5); } -static void test_replace_env_arg(void) { +static void test_env_strv_get_n(void) { + const char *_env[] = { + "FOO=NO NO NO", + "FOO=BAR BAR", + "BAR=waldo", + "PATH=unset", + NULL + }; + char **env = (char**) _env; + + assert_se(streq(strv_env_get_n(env, "FOO__", 3, 0), "BAR BAR")); + assert_se(streq(strv_env_get_n(env, "FOO__", 3, REPLACE_ENV_USE_ENVIRONMENT), "BAR BAR")); + assert_se(streq(strv_env_get_n(env, "FOO", 3, 0), "BAR BAR")); + assert_se(streq(strv_env_get_n(env, "FOO", 3, REPLACE_ENV_USE_ENVIRONMENT), "BAR BAR")); + + assert_se(streq(strv_env_get_n(env, "PATH__", 4, 0), "unset")); + assert_se(streq(strv_env_get_n(env, "PATH", 4, 0), "unset")); + assert_se(streq(strv_env_get_n(env, "PATH__", 4, REPLACE_ENV_USE_ENVIRONMENT), "unset")); + assert_se(streq(strv_env_get_n(env, "PATH", 4, REPLACE_ENV_USE_ENVIRONMENT), "unset")); + + env[3] = NULL; /* kill our $PATH */ + + assert_se(!strv_env_get_n(env, "PATH__", 4, 0)); + assert_se(!strv_env_get_n(env, "PATH", 4, 0)); + assert_se(streq(strv_env_get_n(env, "PATH__", 4, REPLACE_ENV_USE_ENVIRONMENT), + getenv("PATH"))); + assert_se(streq(strv_env_get_n(env, "PATH", 4, REPLACE_ENV_USE_ENVIRONMENT), + getenv("PATH"))); +} + +static void test_replace_env(bool braceless) { + const char *env[] = { + "FOO=BAR BAR", + "BAR=waldo", + NULL + }; + _cleanup_free_ char *t = NULL, *s = NULL, *q = NULL, *r = NULL, *p = NULL; + unsigned flags = REPLACE_ENV_ALLOW_BRACELESS*braceless; + + t = replace_env("FOO=$FOO=${FOO}", (char**) env, flags); + assert_se(streq(t, braceless ? "FOO=BAR BAR=BAR BAR" : "FOO=$FOO=BAR BAR")); + + s = replace_env("BAR=$BAR=${BAR}", (char**) env, flags); + assert_se(streq(s, braceless ? "BAR=waldo=waldo" : "BAR=$BAR=waldo")); + + q = replace_env("BARBAR=$BARBAR=${BARBAR}", (char**) env, flags); + assert_se(streq(q, braceless ? "BARBAR==" : "BARBAR=$BARBAR=")); + + r = replace_env("BAR=$BAR$BAR${BAR}${BAR}", (char**) env, flags); + assert_se(streq(r, braceless ? "BAR=waldowaldowaldowaldo" : "BAR=$BAR$BARwaldowaldo")); + + p = replace_env("${BAR}$BAR$BAR", (char**) env, flags); + assert_se(streq(p, braceless ? "waldowaldowaldo" : "waldo$BAR$BAR")); +} + +static void test_replace_env2(bool extended) { + const char *env[] = { + "FOO=foo", + "BAR=bar", + NULL + }; + _cleanup_free_ char *t = NULL, *s = NULL, *q = NULL, *r = NULL, *p = NULL, *x = NULL; + unsigned flags = REPLACE_ENV_ALLOW_EXTENDED*extended; + + t = replace_env("FOO=${FOO:-${BAR}}", (char**) env, flags); + assert_se(streq(t, extended ? "FOO=foo" : "FOO=${FOO:-bar}")); + + s = replace_env("BAR=${XXX:-${BAR}}", (char**) env, flags); + assert_se(streq(s, extended ? "BAR=bar" : "BAR=${XXX:-bar}")); + + q = replace_env("XXX=${XXX:+${BAR}}", (char**) env, flags); + assert_se(streq(q, extended ? "XXX=" : "XXX=${XXX:+bar}")); + + r = replace_env("FOO=${FOO:+${BAR}}", (char**) env, flags); + assert_se(streq(r, extended ? "FOO=bar" : "FOO=${FOO:+bar}")); + + p = replace_env("FOO=${FOO:-${BAR}post}", (char**) env, flags); + assert_se(streq(p, extended ? "FOO=foo" : "FOO=${FOO:-barpost}")); + + x = replace_env("XXX=${XXX:+${BAR}post}", (char**) env, flags); + assert_se(streq(x, extended ? "XXX=" : "XXX=${XXX:+barpost}")); +} + +static void test_replace_env_argv(void) { const char *env[] = { "FOO=BAR BAR", "BAR=waldo", @@ -120,6 +213,12 @@ static void test_replace_env_arg(void) { "${FOO", "FOO$$${FOO}", "$$FOO${FOO}", + "${FOO:-${BAR}}", + "${QUUX:-${FOO}}", + "${FOO:+${BAR}}", + "${QUUX:+${BAR}}", + "${FOO:+|${BAR}|}}", + "${FOO:+|${BAR}{|}", NULL }; _cleanup_strv_free_ char **r = NULL; @@ -137,7 +236,13 @@ static void test_replace_env_arg(void) { assert_se(streq(r[8], "${FOO")); assert_se(streq(r[9], "FOO$BAR BAR")); assert_se(streq(r[10], "$FOOBAR BAR")); - assert_se(strv_length(r) == 11); + assert_se(streq(r[11], "${FOO:-waldo}")); + assert_se(streq(r[12], "${QUUX:-BAR BAR}")); + assert_se(streq(r[13], "${FOO:+waldo}")); + assert_se(streq(r[14], "${QUUX:+waldo}")); + assert_se(streq(r[15], "${FOO:+|waldo|}}")); + assert_se(streq(r[16], "${FOO:+|waldo{|}")); + assert_se(strv_length(r) == 17); } static void test_env_clean(void) { @@ -211,10 +316,16 @@ static void test_env_assignment_is_valid(void) { int main(int argc, char *argv[]) { test_strv_env_delete(); + test_strv_env_get(); test_strv_env_unset(); test_strv_env_set(); test_strv_env_merge(); - test_replace_env_arg(); + test_env_strv_get_n(); + test_replace_env(false); + test_replace_env(true); + test_replace_env2(false); + test_replace_env2(true); + test_replace_env_argv(); test_env_clean(); test_env_name_is_valid(); test_env_value_is_valid(); diff --git a/src/test/test-exec-util.c b/src/test/test-exec-util.c new file mode 100644 index 0000000000..482b0751b9 --- /dev/null +++ b/src/test/test-exec-util.c @@ -0,0 +1,348 @@ +/*** + This file is part of systemd. + + Copyright 2010 Lennart Poettering + Copyright 2013 Thomas H.P. Andersen + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <errno.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/wait.h> +#include <unistd.h> + +#include "alloc-util.h" +#include "copy.h" +#include "def.h" +#include "env-util.h" +#include "exec-util.h" +#include "fd-util.h" +#include "fileio.h" +#include "fs-util.h" +#include "log.h" +#include "macro.h" +#include "rm-rf.h" +#include "string-util.h" +#include "strv.h" + +static int here = 0, here2 = 0, here3 = 0; +void *ignore_stdout_args[] = {&here, &here2, &here3}; + +/* noop handlers, just check that arguments are passed correctly */ +static int ignore_stdout_func(int fd, void *arg) { + assert(fd >= 0); + assert(arg == &here); + safe_close(fd); + + return 0; +} +static int ignore_stdout_func2(int fd, void *arg) { + assert(fd >= 0); + assert(arg == &here2); + safe_close(fd); + + return 0; +} +static int ignore_stdout_func3(int fd, void *arg) { + assert(fd >= 0); + assert(arg == &here3); + safe_close(fd); + + return 0; +} + +static const gather_stdout_callback_t ignore_stdout[] = { + ignore_stdout_func, + ignore_stdout_func2, + ignore_stdout_func3, +}; + +static void test_execute_directory(bool gather_stdout) { + char template_lo[] = "/tmp/test-exec-util.XXXXXXX"; + char template_hi[] = "/tmp/test-exec-util.XXXXXXX"; + const char * dirs[] = {template_hi, template_lo, NULL}; + const char *name, *name2, *name3, *overridden, *override, *masked, *mask; + + log_info("/* %s (%s) */", __func__, gather_stdout ? "gathering stdout" : "asynchronous"); + + assert_se(mkdtemp(template_lo)); + assert_se(mkdtemp(template_hi)); + + name = strjoina(template_lo, "/script"); + name2 = strjoina(template_hi, "/script2"); + name3 = strjoina(template_lo, "/useless"); + overridden = strjoina(template_lo, "/overridden"); + override = strjoina(template_hi, "/overridden"); + masked = strjoina(template_lo, "/masked"); + mask = strjoina(template_hi, "/masked"); + + assert_se(write_string_file(name, + "#!/bin/sh\necho 'Executing '$0\ntouch $(dirname $0)/it_works", + WRITE_STRING_FILE_CREATE) == 0); + assert_se(write_string_file(name2, + "#!/bin/sh\necho 'Executing '$0\ntouch $(dirname $0)/it_works2", + WRITE_STRING_FILE_CREATE) == 0); + assert_se(write_string_file(overridden, + "#!/bin/sh\necho 'Executing '$0\ntouch $(dirname $0)/failed", + WRITE_STRING_FILE_CREATE) == 0); + assert_se(write_string_file(override, + "#!/bin/sh\necho 'Executing '$0", + WRITE_STRING_FILE_CREATE) == 0); + assert_se(write_string_file(masked, + "#!/bin/sh\necho 'Executing '$0\ntouch $(dirname $0)/failed", + WRITE_STRING_FILE_CREATE) == 0); + assert_se(symlink("/dev/null", mask) == 0); + assert_se(touch(name3) >= 0); + + assert_se(chmod(name, 0755) == 0); + assert_se(chmod(name2, 0755) == 0); + assert_se(chmod(overridden, 0755) == 0); + assert_se(chmod(override, 0755) == 0); + assert_se(chmod(masked, 0755) == 0); + + if (gather_stdout) + execute_directories(dirs, DEFAULT_TIMEOUT_USEC, ignore_stdout, ignore_stdout_args, NULL); + else + execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, NULL); + + assert_se(chdir(template_lo) == 0); + assert_se(access("it_works", F_OK) >= 0); + assert_se(access("failed", F_OK) < 0); + + assert_se(chdir(template_hi) == 0); + assert_se(access("it_works2", F_OK) >= 0); + assert_se(access("failed", F_OK) < 0); + + (void) rm_rf(template_lo, REMOVE_ROOT|REMOVE_PHYSICAL); + (void) rm_rf(template_hi, REMOVE_ROOT|REMOVE_PHYSICAL); +} + +static void test_execution_order(void) { + char template_lo[] = "/tmp/test-exec-util-lo.XXXXXXX"; + char template_hi[] = "/tmp/test-exec-util-hi.XXXXXXX"; + const char *dirs[] = {template_hi, template_lo, NULL}; + const char *name, *name2, *name3, *overridden, *override, *masked, *mask; + const char *output, *t; + _cleanup_free_ char *contents = NULL; + + assert_se(mkdtemp(template_lo)); + assert_se(mkdtemp(template_hi)); + + output = strjoina(template_hi, "/output"); + + log_info("/* %s >>%s */", __func__, output); + + /* write files in "random" order */ + name2 = strjoina(template_lo, "/90-bar"); + name = strjoina(template_hi, "/80-foo"); + name3 = strjoina(template_lo, "/last"); + overridden = strjoina(template_lo, "/30-override"); + override = strjoina(template_hi, "/30-override"); + masked = strjoina(template_lo, "/10-masked"); + mask = strjoina(template_hi, "/10-masked"); + + t = strjoina("#!/bin/sh\necho $(basename $0) >>", output); + assert_se(write_string_file(name, t, WRITE_STRING_FILE_CREATE) == 0); + + t = strjoina("#!/bin/sh\necho $(basename $0) >>", output); + assert_se(write_string_file(name2, t, WRITE_STRING_FILE_CREATE) == 0); + + t = strjoina("#!/bin/sh\necho $(basename $0) >>", output); + assert_se(write_string_file(name3, t, WRITE_STRING_FILE_CREATE) == 0); + + t = strjoina("#!/bin/sh\necho OVERRIDDEN >>", output); + assert_se(write_string_file(overridden, t, WRITE_STRING_FILE_CREATE) == 0); + + t = strjoina("#!/bin/sh\necho $(basename $0) >>", output); + assert_se(write_string_file(override, t, WRITE_STRING_FILE_CREATE) == 0); + + t = strjoina("#!/bin/sh\necho MASKED >>", output); + assert_se(write_string_file(masked, t, WRITE_STRING_FILE_CREATE) == 0); + + assert_se(symlink("/dev/null", mask) == 0); + + assert_se(chmod(name, 0755) == 0); + assert_se(chmod(name2, 0755) == 0); + assert_se(chmod(name3, 0755) == 0); + assert_se(chmod(overridden, 0755) == 0); + assert_se(chmod(override, 0755) == 0); + assert_se(chmod(masked, 0755) == 0); + + execute_directories(dirs, DEFAULT_TIMEOUT_USEC, ignore_stdout, ignore_stdout_args, NULL); + + assert_se(read_full_file(output, &contents, NULL) >= 0); + assert_se(streq(contents, "30-override\n80-foo\n90-bar\nlast\n")); + + (void) rm_rf(template_lo, REMOVE_ROOT|REMOVE_PHYSICAL); + (void) rm_rf(template_hi, REMOVE_ROOT|REMOVE_PHYSICAL); +} + +static int gather_stdout_one(int fd, void *arg) { + char ***s = arg, *t; + char buf[128] = {}; + + assert_se(s); + assert_se(read(fd, buf, sizeof buf) >= 0); + safe_close(fd); + + assert_se(t = strndup(buf, sizeof buf)); + assert_se(strv_push(s, t) >= 0); + + return 0; +} +static int gather_stdout_two(int fd, void *arg) { + char ***s = arg, **t; + + STRV_FOREACH(t, *s) + assert_se(write(fd, *t, strlen(*t)) == (ssize_t) strlen(*t)); + safe_close(fd); + + return 0; +} +static int gather_stdout_three(int fd, void *arg) { + char **s = arg; + char buf[128] = {}; + + assert_se(read(fd, buf, sizeof buf - 1) > 0); + safe_close(fd); + assert_se(*s = strndup(buf, sizeof buf)); + + return 0; +} + +const gather_stdout_callback_t const gather_stdout[] = { + gather_stdout_one, + gather_stdout_two, + gather_stdout_three, +}; + + +static void test_stdout_gathering(void) { + char template[] = "/tmp/test-exec-util.XXXXXXX"; + const char *dirs[] = {template, NULL}; + const char *name, *name2, *name3; + int r; + + char **tmp = NULL; /* this is only used in the forked process, no cleanup here */ + _cleanup_free_ char *output = NULL; + + void* args[] = {&tmp, &tmp, &output}; + + assert_se(mkdtemp(template)); + + log_info("/* %s */", __func__); + + /* write files */ + name = strjoina(template, "/10-foo"); + name2 = strjoina(template, "/20-bar"); + name3 = strjoina(template, "/30-last"); + + assert_se(write_string_file(name, + "#!/bin/sh\necho a\necho b\necho c\n", + WRITE_STRING_FILE_CREATE) == 0); + assert_se(write_string_file(name2, + "#!/bin/sh\necho d\n", + WRITE_STRING_FILE_CREATE) == 0); + assert_se(write_string_file(name3, + "#!/bin/sh\nsleep 1", + WRITE_STRING_FILE_CREATE) == 0); + + assert_se(chmod(name, 0755) == 0); + assert_se(chmod(name2, 0755) == 0); + assert_se(chmod(name3, 0755) == 0); + + r = execute_directories(dirs, DEFAULT_TIMEOUT_USEC, gather_stdout, args, NULL); + assert_se(r >= 0); + + log_info("got: %s", output); + + assert_se(streq(output, "a\nb\nc\nd\n")); +} + +static void test_environment_gathering(void) { + char template[] = "/tmp/test-exec-util.XXXXXXX", **p; + const char *dirs[] = {template, NULL}; + const char *name, *name2, *name3; + int r; + + char **tmp = NULL; /* this is only used in the forked process, no cleanup here */ + _cleanup_strv_free_ char **env = NULL; + + void* const args[] = { &tmp, &tmp, &env }; + + assert_se(mkdtemp(template)); + + log_info("/* %s */", __func__); + + /* write files */ + name = strjoina(template, "/10-foo"); + name2 = strjoina(template, "/20-bar"); + name3 = strjoina(template, "/30-last"); + + assert_se(write_string_file(name, + "#!/bin/sh\n" + "echo A=23\n", + WRITE_STRING_FILE_CREATE) == 0); + assert_se(write_string_file(name2, + "#!/bin/sh\n" + "echo A=22:$A\n\n\n", /* substitution from previous generator */ + WRITE_STRING_FILE_CREATE) == 0); + assert_se(write_string_file(name3, + "#!/bin/sh\n" + "echo A=$A:24\n" + "echo B=12\n" + "echo C=000\n" + "echo C=001\n" /* variable overwriting */ + /* various invalid entries */ + "echo unset A\n" + "echo unset A=\n" + "echo unset A=B\n" + "echo unset \n" + "echo A B=C\n" + "echo A\n" + /* test variable assignment without newline */ + "echo PATH=$PATH:/no/such/file", /* no newline */ + WRITE_STRING_FILE_CREATE) == 0); + + assert_se(chmod(name, 0755) == 0); + assert_se(chmod(name2, 0755) == 0); + assert_se(chmod(name3, 0755) == 0); + + r = execute_directories(dirs, DEFAULT_TIMEOUT_USEC, gather_environment, args, NULL); + assert_se(r >= 0); + + STRV_FOREACH(p, env) + log_info("got env: \"%s\"", *p); + + assert_se(streq(strv_env_get(env, "A"), "22:23:24")); + assert_se(streq(strv_env_get(env, "B"), "12")); + assert_se(streq(strv_env_get(env, "C"), "001")); + assert_se(endswith(strv_env_get(env, "PATH"), ":/no/such/file")); +} + +int main(int argc, char *argv[]) { + log_set_max_level(LOG_DEBUG); + log_parse_environment(); + log_open(); + + test_execute_directory(true); + test_execute_directory(false); + test_execution_order(); + test_stdout_gathering(); + test_environment_gathering(); + + return 0; +} diff --git a/src/test/test-execute.c b/src/test/test-execute.c index bc9a2021f9..90540b884b 100644 --- a/src/test/test-execute.c +++ b/src/test/test-execute.c @@ -35,6 +35,7 @@ #endif #include "stat-util.h" #include "test-helper.h" +#include "tests.h" #include "unit.h" #include "util.h" #include "virt.h" @@ -145,11 +146,11 @@ static void test_exec_privatetmp(Manager *m) { static void test_exec_privatedevices(Manager *m) { if (detect_container() > 0) { - log_notice("testing in container, skipping private device tests"); + log_notice("testing in container, skipping %s", __func__); return; } if (!is_inaccessible_available()) { - log_notice("testing without inaccessible, skipping private device tests"); + log_notice("testing without inaccessible, skipping %s", __func__); return; } @@ -158,12 +159,22 @@ static void test_exec_privatedevices(Manager *m) { } static void test_exec_privatedevices_capabilities(Manager *m) { + int r; + if (detect_container() > 0) { - log_notice("testing in container, skipping private device tests"); + log_notice("testing in container, skipping %s", __func__); return; } if (!is_inaccessible_available()) { - log_notice("testing without inaccessible, skipping private device tests"); + log_notice("testing without inaccessible, skipping %s", __func__); + return; + } + + /* We use capsh to test if the capabilities are + * properly set, so be sure that it exists */ + r = find_binary("capsh", NULL); + if (r < 0) { + log_error_errno(r, "Skipping %s, could not find capsh binary: %m", __func__); return; } @@ -174,15 +185,24 @@ static void test_exec_privatedevices_capabilities(Manager *m) { } static void test_exec_protectkernelmodules(Manager *m) { + int r; + if (detect_container() > 0) { - log_notice("testing in container, skipping protectkernelmodules tests"); + log_notice("testing in container, skipping %s", __func__); return; } if (!is_inaccessible_available()) { - log_notice("testing without inaccessible, skipping protectkernelmodules tests"); + log_notice("testing without inaccessible, skipping %s", __func__); return; } + r = find_binary("capsh", NULL); + if (r < 0) { + log_error_errno(r, "Skipping %s, could not find capsh binary: %m", __func__); + return; + } + + test(m, "exec-protectkernelmodules-no-capabilities.service", 0, CLD_EXITED); test(m, "exec-protectkernelmodules-yes-capabilities.service", 0, CLD_EXITED); test(m, "exec-protectkernelmodules-yes-mount-propagation.service", 0, CLD_EXITED); @@ -253,7 +273,7 @@ static void test_exec_systemcall_system_mode_with_user(Manager *m) { else if (getpwnam("nfsnobody")) test(m, "exec-systemcallfilter-system-user-nfsnobody.service", 0, CLD_EXITED); else - log_error_errno(errno, "Skipping test_exec_systemcall_system_mode_with_user, could not find nobody/nfsnobody user: %m"); + log_error_errno(errno, "Skipping %s, could not find nobody/nfsnobody user: %m", __func__); #endif } @@ -263,7 +283,7 @@ static void test_exec_user(Manager *m) { else if (getpwnam("nfsnobody")) test(m, "exec-user-nfsnobody.service", 0, CLD_EXITED); else - log_error_errno(errno, "Skipping test_exec_user, could not find nobody/nfsnobody user: %m"); + log_error_errno(errno, "Skipping %s, could not find nobody/nfsnobody user: %m", __func__); } static void test_exec_group(Manager *m) { @@ -272,7 +292,7 @@ static void test_exec_group(Manager *m) { else if (getgrnam("nfsnobody")) test(m, "exec-group-nfsnobody.service", 0, CLD_EXITED); else - log_error_errno(errno, "Skipping test_exec_group, could not find nobody/nfsnobody group: %m"); + log_error_errno(errno, "Skipping %s, could not find nobody/nfsnobody group: %m", __func__); } static void test_exec_supplementary_groups(Manager *m) { @@ -353,17 +373,15 @@ static void test_exec_runtimedirectory(Manager *m) { else if (getgrnam("nfsnobody")) test(m, "exec-runtimedirectory-owner-nfsnobody.service", 0, CLD_EXITED); else - log_error_errno(errno, "Skipping test_exec_runtimedirectory-owner, could not find nobody/nfsnobody group: %m"); + log_error_errno(errno, "Skipping %s, could not find nobody/nfsnobody group: %m", __func__); } static void test_exec_capabilityboundingset(Manager *m) { int r; - /* We use capsh to test if the capabilities are - * properly set, so be sure that it exists */ r = find_binary("capsh", NULL); if (r < 0) { - log_error_errno(r, "Skipping test_exec_capabilityboundingset, could not find capsh binary: %m"); + log_error_errno(r, "Skipping %s, could not find capsh binary: %m", __func__); return; } @@ -389,9 +407,9 @@ static void test_exec_capabilityambientset(Manager *m) { test(m, "exec-capabilityambientset-nfsnobody.service", 0, CLD_EXITED); test(m, "exec-capabilityambientset-merge-nfsnobody.service", 0, CLD_EXITED); } else - log_error_errno(errno, "Skipping test_exec_capabilityambientset, could not find nobody/nfsnobody user: %m"); + log_error_errno(errno, "Skipping %s, could not find nobody/nfsnobody user: %m", __func__); } else - log_error_errno(errno, "Skipping test_exec_capabilityambientset, the kernel does not support ambient capabilities: %m"); + log_error_errno(errno, "Skipping %s, the kernel does not support ambient capabilities: %m", __func__); } static void test_exec_privatenetwork(Manager *m) { @@ -399,7 +417,7 @@ static void test_exec_privatenetwork(Manager *m) { r = find_binary("ip", NULL); if (r < 0) { - log_error_errno(r, "Skipping test_exec_privatenetwork, could not find ip binary: %m"); + log_error_errno(r, "Skipping %s, could not find ip binary: %m", __func__); return; } @@ -422,6 +440,10 @@ static void test_exec_spec_interpolation(Manager *m) { test(m, "exec-spec-interpolation.service", 0, CLD_EXITED); } +static void test_exec_read_only_path_suceed(Manager *m) { + test(m, "exec-read-only-path-succeed.service", 0, CLD_EXITED); +} + static int run_tests(UnitFileScope scope, const test_function_t *tests) { const test_function_t *test = NULL; Manager *m = NULL; @@ -475,6 +497,7 @@ int main(int argc, char *argv[]) { test_exec_oomscoreadjust, test_exec_ioschedulingclass, test_exec_spec_interpolation, + test_exec_read_only_path_suceed, NULL, }; static const test_function_t system_tests[] = { @@ -494,7 +517,7 @@ int main(int argc, char *argv[]) { } assert_se(setenv("XDG_RUNTIME_DIR", "/tmp/", 1) == 0); - assert_se(set_unit_path(TEST_DIR "/test-execute/") >= 0); + assert_se(set_unit_path(get_testdata_dir("/test-execute")) >= 0); /* Unset VAR1, VAR2 and VAR3 which are used in the PassEnvironment test * cases, otherwise (and if they are present in the environment), diff --git a/src/test/test-fd-util.c b/src/test/test-fd-util.c index f555bb976c..4425b5fe5f 100644 --- a/src/test/test-fd-util.c +++ b/src/test/test-fd-util.c @@ -94,10 +94,20 @@ static void test_same_fd(void) { assert_se(same_fd(b, a) == 0); } +static void test_open_serialization_fd(void) { + _cleanup_close_ int fd = -1; + + fd = open_serialization_fd("test"); + assert_se(fd >= 0); + + write(fd, "test\n", 5); +} + int main(int argc, char *argv[]) { test_close_many(); test_close_nointr(); test_same_fd(); + test_open_serialization_fd(); return 0; } diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c index 56316904a3..b1d688c89e 100644 --- a/src/test/test-fileio.c +++ b/src/test/test-fileio.c @@ -71,6 +71,8 @@ static void test_parse_env_file(void) { "seven=\"sevenval\" #nocomment\n" "eight=eightval #nocomment\n" "export nine=nineval\n" + "ten=ignored\n" + "ten=ignored\n" "ten=", f); fflush(f); @@ -204,6 +206,113 @@ static void test_parse_multiline_env_file(void) { unlink(p); } +static void test_merge_env_file(void) { + char t[] = "/tmp/test-fileio-XXXXXX"; + int fd, r; + FILE *f; + _cleanup_strv_free_ char **a = NULL; + char **i; + + fd = mkostemp_safe(t); + assert_se(fd >= 0); + + log_info("/* %s (%s) */", __func__, t); + + f = fdopen(fd, "w"); + assert_se(f); + + r = write_string_stream(f, + "one=1 \n" + "twelve=${one}2\n" + "twentyone=2${one}\n" + "one=2\n" + "twentytwo=2${one}\n" + "xxx_minus_three=$xxx - 3\n" + "xxx=0x$one$one$one\n" + "yyy=${one:-fallback}\n" + "zzz=${one:+replacement}\n" + "zzzz=${foobar:-${nothing}}\n" + "zzzzz=${nothing:+${nothing}}\n" + , false); + assert(r >= 0); + + r = merge_env_file(&a, NULL, t); + assert_se(r >= 0); + strv_sort(a); + + STRV_FOREACH(i, a) + log_info("Got: <%s>", *i); + + assert_se(streq(a[0], "one=2")); + assert_se(streq(a[1], "twelve=12")); + assert_se(streq(a[2], "twentyone=21")); + assert_se(streq(a[3], "twentytwo=22")); + assert_se(streq(a[4], "xxx=0x222")); + assert_se(streq(a[5], "xxx_minus_three= - 3")); + assert_se(streq(a[6], "yyy=2")); + assert_se(streq(a[7], "zzz=replacement")); + assert_se(streq(a[8], "zzzz=")); + assert_se(streq(a[9], "zzzzz=")); + assert_se(a[10] == NULL); + + r = merge_env_file(&a, NULL, t); + assert_se(r >= 0); + strv_sort(a); + + STRV_FOREACH(i, a) + log_info("Got2: <%s>", *i); + + assert_se(streq(a[0], "one=2")); + assert_se(streq(a[1], "twelve=12")); + assert_se(streq(a[2], "twentyone=21")); + assert_se(streq(a[3], "twentytwo=22")); + assert_se(streq(a[4], "xxx=0x222")); + assert_se(streq(a[5], "xxx_minus_three=0x222 - 3")); + assert_se(streq(a[6], "yyy=2")); + assert_se(streq(a[7], "zzz=replacement")); + assert_se(streq(a[8], "zzzz=")); + assert_se(streq(a[9], "zzzzz=")); + assert_se(a[10] == NULL); +} + +static void test_merge_env_file_invalid(void) { + char t[] = "/tmp/test-fileio-XXXXXX"; + int fd, r; + FILE *f; + _cleanup_strv_free_ char **a = NULL; + char **i; + + fd = mkostemp_safe(t); + assert_se(fd >= 0); + + log_info("/* %s (%s) */", __func__, t); + + f = fdopen(fd, "w"); + assert_se(f); + + r = write_string_stream(f, + "unset one \n" + "unset one= \n" + "unset one=1 \n" + "one \n" + "one = \n" + "one two =\n" + "\x20two=\n" + "#comment=comment\n" + ";comment2=comment2\n" + "#\n" + "\n\n" /* empty line */ + , false); + assert(r >= 0); + + r = merge_env_file(&a, NULL, t); + assert_se(r >= 0); + + STRV_FOREACH(i, a) + log_info("Got: <%s>", *i); + + assert_se(strv_isempty(a)); +} static void test_executable_is_script(void) { char t[] = "/tmp/test-executable-XXXXXX"; @@ -555,11 +664,14 @@ static void test_tempfn(void) { } int main(int argc, char *argv[]) { + log_set_max_level(LOG_DEBUG); log_parse_environment(); log_open(); test_parse_env_file(); test_parse_multiline_env_file(); + test_merge_env_file(); + test_merge_env_file_invalid(); test_executable_is_script(); test_status_field(); test_capeff(); diff --git a/src/test/test-ipcrm.c b/src/test/test-ipcrm.c index 463e135e2b..ce6c7aa18a 100644 --- a/src/test/test-ipcrm.c +++ b/src/test/test-ipcrm.c @@ -24,7 +24,7 @@ int main(int argc, char *argv[]) { uid_t uid; int r; - const char* name = argv[1] ?: "nfsnobody"; + const char* name = argv[1] ?: NOBODY_USER_NAME; r = get_user_creds(&name, &uid, NULL, NULL, NULL); if (r < 0) { diff --git a/src/test/test-journal-importer.c b/src/test/test-journal-importer.c new file mode 100644 index 0000000000..a61212ce7b --- /dev/null +++ b/src/test/test-journal-importer.c @@ -0,0 +1,90 @@ +/*** + This file is part of systemd. + + Copyright 2016 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "log.h" +#include "journal-importer.h" +#include "string-util.h" +#include "tests.h" + +static void assert_iovec_entry(const struct iovec *iovec, const char* content) { + assert_se(strlen(content) == iovec->iov_len); + assert_se(memcmp(content, iovec->iov_base, iovec->iov_len) == 0); +} + +#define COREDUMP_PROC_GROUP \ + "COREDUMP_PROC_CGROUP=1:name=systemd:/\n" \ + "0::/user.slice/user-1002.slice/user@1002.service/gnome-terminal-server.service\n" + +static void test_basic_parsing(void) { + _cleanup_(journal_importer_cleanup) JournalImporter imp = {}; + int r; + + imp.fd = open(get_testdata_dir("/journal-data/journal-1.txt"), O_RDONLY|O_CLOEXEC); + assert_se(imp.fd >= 0); + + do + r = journal_importer_process_data(&imp); + while (r == 0 && !journal_importer_eof(&imp)); + assert_se(r == 1); + + /* We read one entry, so we should get EOF on next read, but not yet */ + assert_se(!journal_importer_eof(&imp)); + + assert_se(imp.iovw.count == 6); + assert_iovec_entry(&imp.iovw.iovec[0], "_BOOT_ID=1531fd22ec84429e85ae888b12fadb91"); + assert_iovec_entry(&imp.iovw.iovec[1], "_TRANSPORT=journal"); + assert_iovec_entry(&imp.iovw.iovec[2], COREDUMP_PROC_GROUP); + assert_iovec_entry(&imp.iovw.iovec[3], "COREDUMP_RLIMIT=-1"); + assert_iovec_entry(&imp.iovw.iovec[4], COREDUMP_PROC_GROUP); + assert_iovec_entry(&imp.iovw.iovec[5], "_SOURCE_REALTIME_TIMESTAMP=1478389147837945"); + + /* Let's check if we get EOF now */ + r = journal_importer_process_data(&imp); + assert_se(r == 0); + assert_se(journal_importer_eof(&imp)); +} + +static void test_bad_input(void) { + _cleanup_(journal_importer_cleanup) JournalImporter imp = {}; + int r; + + imp.fd = open(get_testdata_dir("/journal-data/journal-2.txt"), O_RDONLY|O_CLOEXEC); + assert_se(imp.fd >= 0); + + do + r = journal_importer_process_data(&imp); + while (!journal_importer_eof(&imp)); + assert_se(r == 0); /* If we don't have enough input, 0 is returned */ + + assert_se(journal_importer_eof(&imp)); +} + +int main(int argc, char **argv) { + log_set_max_level(LOG_DEBUG); + log_parse_environment(); + + test_basic_parsing(); + test_bad_input(); + + return 0; +} diff --git a/src/test/test-path.c b/src/test/test-path.c index 5e99d478ee..70ac6b3df3 100644 --- a/src/test/test-path.c +++ b/src/test/test-path.c @@ -262,8 +262,8 @@ int main(int argc, char *argv[]) { log_parse_environment(); log_open(); + assert_se(set_unit_path(get_testdata_dir("/test-path")) >= 0); assert_se(runtime_dir = setup_fake_runtime_dir()); - assert_se(set_unit_path(TEST_DIR "/test-path/") >= 0); for (test = tests; test && *test; test++) { int r; diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c index 7b37910c33..81d9abc2d5 100644 --- a/src/test/test-sched-prio.c +++ b/src/test/test-sched-prio.c @@ -34,10 +34,9 @@ int main(int argc, char *argv[]) { FDSet *fdset = NULL; int r; - assert_se(runtime_dir = setup_fake_runtime_dir()); - /* prepare the test */ - assert_se(set_unit_path(TEST_DIR) >= 0); + assert_se(set_unit_path(get_testdata_dir("")) >= 0); + assert_se(runtime_dir = setup_fake_runtime_dir()); r = manager_new(UNIT_FILE_USER, true, &m); if (MANAGER_SKIP_TEST(r)) { log_notice_errno(r, "Skipping test: manager_new: %m"); diff --git a/src/test/test-socket-util.c b/src/test/test-socket-util.c index d80613dc84..8ac1d7989f 100644 --- a/src/test/test-socket-util.c +++ b/src/test/test-socket-util.c @@ -456,6 +456,23 @@ static void test_sockaddr_un_len(void) { assert_se(SOCKADDR_UN_LEN(abstract) == offsetof(struct sockaddr_un, sun_path) + 1 + strlen(abstract.sun_path + 1)); } +static void test_in_addr_is_multicast(void) { + union in_addr_union a, b; + int f; + + assert_se(in_addr_from_string_auto("192.168.3.11", &f, &a) >= 0); + assert_se(in_addr_is_multicast(f, &a) == 0); + + assert_se(in_addr_from_string_auto("224.0.0.1", &f, &a) >= 0); + assert_se(in_addr_is_multicast(f, &a) == 1); + + assert_se(in_addr_from_string_auto("FF01:0:0:0:0:0:0:1", &f, &b) >= 0); + assert_se(in_addr_is_multicast(f, &b) == 1); + + assert_se(in_addr_from_string_auto("2001:db8::c:69b:aeff:fe53:743e", &f, &b) >= 0); + assert_se(in_addr_is_multicast(f, &b) == 0); +} + int main(int argc, char *argv[]) { log_set_max_level(LOG_DEBUG); @@ -482,5 +499,7 @@ int main(int argc, char *argv[]) { test_sockaddr_un_len(); + test_in_addr_is_multicast(); + return 0; } diff --git a/src/test/test-stat-util.c b/src/test/test-stat-util.c index a48dca99e1..3ff2aadea4 100644 --- a/src/test/test-stat-util.c +++ b/src/test/test-stat-util.c @@ -26,6 +26,7 @@ #include "fileio.h" #include "macro.h" #include "missing.h" +#include "mount-util.h" #include "stat-util.h" static void test_files_same(void) { @@ -69,8 +70,11 @@ static void test_path_is_os_tree(void) { } static void test_path_check_fstype(void) { - assert_se(path_check_fstype("/run", TMPFS_MAGIC) > 0); - assert_se(path_check_fstype("/run", BTRFS_SUPER_MAGIC) == 0); + /* run might not be a mount point in build chroots */ + if (path_is_mount_point("/run", NULL, AT_SYMLINK_FOLLOW) > 0) { + assert_se(path_check_fstype("/run", TMPFS_MAGIC) > 0); + assert_se(path_check_fstype("/run", BTRFS_SUPER_MAGIC) == 0); + } assert_se(path_check_fstype("/proc", PROC_SUPER_MAGIC) > 0); assert_se(path_check_fstype("/proc", BTRFS_SUPER_MAGIC) == 0); assert_se(path_check_fstype("/proc", BTRFS_SUPER_MAGIC) == 0); @@ -78,7 +82,9 @@ static void test_path_check_fstype(void) { } static void test_path_is_temporary_fs(void) { - assert_se(path_is_temporary_fs("/run") > 0); + /* run might not be a mount point in build chroots */ + if (path_is_mount_point("/run", NULL, AT_SYMLINK_FOLLOW) > 0) + assert_se(path_is_temporary_fs("/run") > 0); assert_se(path_is_temporary_fs("/proc") == 0); assert_se(path_is_temporary_fs("/i-dont-exist") == -ENOENT); } diff --git a/src/test/test-util.c b/src/test/test-util.c index 1b5cba86c1..f8bf0cb875 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -195,50 +195,6 @@ static void test_log2i(void) { assert_se(log2i(INT_MAX) == sizeof(int)*8-2); } -static void test_execute_directory(void) { - char template_lo[] = "/tmp/test-readlink_and_make_absolute-lo.XXXXXXX"; - char template_hi[] = "/tmp/test-readlink_and_make_absolute-hi.XXXXXXX"; - const char * dirs[] = {template_hi, template_lo, NULL}; - const char *name, *name2, *name3, *overridden, *override, *masked, *mask; - - assert_se(mkdtemp(template_lo)); - assert_se(mkdtemp(template_hi)); - - name = strjoina(template_lo, "/script"); - name2 = strjoina(template_hi, "/script2"); - name3 = strjoina(template_lo, "/useless"); - overridden = strjoina(template_lo, "/overridden"); - override = strjoina(template_hi, "/overridden"); - masked = strjoina(template_lo, "/masked"); - mask = strjoina(template_hi, "/masked"); - - assert_se(write_string_file(name, "#!/bin/sh\necho 'Executing '$0\ntouch $(dirname $0)/it_works", WRITE_STRING_FILE_CREATE) == 0); - assert_se(write_string_file(name2, "#!/bin/sh\necho 'Executing '$0\ntouch $(dirname $0)/it_works2", WRITE_STRING_FILE_CREATE) == 0); - assert_se(write_string_file(overridden, "#!/bin/sh\necho 'Executing '$0\ntouch $(dirname $0)/failed", WRITE_STRING_FILE_CREATE) == 0); - assert_se(write_string_file(override, "#!/bin/sh\necho 'Executing '$0", WRITE_STRING_FILE_CREATE) == 0); - assert_se(write_string_file(masked, "#!/bin/sh\necho 'Executing '$0\ntouch $(dirname $0)/failed", WRITE_STRING_FILE_CREATE) == 0); - assert_se(symlink("/dev/null", mask) == 0); - assert_se(chmod(name, 0755) == 0); - assert_se(chmod(name2, 0755) == 0); - assert_se(chmod(overridden, 0755) == 0); - assert_se(chmod(override, 0755) == 0); - assert_se(chmod(masked, 0755) == 0); - assert_se(touch(name3) >= 0); - - execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL); - - assert_se(chdir(template_lo) == 0); - assert_se(access("it_works", F_OK) >= 0); - assert_se(access("failed", F_OK) < 0); - - assert_se(chdir(template_hi) == 0); - assert_se(access("it_works2", F_OK) >= 0); - assert_se(access("failed", F_OK) < 0); - - (void) rm_rf(template_lo, REMOVE_ROOT|REMOVE_PHYSICAL); - (void) rm_rf(template_hi, REMOVE_ROOT|REMOVE_PHYSICAL); -} - static void test_raw_clone(void) { pid_t parent, pid, pid2; @@ -359,7 +315,6 @@ int main(int argc, char *argv[]) { test_protect_errno(); test_in_set(); test_log2i(); - test_execute_directory(); test_raw_clone(); test_physical_memory(); test_physical_memory_scale(); diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c index 553ef67011..281b1534a3 100644 --- a/src/timedate/timedatectl.c +++ b/src/timedate/timedatectl.c @@ -165,6 +165,8 @@ static int show_status(sd_bus *bus, char **args, unsigned n) { { "RTCTimeUSec", "t", NULL, offsetof(StatusInfo, rtc_time) }, {} }; + + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; int r; assert(bus); @@ -173,9 +175,10 @@ static int show_status(sd_bus *bus, char **args, unsigned n) { "org.freedesktop.timedate1", "/org/freedesktop/timedate1", map, + &error, &info); if (r < 0) - return log_error_errno(r, "Failed to query server: %m"); + return log_error_errno(r, "Failed to query server: %s", bus_error_message(&error, r)); print_status_info(&info); diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 490929e93b..1061b094d3 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -413,7 +413,7 @@ static int method_set_timezone(sd_bus_message *m, void *userdata, sd_bus_error * } log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_TIMEZONE_CHANGE), + "MESSAGE_ID=" SD_MESSAGE_TIMEZONE_CHANGE_STR, "TIMEZONE=%s", c->zone, LOG_MESSAGE("Changed time zone to '%s'.", c->zone), NULL); @@ -591,7 +591,7 @@ static int method_set_time(sd_bus_message *m, void *userdata, sd_bus_error *erro clock_set_hwclock(tm); log_struct(LOG_INFO, - LOG_MESSAGE_ID(SD_MESSAGE_TIME_CHANGE), + "MESSAGE_ID=" SD_MESSAGE_TIME_CHANGE_STR, "REALTIME="USEC_FMT, timespec_load(&ts), LOG_MESSAGE("Changed local time to %s", ctime(&ts.tv_sec)), NULL); diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index c4f4d46ca1..7326597b8c 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -872,7 +872,7 @@ static int parse_attribute_from_arg(Item *item) { { 's', FS_SECRM_FL }, /* Secure deletion */ { 'u', FS_UNRM_FL }, /* Undelete */ { 't', FS_NOTAIL_FL }, /* file tail should not be merged */ - { 'T', FS_TOPDIR_FL }, /* Top of directory hierarchies*/ + { 'T', FS_TOPDIR_FL }, /* Top of directory hierarchies */ { 'C', FS_NOCOW_FL }, /* Do not cow file */ }; @@ -1170,7 +1170,7 @@ static int create_item(Item *i) { return log_error_errno(r, "Failed to substitute specifiers in copy source %s: %m", i->argument); log_debug("Copying tree \"%s\" to \"%s\".", resolved, i->path); - r = copy_tree(resolved, i->path, false); + r = copy_tree(resolved, i->path, i->uid_set ? i->uid : UID_INVALID, i->gid_set ? i->gid : GID_INVALID, COPY_REFLINK); if (r == -EROFS && stat(i->path, &st) == 0) r = -EEXIST; diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c index 3c58445836..9037aa1304 100644 --- a/src/udev/udev-builtin-blkid.c +++ b/src/udev/udev-builtin-blkid.c @@ -122,7 +122,7 @@ static int find_gpt_root(struct udev_device *dev, blkid_probe pr, bool test) { errno = 0; pl = blkid_probe_get_partitions(pr); if (!pl) - return errno > 0 ? -errno : -ENOMEM; + return -errno ?: -ENOMEM; nvals = blkid_partlist_numof_partitions(pl); for (i = 0; i < nvals; i++) { @@ -193,7 +193,7 @@ static int probe_superblocks(blkid_probe pr) { int rc; if (fstat(blkid_probe_get_fd(pr), &st)) - return -1; + return -errno; blkid_probe_enable_partitions(pr, 1); diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 5be158f527..bd7b789cad 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -34,7 +34,8 @@ * * Type of names: * b<number> — BCMA bus core number - * c<bus_id> — CCW bus group name, without leading zeros [s390] + * c<bus_id> — bus id of a grouped CCW or CCW device, + * with all leading zeros stripped [s390] * o<index>[n<phys_port_name>|d<dev_port>] * — on-board device index number * s<slot>[f<function>][n<phys_port_name>|d<dev_port>] @@ -87,6 +88,11 @@ * /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/net/enp0s29u1u2 * ID_NET_NAME_MAC=enxd626b3450fb5 * ID_NET_NAME_PATH=enp0s29u1u2 + * + * s390 grouped CCW interface: + * /sys/devices/css0/0.0.0007/0.0.f5f0/group_device/net/encf5f0 + * ID_NET_NAME_MAC=enx026d3c00000a + * ID_NET_NAME_PATH=encf5f0 */ #include <errno.h> @@ -115,7 +121,7 @@ enum netname_type{ NET_USB, NET_BCMA, NET_VIRTIO, - NET_CCWGROUP, + NET_CCW, }; struct netnames { @@ -132,9 +138,21 @@ struct netnames { char usb_ports[IFNAMSIZ]; char bcma_core[IFNAMSIZ]; - char ccw_group[IFNAMSIZ]; + char ccw_busid[IFNAMSIZ]; }; +/* skip intermediate virtio devices */ +static struct udev_device *skip_virtio(struct udev_device *dev) { + struct udev_device *parent = dev; + + /* there can only ever be one virtio bus per parent device, so we can + safely ignore any virtio buses. see + <http://lists.linuxfoundation.org/pipermail/virtualization/2015-August/030331.html> */ + while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent))) + parent = udev_device_get_parent(parent); + return parent; +} + /* retrieve on-board index number and label from firmware */ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) { unsigned dev_port = 0; @@ -308,12 +326,8 @@ static int names_pci(struct udev_device *dev, struct netnames *names) { assert(names); parent = udev_device_get_parent(dev); - - /* there can only ever be one virtio bus per parent device, so we can - safely ignore any virtio buses. see - <http://lists.linuxfoundation.org/pipermail/virtualization/2015-August/030331.html> */ - while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent))) - parent = udev_device_get_parent(parent); + /* skip virtio subsystem if present */ + parent = skip_virtio(parent); if (!parent) return -ENOENT; @@ -412,8 +426,9 @@ static int names_bcma(struct udev_device *dev, struct netnames *names) { static int names_ccw(struct udev_device *dev, struct netnames *names) { struct udev_device *cdev; - const char *bus_id; + const char *bus_id, *subsys; size_t bus_id_len; + size_t bus_id_start; int rc; assert(dev); @@ -421,14 +436,17 @@ static int names_ccw(struct udev_device *dev, struct netnames *names) { /* Retrieve the associated CCW device */ cdev = udev_device_get_parent(dev); + /* skip virtio subsystem if present */ + cdev = skip_virtio(cdev); if (!cdev) return -ENOENT; - /* Network devices are always grouped CCW devices */ - if (!streq_ptr("ccwgroup", udev_device_get_subsystem(cdev))) + /* Network devices are either single or grouped CCW devices */ + subsys = udev_device_get_subsystem(cdev); + if (!STRPTR_IN_SET(subsys, "ccwgroup", "ccw")) return -ENOENT; - /* Retrieve bus-ID of the grouped CCW device. The bus-ID uniquely + /* Retrieve bus-ID of the CCW device. The bus-ID uniquely * identifies the network device on the Linux on System z channel * subsystem. Note that the bus-ID contains lowercase characters. */ @@ -447,14 +465,15 @@ static int names_ccw(struct udev_device *dev, struct netnames *names) { /* Strip leading zeros from the bus id for aesthetic purposes. This * keeps the ccw names stable, yet much shorter in general case of * bus_id 0.0.0600 -> 600. This is similar to e.g. how PCI domain is - * not prepended when it is zero. + * not prepended when it is zero. Preserve the last 0 for 0.0.0000. */ - bus_id += strspn(bus_id, ".0"); + bus_id_start = strspn(bus_id, ".0"); + bus_id += bus_id_start < bus_id_len ? bus_id_start : bus_id_len - 1; /* Store the CCW bus-ID for use as network device name */ - rc = snprintf(names->ccw_group, sizeof(names->ccw_group), "c%s", bus_id); - if (rc >= 0 && rc < (int)sizeof(names->ccw_group)) - names->type = NET_CCWGROUP; + rc = snprintf(names->ccw_busid, sizeof(names->ccw_busid), "c%s", bus_id); + if (rc >= 0 && rc < (int)sizeof(names->ccw_busid)) + names->type = NET_CCW; return 0; } @@ -564,10 +583,10 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool /* get path names for Linux on System z network devices */ err = names_ccw(dev, &names); - if (err >= 0 && names.type == NET_CCWGROUP) { + if (err >= 0 && names.type == NET_CCW) { char str[IFNAMSIZ]; - if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_group) < (int)sizeof(str)) + if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_busid) < (int)sizeof(str)) udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str); goto out; } diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c index 527f0bff2d..8cb330dba1 100644 --- a/src/udev/udev-builtin-path_id.c +++ b/src/udev/udev-builtin-path_id.c @@ -664,11 +664,8 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool parent = skip_subsystem(parent, "xen"); supported_parent = true; } else if (streq(subsys, "virtio")) { - while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent))) - parent = udev_device_get_parent(parent); - path_prepend(&path, "virtio-pci-%s", udev_device_get_sysname(parent)); + parent = skip_subsystem(parent, "virtio"); supported_transport = true; - supported_parent = true; } else if (streq(subsys, "scm")) { path_prepend(&path, "scm-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "scm"); diff --git a/src/udev/udevd.c b/src/udev/udevd.c index dd23054b0d..ce2ff89b85 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -1210,7 +1210,7 @@ static int on_sigchld(sd_event_source *s, const struct signalfd_siginfo *si, voi else log_warning("worker ["PID_FMT"] exited with return code %i", pid, WEXITSTATUS(status)); } else if (WIFSIGNALED(status)) { - log_warning("worker ["PID_FMT"] terminated by signal %i (%s)", pid, WTERMSIG(status), strsignal(WTERMSIG(status))); + log_warning("worker ["PID_FMT"] terminated by signal %i (%s)", pid, WTERMSIG(status), signal_to_string(WTERMSIG(status))); } else if (WIFSTOPPED(status)) { log_info("worker ["PID_FMT"] stopped", pid); continue; diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c index 48c2a3fff4..d466e1b759 100644 --- a/src/update-done/update-done.c +++ b/src/update-done/update-done.c @@ -26,7 +26,7 @@ #define MESSAGE \ "# This file was created by systemd-update-done. Its only \n" \ "# purpose is to hold a timestamp of the time this directory\n" \ - "# was updated. See systemd-update-done.service(8).\n" + "# was updated. See man:systemd-update-done.service(8).\n" static int apply_timestamp(const char *path, struct timespec *ts) { struct timespec twice[2] = { diff --git a/test/create-sys-script.py b/test/create-sys-script.py new file mode 100755 index 0000000000..4b7abd24ae --- /dev/null +++ b/test/create-sys-script.py @@ -0,0 +1,183 @@ +#!/usr/bin/python3 + +OUTFILE_HEADER = """#!/usr/bin/python3 +# +# create-sys-script.py +# +# (C) 2017 Canonical Ltd. +# Author: Dan Streetman <dan.streetman@canonical.com> +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see <http://www.gnu.org/licenses/>. +# +""" + +# Use this only to (re-)create the test/sys-script.py script, +# after adding or modifying anything in the test/sys/ directory + + +import os, sys, stat, tempfile, filecmp + + +OUTFILE = "sys-script.py" +OUTFILE_MODE = 0o775 + +OUTFILE_FUNCS = r""" +import os, sys + +def d(path, mode): + os.mkdir(path, mode) + +def l(path, src): + os.symlink(src, path) + +def f(path, mode, contents): + with open(path, "wb") as f: + f.write(contents) + os.chmod(path, mode) + +""" + +OUTFILE_MAIN = """ +if len(sys.argv) < 2: + exit("Usage: {} <target dir>".format(sys.argv[0])) + +if not os.path.isdir(sys.argv[1]): + exit("Target dir {} not found".format(sys.argv[1])) + +os.chdir(sys.argv[1]) + +""" + + +def handle_dir(outfile, path): + m = os.lstat(path).st_mode & 0o777 + outfile.write("d('{}', {:#o})\n".format(path, m)) + + +def handle_link(outfile, path): + src = os.readlink(path) + outfile.write("l('{}', '{}')\n".format(path, src)) + + +def escape_single_quotes(b): + # remove the b'' wrapping each line repr + r = repr(b)[2:-1] + # python escapes all ' only if there are ' and " in the string + if '"' not in r: + r = r.replace("'", r"\'") + # return line with all ' escaped + return r + + +def handle_file(outfile, path): + m = os.lstat(path).st_mode & 0o777 + with open(path, "rb") as f: + b = f.read() + if b.count(b"\n") > 1: + r = "\n".join([ escape_single_quotes(l) for l in b.split(b"\n") ]) + r = "b'''{r}'''".format(r=r) + else: + r = repr(b) + outfile.write("f('{}', {:#o}, {})\n".format(path, m, r)) + + +def process_sysdir(outfile): + for (dirpath, dirnames, filenames) in os.walk("sys"): + handle_dir(outfile, dirpath) + for d in dirnames: + path = os.path.join(dirpath, d) + if stat.S_ISLNK(os.lstat(path).st_mode): + handle_link(outfile, path) + for f in filenames: + path = os.path.join(dirpath, f) + mode = os.lstat(path).st_mode + if stat.S_ISLNK(mode): + handle_link(outfile, path) + elif stat.S_ISREG(mode): + handle_file(outfile, path) + + +def verify_dir(tmpd, path_a): + path_b = os.path.join(tmpd, path_a) + mode_a = os.lstat(path_a).st_mode + mode_b = os.lstat(path_b).st_mode + if not stat.S_ISDIR(mode_b): + raise Exception("Not directory") + if (mode_a & 0o777) != (mode_b & 0o777): + raise Exception("Permissions mismatch") + + +def verify_link(tmpd, path_a): + path_b = os.path.join(tmpd, path_a) + if not stat.S_ISLNK(os.lstat(path_b).st_mode): + raise Exception("Not symlink") + if os.readlink(path_a) != os.readlink(path_b): + raise Exception("Symlink dest mismatch") + + +def verify_file(tmpd, path_a): + path_b = os.path.join(tmpd, path_a) + mode_a = os.lstat(path_a).st_mode + mode_b = os.lstat(path_b).st_mode + if not stat.S_ISREG(mode_b): + raise Exception("Not file") + if (mode_a & 0o777) != (mode_b & 0o777): + raise Exception("Permissions mismatch") + if not filecmp.cmp(path_a, path_b, shallow=False): + raise Exception("File contents mismatch") + + +def verify_script(tmpd): + for (dirpath, dirnames, filenames) in os.walk("sys"): + try: + path = dirpath + verify_dir(tmpd, path) + for d in dirnames: + path = os.path.join(dirpath, d) + if stat.S_ISLNK(os.lstat(path).st_mode): + verify_link(tmpd, path) + for f in filenames: + path = os.path.join(dirpath, f) + mode = os.lstat(path).st_mode + if stat.S_ISLNK(mode): + verify_link(tmpd, path) + elif stat.S_ISREG(mode): + verify_file(tmpd, path) + except Exception: + print("FAIL on '{}'".format(path), file=sys.stderr) + raise + + +if __name__ == "__main__": + # Always operate in the dir where this script is + os.chdir(os.path.dirname(sys.argv[0])) + + if not os.path.isdir("sys"): + exit("No sys/ directory; please create before running this") + + print("Creating {} using contents of sys/".format(OUTFILE)) + + with open(OUTFILE, "w") as f: + os.chmod(OUTFILE, OUTFILE_MODE) + f.write(OUTFILE_HEADER.replace(os.path.basename(sys.argv[0]), OUTFILE)) + f.write(OUTFILE_FUNCS) + f.write(OUTFILE_MAIN) + process_sysdir(f) + + with tempfile.TemporaryDirectory() as tmpd: + print("Recreating sys/ using {} at {}".format(OUTFILE, tmpd)) + os.system("./{script} {tmpd}".format(script=OUTFILE, tmpd=tmpd)) + verify_script(tmpd) + + print("Verification successful, {} is correct".format(OUTFILE)) diff --git a/test/journal-data/journal-1.txt b/test/journal-data/journal-1.txt Binary files differnew file mode 100644 index 0000000000..92a9199a93 --- /dev/null +++ b/test/journal-data/journal-1.txt diff --git a/test/journal-data/journal-2.txt b/test/journal-data/journal-2.txt Binary files differnew file mode 100644 index 0000000000..4f582a0e88 --- /dev/null +++ b/test/journal-data/journal-2.txt diff --git a/test/networkd-test.py b/test/networkd-test.py index 8599398c1c..e0dddeb053 100755 --- a/test/networkd-test.py +++ b/test/networkd-test.py @@ -201,7 +201,11 @@ class ClientTestBase(NetworkdTestingUtilities): def do_test(self, coldplug=True, ipv6=False, extra_opts='', online_timeout=10, dhcp_mode='yes'): - subprocess.check_call(['systemctl', 'start', 'systemd-resolved']) + try: + subprocess.check_call(['systemctl', 'start', 'systemd-resolved']) + except subprocess.CalledProcessError: + self.show_journal('systemd-resolved.service') + raise self.write_network(self.config, '''\ [Match] Name=%s diff --git a/test/sys-script.py b/test/sys-script.py new file mode 100755 index 0000000000..a9c0046667 --- /dev/null +++ b/test/sys-script.py @@ -0,0 +1,16861 @@ +#!/usr/bin/python3 +# +# sys-script.py +# +# (C) 2017 Canonical Ltd. +# Author: Dan Streetman <dan.streetman@canonical.com> +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see <http://www.gnu.org/licenses/>. +# + +import os, sys + +def d(path, mode): + os.mkdir(path, mode) + +def l(path, src): + os.symlink(src, path) + +def f(path, mode, contents): + with open(path, "wb") as f: + f.write(contents) + os.chmod(path, mode) + + +if len(sys.argv) < 2: + exit("Usage: {} <target dir>".format(sys.argv[0])) + +if not os.path.isdir(sys.argv[1]): + exit("Target dir {} not found".format(sys.argv[1])) + +os.chdir(sys.argv[1]) + +d('sys', 0o755) +d('sys/kernel', 0o775) +f('sys/kernel/kexec_crash_loaded', 0o664, b'0\n') +f('sys/kernel/kexec_loaded', 0o664, b'0\n') +f('sys/kernel/uevent_helper', 0o664, b'\n') +f('sys/kernel/vmcoreinfo', 0o664, b'f15380 1000\n') +f('sys/kernel/notes', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00Z\r!\x804\xc2\x8atA<"f5(\xe7m\xe8-i-') +f('sys/kernel/uevent_seqnum', 0o664, b'1407\n') +d('sys/kernel/slab', 0o775) +d('sys/kernel/slab/kmalloc-96', 0o775) +f('sys/kernel/slab/kmalloc-96/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-96/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-96/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-96/slab_size', 0o664, b'168\n') +f('sys/kernel/slab/kmalloc-96/total_objects', 0o664, b'768\n') +f('sys/kernel/slab/kmalloc-96/slabs', 0o664, b'32\n') +f('sys/kernel/slab/kmalloc-96/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-96/alloc_calls', 0o664, b''' 5 sched_create_group+0x1f/0x220 age=8351870/8359354/8366881 pid=1333-2177 cpus=0-1 + 10 __register_sysctl_paths+0x56/0x340 age=8370387/8378535/8379888 pid=1-901 cpus=0-1 + 15 __create_workqueue_key+0x31/0x290 age=8370409/8377818/8380009 pid=1-900 cpus=0-1 + 59 load_module+0x19c0/0x1b30 age=8303111/8368469/8376350 pid=105-2754 cpus=0-1 + 5 __vmalloc_area_node+0xfb/0x140 age=8355400/8371519/8376226 pid=147-1813 cpus=0 + 22 __register_chrdev_region+0x2d/0x1a0 age=8309177/8375269/8380004 pid=1-2711 cpus=0-1 + 1 do_sys_poll+0xdb/0x450 age=9671 pid=2262 cpus=1 + 98 d_alloc+0x19d/0x1f0 age=22395/7516545/8376320 pid=317-13453 cpus=0-1 + 8 sys_eventfd2+0x51/0xb0 age=8339333/8339377/8339421 pid=2400 cpus=0 + 1 mb_cache_create+0x62/0x1f0 age=8379846 pid=1 cpus=1 + 9 sysfs_setattr+0x19a/0x1f0 age=61999/6511912/8377277 pid=63-13308 cpus=0-1 + 1 sysfs_open_file+0x1c5/0x230 age=0 pid=13466 cpus=0 + 17 copy_semundo+0x71/0xc0 age=3847042/8077586/8366263 pid=1370-2590 cpus=0-1 + 2 __crypto_alloc_tfm+0x43/0x1b0 age=8373678/8373678/8373678 pid=126 cpus=1 + 2 pcim_iomap_table+0x45/0x60 age=8379289/8379547/8379805 pid=1 cpus=0-1 + 26 pci_create_attr+0x3d/0x140 age=8378994/8378994/8378995 pid=1 cpus=0 + 8 pci_enable_msi+0xb1/0x2b0 age=8356336/8373963/8379844 pid=1-1541 cpus=0-1 + 1 fb_add_videomode+0x89/0xf0 age=8379841 pid=1 cpus=1 + 1 soft_cursor+0x92/0x220 age=8379841 pid=1 cpus=1 + 20 acpi_os_create_semaphore+0x36/0xaa age=8379969/8380118/8380142 pid=0-1 cpus=0 + 6 acpi_ds_build_internal_package_obj+0xaf/0x1df age=8379981/8379985/8379993 pid=1 cpus=0 + 2 acpi_ds_build_internal_buffer_obj+0xe1/0x121 age=8379986/8379986/8379987 pid=1 cpus=0 + 1 acpi_ev_create_gpe_block+0x5f/0x3bf age=8379999 pid=1 cpus=0 + 62 pnp_new_resource+0x25/0x60 age=8379891/8379894/8379895 pid=1 cpus=0 + 1 tty_register_driver+0x1b3/0x2a0 age=8379806 pid=1 cpus=1 + 5 kbd_connect+0x4e/0xe0 age=8374352/8375743/8379035 pid=17-341 cpus=0-1 + 17 __class_create+0x3d/0xa0 age=8374616/8377737/8380008 pid=1-215 cpus=0-1 + 2 scsi_probe_and_add_lun+0x65e/0xd80 age=8379084/8379252/8379421 pid=1 cpus=0-1 + 3 inet_rtm_newaddr+0xdb/0x220 age=8325560/8353789/8367912 pid=1197-1541 cpus=0-1 + 2 cache_add_dev+0x7c/0x546 age=8379855/8379855/8379856 pid=1 cpus=0 + 22 kernel_param_sysfs_setup+0x2f/0xc9 age=8380005/8380005/8380005 pid=1 cpus=0 + 15 acpi_system_init+0x12e/0x260 age=8379898/8379898/8379899 pid=1 cpus=0 + 1 pci_mmcfg_insert_resources+0x5d/0x123 age=8378994 pid=1 cpus=0 + 1 0xffffffffa0065104 age=8356008 pid=1766 cpus=0 + 1 bitmap_create+0x373/0xad0 [md_mod] age=8370145 pid=916 cpus=0 + 256 r1bio_pool_alloc+0x2f/0x60 [raid1] age=8370154/8370154/8370154 pid=916 cpus=0 + 8 ip6addrlbl_add+0x75/0x330 [ipv6] age=8360215/8360215/8360215 pid=1549 cpus=0 + 1 ip6_route_net_init+0x22/0xd0 [ipv6] age=8360216 pid=1549 cpus=0 + 6 snd_mixer_oss_build_input+0x431/0x5c0 [snd_mixer_oss] age=8355594/8355594/8355595 pid=1813 cpus=0 +''') +f('sys/kernel/slab/kmalloc-96/objs_per_slab', 0o664, b'24\n') +f('sys/kernel/slab/kmalloc-96/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-96/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-96/object_size', 0o664, b'96\n') +f('sys/kernel/slab/kmalloc-96/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-96/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-96/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-96/objects_partial', 0o664, b'95\n') +f('sys/kernel/slab/kmalloc-96/objects', 0o664, b'743\n') +f('sys/kernel/slab/kmalloc-96/order', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-96/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-96/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-96/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-96/partial', 0o664, b'5\n') +f('sys/kernel/slab/kmalloc-96/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-96/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-96/free_calls', 0o664, b''' 507 <not-available> age=4303047439 pid=0 cpus=0 + 1 free_notes_attrs+0x4b/0x50 age=8375086 pid=383 cpus=0 + 1 audit_send_list+0x88/0xa0 age=8361087 pid=1538 cpus=1 + 6 __vunmap+0xe9/0x120 age=8309178/8363011/8375091 pid=126-2711 cpus=0-1 + 1 do_sys_poll+0x32b/0x450 age=9672 pid=2262 cpus=1 + 30 d_callback+0x22/0x40 age=22587/7808930/8375651 pid=0-13433 cpus=0-1 + 20 sysfs_release+0x63/0xa0 age=22407/6699376/8376561 pid=165-13453 cpus=0-1 + 1 release_sysfs_dirent+0x22/0xd0 age=8367199 pid=1309 cpus=1 + 116 free_rb_tree_fname+0x5c/0xb0 age=53501/7931736/8376455 pid=163-13373 cpus=0-1 + 7 kobject_uevent_env+0x11a/0x470 age=67088/6542620/8379296 pid=1-419 cpus=0-1 + 1 msi_free_irqs+0xad/0x110 age=8356355 pid=1541 cpus=0 + 1 acpi_os_execute_deferred+0x34/0x39 age=8379958 pid=13 cpus=1 + 1 acpi_walk_resources+0xa4/0xbd age=8379895 pid=1 cpus=0 + 1 acpi_pci_irq_add_prt+0x30b/0x324 age=8379922 pid=1 cpus=0 + 6 scsi_execute_req+0x9f/0xf0 age=8335607/8359788/8379422 pid=1-1456 cpus=0-1 + 9 netlink_destroy_callback+0x21/0x30 age=8325561/8347615/8367913 pid=1197-2527 cpus=0-1 + 12 huft_free+0x1e/0x2f age=8379857/8379857/8379857 pid=1 cpus=0 + 2 r1bio_pool_free+0x9/0x10 [raid1] age=8364428/8364431/8364434 pid=0 cpus=0 +''') +f('sys/kernel/slab/kmalloc-96/aliases', 0o664, b'0\n') +d('sys/kernel/slab/blkdev_requests', 0o775) +f('sys/kernel/slab/blkdev_requests/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_requests/ctor', 0o664, b'') +f('sys/kernel/slab/blkdev_requests/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_requests/slab_size', 0o664, b'376\n') +f('sys/kernel/slab/blkdev_requests/total_objects', 0o664, b'84\n') +f('sys/kernel/slab/blkdev_requests/slabs', 0o664, b'4\n') +f('sys/kernel/slab/blkdev_requests/poison', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_requests/alloc_calls', 0o664, b' 12 mempool_alloc_slab+0x11/0x20 age=61529/5606309/8378864 pid=1-13295 cpus=0-1\n') +f('sys/kernel/slab/blkdev_requests/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/blkdev_requests/shrink', 0o664, b'') +f('sys/kernel/slab/blkdev_requests/trace', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_requests/object_size', 0o664, b'304\n') +f('sys/kernel/slab/blkdev_requests/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_requests/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_requests/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_requests/objects_partial', 0o664, b'8\n') +f('sys/kernel/slab/blkdev_requests/objects', 0o664, b'50\n') +f('sys/kernel/slab/blkdev_requests/order', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_requests/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_requests/store_user', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_requests/align', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_requests/partial', 0o664, b'2\n') +f('sys/kernel/slab/blkdev_requests/validate', 0o664, b'') +f('sys/kernel/slab/blkdev_requests/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_requests/free_calls', 0o664, b''' 7 <not-available> age=4303046881 pid=0 cpus=0 + 5 mempool_free_slab+0x12/0x20 age=63050/1742015/8378750 pid=0-1456 cpus=0 +''') +f('sys/kernel/slab/blkdev_requests/aliases', 0o664, b'0\n') +d('sys/kernel/slab/tw_sock_TCP', 0o775) +f('sys/kernel/slab/tw_sock_TCP/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCP/ctor', 0o664, b'') +f('sys/kernel/slab/tw_sock_TCP/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCP/slab_size', 0o664, b'256\n') +f('sys/kernel/slab/tw_sock_TCP/total_objects', 0o664, b'16\n') +f('sys/kernel/slab/tw_sock_TCP/slabs', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCP/poison', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCP/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/tw_sock_TCP/objs_per_slab', 0o664, b'16\n') +f('sys/kernel/slab/tw_sock_TCP/shrink', 0o664, b'') +f('sys/kernel/slab/tw_sock_TCP/trace', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCP/object_size', 0o664, b'136\n') +f('sys/kernel/slab/tw_sock_TCP/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCP/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCP/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCP/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCP/objects', 0o664, b'16\n') +f('sys/kernel/slab/tw_sock_TCP/order', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCP/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCP/store_user', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCP/align', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCP/partial', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCP/validate', 0o664, b'') +f('sys/kernel/slab/tw_sock_TCP/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCP/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/tw_sock_TCP/aliases', 0o664, b'0\n') +d('sys/kernel/slab/Acpi-Parse', 0o775) +f('sys/kernel/slab/Acpi-Parse/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Parse/ctor', 0o664, b'') +f('sys/kernel/slab/Acpi-Parse/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Parse/slab_size', 0o664, b'120\n') +f('sys/kernel/slab/Acpi-Parse/total_objects', 0o664, b'68\n') +f('sys/kernel/slab/Acpi-Parse/slabs', 0o664, b'2\n') +f('sys/kernel/slab/Acpi-Parse/poison', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Parse/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/Acpi-Parse/objs_per_slab', 0o664, b'34\n') +f('sys/kernel/slab/Acpi-Parse/shrink', 0o664, b'') +f('sys/kernel/slab/Acpi-Parse/trace', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Parse/object_size', 0o664, b'48\n') +f('sys/kernel/slab/Acpi-Parse/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Parse/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Parse/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Parse/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Parse/objects', 0o664, b'68\n') +f('sys/kernel/slab/Acpi-Parse/order', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Parse/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Parse/store_user', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Parse/align', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Parse/partial', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Parse/validate', 0o664, b'') +f('sys/kernel/slab/Acpi-Parse/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Parse/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/Acpi-Parse/aliases', 0o664, b'0\n') +d('sys/kernel/slab/sgpool-8', 0o775) +f('sys/kernel/slab/sgpool-8/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-8/ctor', 0o664, b'') +f('sys/kernel/slab/sgpool-8/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-8/slab_size', 0o664, b'384\n') +f('sys/kernel/slab/sgpool-8/total_objects', 0o664, b'42\n') +f('sys/kernel/slab/sgpool-8/slabs', 0o664, b'2\n') +f('sys/kernel/slab/sgpool-8/poison', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-8/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379297/8379297/8379297 pid=1 cpus=0\n') +f('sys/kernel/slab/sgpool-8/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/sgpool-8/shrink', 0o664, b'') +f('sys/kernel/slab/sgpool-8/trace', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-8/object_size', 0o664, b'256\n') +f('sys/kernel/slab/sgpool-8/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-8/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-8/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-8/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-8/objects', 0o664, b'42\n') +f('sys/kernel/slab/sgpool-8/order', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-8/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-8/store_user', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-8/align', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-8/partial', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-8/validate', 0o664, b'') +f('sys/kernel/slab/sgpool-8/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-8/free_calls', 0o664, b' 2 <not-available> age=4303046847 pid=0 cpus=0\n') +f('sys/kernel/slab/sgpool-8/aliases', 0o664, b'0\n') +d('sys/kernel/slab/dnotify_cache', 0o775) +f('sys/kernel/slab/dnotify_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/ctor', 0o664, b'') +f('sys/kernel/slab/dnotify_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/slab_size', 0o664, b'112\n') +f('sys/kernel/slab/dnotify_cache/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/slabs', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/dnotify_cache/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/dnotify_cache/objs_per_slab', 0o664, b'36\n') +f('sys/kernel/slab/dnotify_cache/shrink', 0o664, b'') +f('sys/kernel/slab/dnotify_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/object_size', 0o664, b'40\n') +f('sys/kernel/slab/dnotify_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/objects', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/dnotify_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/dnotify_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/dnotify_cache/validate', 0o664, b'') +f('sys/kernel/slab/dnotify_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/dnotify_cache/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/dnotify_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-16', 0o775) +f('sys/kernel/slab/kmalloc-16/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-16/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-16/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-16/slab_size', 0o664, b'88\n') +f('sys/kernel/slab/kmalloc-16/total_objects', 0o664, b'2254\n') +f('sys/kernel/slab/kmalloc-16/slabs', 0o664, b'49\n') +f('sys/kernel/slab/kmalloc-16/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-16/alloc_calls', 0o664, b''' 2 arch_acpi_processor_init_pdc+0x71/0x180 age=8375737/8375768/8375799 pid=330 cpus=0 + 2 arch_acpi_processor_init_pdc+0xab/0x180 age=8375737/8375768/8375799 pid=330 cpus=0 + 5 sched_create_group+0x40/0x220 age=8351840/8359324/8366851 pid=1333-2177 cpus=0-1 + 5 sched_create_group+0x62/0x220 age=8351840/8359324/8366851 pid=1333-2177 cpus=0-1 + 2 setup_modinfo_version+0x19/0x30 age=8374630/8375434/8376238 pid=122-126 cpus=0-1 + 365 load_module+0x1ac4/0x1b30 age=8303081/8369498/8376320 pid=105-2754 cpus=0-1 + 13 mempool_create_node+0x4b/0xf0 age=8379859/8379929/8379974 pid=1 cpus=0 + 1 krealloc+0x1e/0x60 age=8375802 pid=330 cpus=0 + 4 __vmalloc_area_node+0xfb/0x140 age=8374701/8375120/8375833 pid=126-392 cpus=0 + 7 alloc_vfsmnt+0x97/0x180 age=61473/7184623/8379853 pid=1-13348 cpus=0-1 + 2 proc_symlink+0x4d/0xb0 age=8380112/8380112/8380112 pid=0 cpus=0 + 1275 sysfs_new_dirent+0x10c/0x120 age=22645/7761348/8379979 pid=1-13295 cpus=0-1 + 2 ext3_fill_super+0x691/0x1a20 age=8369671/8374021/8378371 pid=1-962 cpus=0 + 406 kvasprintf+0x55/0x90 age=22645/7760583/8380112 pid=0-13295 cpus=0-1 + 1 bit_cursor+0x223/0x6a0 age=8356170 pid=7 cpus=0 + 12 acpi_ds_build_internal_package_obj+0xaf/0x1df age=8379944/8379946/8379954 pid=1 cpus=0 + 14 acpi_ds_build_internal_buffer_obj+0xe1/0x121 age=8379945/8379955/8379961 pid=1 cpus=0 + 2 acpi_ut_copy_simple_object+0x8f/0x11c age=8375657/8375665/8375674 pid=396 cpus=0 + 5 acpi_irq_stats_init+0x1bd/0x268 age=8379969/8379969/8379969 pid=1 cpus=0 + 14 pnp_add_id+0x1e/0xe0 age=8379861/8379863/8379866 pid=1 cpus=0 + 9 reserve_range+0x39/0x130 age=8379850/8379850/8379850 pid=1 cpus=0 + 1 trackpoint_detect+0x94/0x190 age=8378732 pid=17 cpus=0 + 2 proto_register+0xf2/0x260 age=8360199/8370021/8379844 pid=1-1549 cpus=0 + 2 neigh_sysctl_register+0x1cd/0x330 age=8360183/8366975/8373768 pid=126-1549 cpus=0-1 + 1 nl_pid_hash_rehash+0x180/0x1a0 age=8361057 pid=1533 cpus=0 + 1 genl_register_family+0x1b6/0x1e0 age=8379853 pid=1 cpus=0 + 1 __devinet_sysctl_register+0xb8/0x120 age=8373768 pid=126 cpus=1 + 1 pci_acpi_scan_root+0x3f/0x230 age=8379897 pid=1 cpus=0 + 1 acpi_parse_mcfg+0x61/0x140 age=8379976 pid=1 cpus=0 + 1 pci_mmcfg_arch_init+0x26/0x129 age=8379976 pid=1 cpus=0 + 1 icmp_sk_init+0x32/0x13f age=8379826 pid=1 cpus=0 + 5 hub_probe+0x26b/0x820 [usbcore] age=8374065/8374558/8374911 pid=143-147 cpus=0-1 + 12 usb_cache_string+0x65/0xa0 [usbcore] age=22646/4900582/8374931 pid=143-419 cpus=0-1 + 1 usb_create_ep_files+0x283/0x350 [usbcore] age=8374798 pid=143 cpus=0 + 1 0xffffffffa006595f age=8360191 pid=1549 cpus=0 + 13 snd_info_create_entry+0x30/0xa0 [snd] age=8355564/8372743/8374175 pid=107-1813 cpus=0-1 + 1 snd_oss_info_register+0x40/0xc0 [snd] age=8374813 pid=107 cpus=1 + 1 async_chainiv_givencrypt+0xf9/0x110 [crypto_blkcipher] age=8374570 pid=215 cpus=0 + 1 eseqiv_alloc+0x6d/0x80 [crypto_blkcipher] age=8374570 pid=215 cpus=0 + 1 run+0xa9/0x500 [raid1] age=8370124 pid=916 cpus=0 + 1 __addrconf_sysctl_register+0xcd/0x140 [ipv6] age=8360183 pid=1549 cpus=0 +''') +f('sys/kernel/slab/kmalloc-16/objs_per_slab', 0o664, b'46\n') +f('sys/kernel/slab/kmalloc-16/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-16/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-16/object_size', 0o664, b'16\n') +f('sys/kernel/slab/kmalloc-16/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-16/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-16/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-16/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-16/objects', 0o664, b'2254\n') +f('sys/kernel/slab/kmalloc-16/order', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-16/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-16/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-16/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-16/partial', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-16/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-16/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-16/free_calls', 0o664, b''' 1912 <not-available> age=4303047409 pid=0 cpus=0 + 2 free_sched_group+0x62/0x80 age=8375109/8375395/8375681 pid=0-72 cpus=0-1 + 2 free_sched_group+0x6b/0x80 age=8375109/8375395/8375681 pid=0-72 cpus=0-1 + 3 free_sect_attrs+0x2e/0x50 age=8375055/8375055/8375055 pid=383 cpus=0 + 3 __vunmap+0xe9/0x120 age=8373650/8374619/8375152 pid=181-754 cpus=0 + 7 vfs_rename+0x301/0x450 age=125333/5028818/8367033 pid=829-13249 cpus=0 + 10 bio_free_map_data+0x14/0x30 age=23581/2550049/8379364 pid=0-1738 cpus=0-1 + 10 bio_free_map_data+0x1d/0x30 age=53581/4218001/8379379 pid=0-558 cpus=0-1 + 60 remove_kevent+0x44/0x60 age=61364/3011504/8354072 pid=1547-2544 cpus=0-1 + 49 release_sysfs_dirent+0x8c/0xd0 age=7824392/8263442/8379778 pid=1-2141 cpus=0-1 + 9 kobject_release+0xe1/0x140 age=7833231/8247578/8373891 pid=419-1541 cpus=0-1 + 70 kobject_uevent_env+0x11a/0x470 age=409229/8261185/8379979 pid=1-12942 cpus=0-1 + 2 bit_cursor+0x23b/0x6a0 age=8356171/8367984/8379797 pid=1-7 cpus=0-1 + 1 acpi_ds_create_operand+0x12c/0x209 age=8379867 pid=1 cpus=0 + 2 acpi_ns_get_node+0x92/0xa1 age=8374467/8374504/8374542 pid=215 cpus=0-1 + 8 acpi_ut_delete_internal_obj+0x15f/0x16f age=8366439/8374588/8375781 pid=330-1358 cpus=0 + 16 acpi_ut_delete_internal_object_list+0x28/0x2f age=8374469/8378935/8379920 pid=1-396 cpus=0 + 2 reserve_range+0x11d/0x130 age=8379851/8379851/8379851 pid=1 cpus=0 + 3 release_firmware+0x57/0x70 age=8356214/8363521/8367182 pid=1285-1541 cpus=0-1 + 8 module_add_driver+0x66/0xd0 age=8373538/8375876/8379266 pid=1-181 cpus=0-1 + 1 power_supply_uevent+0x1a0/0x210 age=8375647 pid=7 cpus=0 + 2 get_modalias+0xd4/0x120 age=8355835/8367906/8379977 pid=1-1772 cpus=0 + 1 nl_pid_hash_rehash+0x18e/0x1a0 age=8356437 pid=1708 cpus=0 + 2 fib_hash_free+0x35/0x40 age=8367899/8367899/8367899 pid=1185 cpus=0 + 2 wireless_send_event+0x172/0x330 age=8329605/8342854/8356103 pid=1545 cpus=0-1 + 10 usb_get_configuration+0x42d/0x1480 [usbcore] age=22733/6708190/8374932 pid=143-419 cpus=0-1 +''') +f('sys/kernel/slab/kmalloc-16/aliases', 0o664, b'0\n') +d('sys/kernel/slab/filp', 0o775) +f('sys/kernel/slab/filp/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/filp/ctor', 0o664, b'') +f('sys/kernel/slab/filp/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/filp/slab_size', 0o664, b'384\n') +f('sys/kernel/slab/filp/total_objects', 0o664, b'4158\n') +f('sys/kernel/slab/filp/slabs', 0o664, b'198\n') +f('sys/kernel/slab/filp/poison', 0o664, b'1\n') +f('sys/kernel/slab/filp/alloc_calls', 0o664, b' 4081 get_empty_filp+0x44/0x1a0 age=0/7917861/8378089 pid=1-20296 cpus=0-1\n') +f('sys/kernel/slab/filp/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/filp/shrink', 0o664, b'') +f('sys/kernel/slab/filp/trace', 0o664, b'0\n') +f('sys/kernel/slab/filp/object_size', 0o664, b'288\n') +f('sys/kernel/slab/filp/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/filp/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/filp/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/filp/objects_partial', 0o664, b'685\n') +f('sys/kernel/slab/filp/objects', 0o664, b'4064\n') +f('sys/kernel/slab/filp/order', 0o664, b'1\n') +f('sys/kernel/slab/filp/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/filp/store_user', 0o664, b'1\n') +f('sys/kernel/slab/filp/align', 0o664, b'0\n') +f('sys/kernel/slab/filp/partial', 0o664, b'33\n') +f('sys/kernel/slab/filp/validate', 0o664, b'') +f('sys/kernel/slab/filp/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/filp/free_calls', 0o664, b''' 866 <not-available> age=4303047162 pid=0 cpus=0 + 3217 file_free_rcu+0x16/0x20 age=10/7799670/8377025 pid=0-20296 cpus=0-1 +''') +f('sys/kernel/slab/filp/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-2048', 0o775) +f('sys/kernel/slab/kmalloc-2048/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-2048/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-2048/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-2048/slab_size', 0o664, b'2120\n') +f('sys/kernel/slab/kmalloc-2048/total_objects', 0o664, b'600\n') +f('sys/kernel/slab/kmalloc-2048/slabs', 0o664, b'40\n') +f('sys/kernel/slab/kmalloc-2048/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-2048/alloc_calls', 0o664, b''' 53 load_module+0x18d5/0x1b30 age=8303006/8368517/8376245 pid=105-2754 cpus=0-1 + 1 mempool_create_node+0x4b/0xf0 age=8370049 pid=916 cpus=0 + 20 sget+0xc4/0x460 age=61397/7958673/8380037 pid=0-13348 cpus=0-1 + 15 alloc_fdtable+0x81/0x160 age=4219/6197046/8357231 pid=1532-12336 cpus=0-1 + 2 journal_init_common+0x1a/0x130 age=8369592/8373942/8378292 pid=1-962 cpus=0 + 15 alloc_disk_node+0x1b/0x120 age=61949/7263912/8379312 pid=1-13295 cpus=0-1 + 1 pci_create_bus+0x3a/0x240 age=8379822 pid=1 cpus=0 + 21 alloc_pci_dev+0x1a/0x40 age=8379818/8379820/8379822 pid=1 cpus=0 + 1 framebuffer_alloc+0x3a/0x80 age=8379737 pid=1 cpus=1 + 74 acpi_add_single_object+0x4e/0xd3c age=8379823/8379836/8379852 pid=1 cpus=0 + 1 acpi_irq_stats_init+0xcb/0x268 age=8379894 pid=1 cpus=0 + 11 pnp_alloc_dev+0x35/0x120 age=8379786/8379789/8379791 pid=1 cpus=0 + 11 init_dev+0x12e/0x6f0 age=7217110/8250882/8378132 pid=33-2593 cpus=0-1 + 3 init_dev+0x2aa/0x6f0 age=7217110/7969221/8364310 pid=1258-2593 cpus=0-1 + 1 tty_register_driver+0x1b3/0x2a0 age=8379706 pid=1 cpus=1 + 2 tty_write+0x160/0x280 age=913316/4463710/8014104 pid=1206-3110 cpus=0 + 2 kobj_map_init+0x22/0xa0 age=8379899/8379968/8380037 pid=0-1 cpus=0 + 3 mousedev_create+0x36/0x2d0 age=53460/5603607/8378947 pid=1-419 cpus=0 + 1 atkbd_connect+0x33/0x290 age=8378940 pid=17 cpus=1 + 2 thermal_zone_device_register+0x6f/0x310 age=8374790/8374807/8374825 pid=329 cpus=0-1 + 15 sk_prot_alloc+0x83/0xb0 age=8328308/8367505/8379903 pid=1-2586 cpus=0-1 + 1 reqsk_queue_alloc+0x112/0x120 age=8356786 pid=1690 cpus=0 + 255 __netdev_alloc_skb+0x1f/0x40 age=8356300/8356301/8356303 pid=1541 cpus=0 + 10 neigh_sysctl_register+0x8d/0x330 age=8360107/8368337/8379760 pid=1-1549 cpus=0-1 + 6 __devinet_sysctl_register+0x74/0x120 age=8373573/8377097/8379760 pid=1-126 cpus=0-1 + 7 pci_add_new_bus+0x25/0x160 age=8379818/8379818/8379820 pid=1 cpus=0 + 1 i8042_create_aux_port+0x36/0x10f age=8378959 pid=1 cpus=0 + 1 i8042_probe+0x190/0x68d age=8378959 pid=1 cpus=0 + 1 netdev_init+0x32/0xc2 age=8379782 pid=1 cpus=0 + 1 netdev_init+0x66/0xc2 age=8379782 pid=1 cpus=0 + 1 fib_net_init+0x21/0x14c age=8379760 pid=1 cpus=0 + 10 usb_alloc_dev+0x36/0x2c0 [usbcore] age=22875/5876181/8374868 pid=143-419 cpus=0-1 + 2 acpi_thermal_add+0x36/0x4bb [thermal] age=8374792/8374809/8374827 pid=329 cpus=0-1 + 5 evdev_open+0xaf/0x1e0 [evdev] age=8364377/8364927/8365226 pid=1443 cpus=0-1 + 8 evdev_connect+0x54/0x1f0 [evdev] age=53452/7334685/8375002 pid=187-419 cpus=0-1 + 1 rtc_device_register+0xa4/0x260 [rtc_core] age=8374707 pid=208 cpus=0 + 1 iwl3945_bg_request_scan+0x5d3/0x660 [iwl3945] age=8356027 pid=733 cpus=0 + 1 iwl3945_pci_probe+0xd26/0x1020 [iwl3945] age=8373700 pid=126 cpus=1 + 1 patch_ad1981+0x1b/0x1d0 [snd_hda_intel] age=8374101 pid=107 cpus=1 + 1 rfkill_allocate+0x24/0xc0 [rfkill] age=8374401 pid=215 cpus=0 + 1 fuse_fill_super+0x26d/0x6d0 [fuse] age=8335736 pid=2476 cpus=0 +''') +f('sys/kernel/slab/kmalloc-2048/objs_per_slab', 0o664, b'15\n') +f('sys/kernel/slab/kmalloc-2048/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-2048/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-2048/object_size', 0o664, b'2048\n') +f('sys/kernel/slab/kmalloc-2048/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-2048/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-2048/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-2048/objects_partial', 0o664, b'59\n') +f('sys/kernel/slab/kmalloc-2048/objects', 0o664, b'584\n') +f('sys/kernel/slab/kmalloc-2048/order', 0o664, b'3\n') +f('sys/kernel/slab/kmalloc-2048/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-2048/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-2048/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-2048/partial', 0o664, b'5\n') +f('sys/kernel/slab/kmalloc-2048/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-2048/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-2048/free_calls', 0o664, b''' 424 <not-available> age=4303047334 pid=0 cpus=0 + 1 __vunmap+0xe9/0x120 age=8374513 pid=107 cpus=1 + 79 free_fdtable_rcu+0x71/0xb0 age=7254/7749386/8377555 pid=0-13365 cpus=0-1 + 4 show_stat+0x50e/0x530 age=23516/2125165/8360113 pid=1258-1868 cpus=0 + 4 acpi_add_single_object+0xc9a/0xd3c age=8379824/8379831/8379839 pid=1 cpus=0 + 20 release_one_tty+0x145/0x190 age=8352386/8360775/8370275 pid=55-2136 cpus=0-1 + 1 atkbd_connect+0x1ae/0x290 age=8378923 pid=17 cpus=0 + 8 sk_free+0xcd/0x100 age=656267/7395001/8360982 pid=1533-12333 cpus=0-1 + 18 skb_release_data+0x85/0xd0 age=61516/7352252/8379750 pid=1-13343 cpus=0-1 + 5 __scm_destroy+0x41/0x50 age=7217111/8111550/8352414 pid=2135-2593 cpus=0-1 + 1 huft_build+0x163/0x63e age=8379752 pid=1 cpus=0 + 1 inflate_fixed+0x17c/0x193 age=8379752 pid=1 cpus=0 + 1 usb_release_dev+0x59/0x70 [usbcore] age=53835 pid=419 cpus=0 + 1 acpi_processor_get_throttling_info+0x2e4/0x58c [processor] age=8375644 pid=330 cpus=0 + 1 acpi_thermal_add+0x457/0x4bb [thermal] age=8374828 pid=329 cpus=1 + 1 snd_ctl_ioctl+0x2cf/0x960 [snd] age=8373099 pid=786 cpus=0 +''') +f('sys/kernel/slab/kmalloc-2048/aliases', 0o664, b'0\n') +d('sys/kernel/slab/cfq_queue', 0o775) +f('sys/kernel/slab/cfq_queue/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/cfq_queue/ctor', 0o664, b'') +f('sys/kernel/slab/cfq_queue/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/cfq_queue/slab_size', 0o664, b'208\n') +f('sys/kernel/slab/cfq_queue/total_objects', 0o664, b'95\n') +f('sys/kernel/slab/cfq_queue/slabs', 0o664, b'5\n') +f('sys/kernel/slab/cfq_queue/poison', 0o664, b'1\n') +f('sys/kernel/slab/cfq_queue/alloc_calls', 0o664, b' 67 cfq_get_queue+0xc6/0x220 age=168/7825503/8379604 pid=1-13466 cpus=0-1\n') +f('sys/kernel/slab/cfq_queue/objs_per_slab', 0o664, b'19\n') +f('sys/kernel/slab/cfq_queue/shrink', 0o664, b'') +f('sys/kernel/slab/cfq_queue/trace', 0o664, b'0\n') +f('sys/kernel/slab/cfq_queue/object_size', 0o664, b'136\n') +f('sys/kernel/slab/cfq_queue/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/cfq_queue/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/cfq_queue/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/cfq_queue/objects_partial', 0o664, b'35\n') +f('sys/kernel/slab/cfq_queue/objects', 0o664, b'92\n') +f('sys/kernel/slab/cfq_queue/order', 0o664, b'0\n') +f('sys/kernel/slab/cfq_queue/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/cfq_queue/store_user', 0o664, b'1\n') +f('sys/kernel/slab/cfq_queue/align', 0o664, b'8\n') +f('sys/kernel/slab/cfq_queue/partial', 0o664, b'2\n') +f('sys/kernel/slab/cfq_queue/validate', 0o664, b'') +f('sys/kernel/slab/cfq_queue/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/cfq_queue/free_calls', 0o664, b''' 11 <not-available> age=4303047621 pid=0 cpus=0 + 56 cfq_put_queue+0x6f/0xe0 age=45755/7905388/8375272 pid=163-26529 cpus=0-1 +''') +f('sys/kernel/slab/cfq_queue/aliases', 0o664, b'0\n') +d('sys/kernel/slab/ext3_xattr', 0o775) +f('sys/kernel/slab/ext3_xattr/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/ext3_xattr/ctor', 0o664, b'') +f('sys/kernel/slab/ext3_xattr/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/ext3_xattr/slab_size', 0o664, b'160\n') +f('sys/kernel/slab/ext3_xattr/total_objects', 0o664, b'25\n') +f('sys/kernel/slab/ext3_xattr/slabs', 0o664, b'1\n') +f('sys/kernel/slab/ext3_xattr/poison', 0o664, b'1\n') +f('sys/kernel/slab/ext3_xattr/alloc_calls', 0o664, b' 4 mb_cache_entry_alloc+0x15/0x50 age=5766034/7671829/8319899 pid=2676-9046 cpus=0\n') +f('sys/kernel/slab/ext3_xattr/objs_per_slab', 0o664, b'25\n') +f('sys/kernel/slab/ext3_xattr/shrink', 0o664, b'') +f('sys/kernel/slab/ext3_xattr/trace', 0o664, b'0\n') +f('sys/kernel/slab/ext3_xattr/object_size', 0o664, b'88\n') +f('sys/kernel/slab/ext3_xattr/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/ext3_xattr/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/ext3_xattr/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/ext3_xattr/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/ext3_xattr/objects', 0o664, b'25\n') +f('sys/kernel/slab/ext3_xattr/order', 0o664, b'0\n') +f('sys/kernel/slab/ext3_xattr/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/ext3_xattr/store_user', 0o664, b'1\n') +f('sys/kernel/slab/ext3_xattr/align', 0o664, b'0\n') +f('sys/kernel/slab/ext3_xattr/partial', 0o664, b'0\n') +f('sys/kernel/slab/ext3_xattr/validate', 0o664, b'') +f('sys/kernel/slab/ext3_xattr/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/ext3_xattr/free_calls', 0o664, b' 4 <not-available> age=4303047503 pid=0 cpus=0\n') +f('sys/kernel/slab/ext3_xattr/aliases', 0o664, b'0\n') +d('sys/kernel/slab/bio', 0o775) +f('sys/kernel/slab/bio/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/bio/ctor', 0o664, b'') +f('sys/kernel/slab/bio/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/bio/slab_size', 0o664, b'192\n') +f('sys/kernel/slab/bio/total_objects', 0o664, b'42\n') +f('sys/kernel/slab/bio/slabs', 0o664, b'2\n') +f('sys/kernel/slab/bio/poison', 0o664, b'1\n') +f('sys/kernel/slab/bio/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379518/8379518/8379518 pid=1 cpus=0\n') +f('sys/kernel/slab/bio/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/bio/shrink', 0o664, b'') +f('sys/kernel/slab/bio/trace', 0o664, b'0\n') +f('sys/kernel/slab/bio/object_size', 0o664, b'104\n') +f('sys/kernel/slab/bio/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/bio/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/bio/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/bio/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/bio/objects', 0o664, b'42\n') +f('sys/kernel/slab/bio/order', 0o664, b'0\n') +f('sys/kernel/slab/bio/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/bio/store_user', 0o664, b'1\n') +f('sys/kernel/slab/bio/align', 0o664, b'8\n') +f('sys/kernel/slab/bio/partial', 0o664, b'0\n') +f('sys/kernel/slab/bio/validate', 0o664, b'') +f('sys/kernel/slab/bio/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/bio/free_calls', 0o664, b' 2 <not-available> age=4303046952 pid=0 cpus=0\n') +f('sys/kernel/slab/bio/aliases', 0o664, b'0\n') +d('sys/kernel/slab/TCP', 0o775) +f('sys/kernel/slab/TCP/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/TCP/ctor', 0o664, b'') +f('sys/kernel/slab/TCP/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/TCP/slab_size', 0o664, b'2304\n') +f('sys/kernel/slab/TCP/total_objects', 0o664, b'28\n') +f('sys/kernel/slab/TCP/slabs', 0o664, b'2\n') +f('sys/kernel/slab/TCP/poison', 0o664, b'1\n') +f('sys/kernel/slab/TCP/alloc_calls', 0o664, b' 3 sk_prot_alloc+0x1e/0xb0 age=926836/5879023/8356238 pid=1206-1920 cpus=0\n') +f('sys/kernel/slab/TCP/objs_per_slab', 0o664, b'14\n') +f('sys/kernel/slab/TCP/shrink', 0o664, b'') +f('sys/kernel/slab/TCP/trace', 0o664, b'0\n') +f('sys/kernel/slab/TCP/object_size', 0o664, b'2200\n') +f('sys/kernel/slab/TCP/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/TCP/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/TCP/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/TCP/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/TCP/objects', 0o664, b'28\n') +f('sys/kernel/slab/TCP/order', 0o664, b'3\n') +f('sys/kernel/slab/TCP/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/TCP/store_user', 0o664, b'1\n') +f('sys/kernel/slab/TCP/align', 0o664, b'0\n') +f('sys/kernel/slab/TCP/partial', 0o664, b'0\n') +f('sys/kernel/slab/TCP/validate', 0o664, b'') +f('sys/kernel/slab/TCP/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/TCP/free_calls', 0o664, b' 3 sk_free+0x80/0x100 age=932105/5881414/8356684 pid=0-1762 cpus=0\n') +f('sys/kernel/slab/TCP/aliases', 0o664, b'0\n') +d('sys/kernel/slab/nsproxy', 0o775) +f('sys/kernel/slab/nsproxy/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/ctor', 0o664, b'') +f('sys/kernel/slab/nsproxy/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/slab_size', 0o664, b'128\n') +f('sys/kernel/slab/nsproxy/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/slabs', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/poison', 0o664, b'1\n') +f('sys/kernel/slab/nsproxy/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/nsproxy/objs_per_slab', 0o664, b'32\n') +f('sys/kernel/slab/nsproxy/shrink', 0o664, b'') +f('sys/kernel/slab/nsproxy/trace', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/object_size', 0o664, b'56\n') +f('sys/kernel/slab/nsproxy/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/objects', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/order', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/nsproxy/store_user', 0o664, b'1\n') +f('sys/kernel/slab/nsproxy/align', 0o664, b'8\n') +f('sys/kernel/slab/nsproxy/partial', 0o664, b'0\n') +f('sys/kernel/slab/nsproxy/validate', 0o664, b'') +f('sys/kernel/slab/nsproxy/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/nsproxy/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/nsproxy/aliases', 0o664, b'0\n') +d('sys/kernel/slab/inotify_watch_cache', 0o775) +f('sys/kernel/slab/inotify_watch_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/inotify_watch_cache/ctor', 0o664, b'') +f('sys/kernel/slab/inotify_watch_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/inotify_watch_cache/slab_size', 0o664, b'144\n') +f('sys/kernel/slab/inotify_watch_cache/total_objects', 0o664, b'168\n') +f('sys/kernel/slab/inotify_watch_cache/slabs', 0o664, b'6\n') +f('sys/kernel/slab/inotify_watch_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/inotify_watch_cache/alloc_calls', 0o664, b' 126 sys_inotify_add_watch+0x15e/0x1d0 age=60497/8227702/8376765 pid=72-13355 cpus=0-1\n') +f('sys/kernel/slab/inotify_watch_cache/objs_per_slab', 0o664, b'28\n') +f('sys/kernel/slab/inotify_watch_cache/shrink', 0o664, b'') +f('sys/kernel/slab/inotify_watch_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/inotify_watch_cache/object_size', 0o664, b'72\n') +f('sys/kernel/slab/inotify_watch_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/inotify_watch_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/inotify_watch_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/inotify_watch_cache/objects_partial', 0o664, b'24\n') +f('sys/kernel/slab/inotify_watch_cache/objects', 0o664, b'164\n') +f('sys/kernel/slab/inotify_watch_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/inotify_watch_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/inotify_watch_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/inotify_watch_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/inotify_watch_cache/partial', 0o664, b'1\n') +f('sys/kernel/slab/inotify_watch_cache/validate', 0o664, b'') +f('sys/kernel/slab/inotify_watch_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/inotify_watch_cache/free_calls', 0o664, b''' 122 <not-available> age=4303047477 pid=0 cpus=0 + 4 free_inotify_user_watch+0x60/0x70 age=104648/4219698/8334832 pid=2423-13211 cpus=0 +''') +f('sys/kernel/slab/inotify_watch_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/fs_cache', 0o775) +f('sys/kernel/slab/fs_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/fs_cache/ctor', 0o664, b'') +f('sys/kernel/slab/fs_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/fs_cache/slab_size', 0o664, b'192\n') +f('sys/kernel/slab/fs_cache/total_objects', 0o664, b'126\n') +f('sys/kernel/slab/fs_cache/slabs', 0o664, b'6\n') +f('sys/kernel/slab/fs_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/fs_cache/alloc_calls', 0o664, b' 79 __copy_fs_struct+0x28/0xc0 age=4126/7761540/8379883 pid=1-12336 cpus=0-1\n') +f('sys/kernel/slab/fs_cache/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/fs_cache/shrink', 0o664, b'') +f('sys/kernel/slab/fs_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/fs_cache/object_size', 0o664, b'104\n') +f('sys/kernel/slab/fs_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/fs_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/fs_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/fs_cache/objects_partial', 0o664, b'75\n') +f('sys/kernel/slab/fs_cache/objects', 0o664, b'117\n') +f('sys/kernel/slab/fs_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/fs_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/fs_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/fs_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/fs_cache/partial', 0o664, b'4\n') +f('sys/kernel/slab/fs_cache/validate', 0o664, b'') +f('sys/kernel/slab/fs_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/fs_cache/free_calls', 0o664, b''' 7 <not-available> age=4303047241 pid=0 cpus=0 + 72 put_fs_struct+0x37/0x40 age=7168/7706405/8375333 pid=145-20292 cpus=0-1 +''') +f('sys/kernel/slab/fs_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-512', 0o775) +f('sys/kernel/slab/kmalloc-512/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-512/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-512/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-512/slab_size', 0o664, b'584\n') +f('sys/kernel/slab/kmalloc-512/total_objects', 0o664, b'504\n') +f('sys/kernel/slab/kmalloc-512/slabs', 0o664, b'36\n') +f('sys/kernel/slab/kmalloc-512/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-512/alloc_calls', 0o664, b''' 14 __register_sysctl_paths+0x56/0x340 age=8360125/8372514/8379788 pid=1-1549 cpus=0 + 14 param_sysfs_setup+0x87/0x140 age=8355309/8375663/8379919 pid=1-1813 cpus=0-1 + 59 module_add_modinfo_attrs+0x25/0xf0 age=8303025/8368384/8376264 pid=105-2754 cpus=0-1 + 2 __vmalloc_area_node+0xfb/0x140 age=8374650/8375296/8375942 pid=126-144 cpus=0 + 1 dma_kmalloc_cache+0xca/0x150 age=8375776 pid=163 cpus=0 + 107 kmem_cache_create+0x4e/0x2e0 age=8360130/8377702/8380056 pid=0-1549 cpus=0-1 + 2 __percpu_alloc_mask+0xbc/0x140 age=8379768/8379768/8379768 pid=1 cpus=1 + 17 sys_inotify_init1+0xaa/0x220 age=8333709/8350157/8376641 pid=72-2544 cpus=0-1 + 4 sys_epoll_create1+0x41/0x100 age=2416994/6871289/8356805 pid=1690-20296 cpus=0-1 + 2 __crypto_alloc_tfm+0x43/0x1b0 age=8373592/8373592/8373592 pid=126 cpus=1 + 1 crypto_alloc_instance+0x2b/0xe0 age=8373592 pid=745 cpus=0 + 3 elevator_alloc+0x67/0xc0 age=62000/5606780/8379335 pid=1-13295 cpus=0-1 + 3 cfq_init_queue+0x1b/0x120 age=62000/5606780/8379335 pid=1-13295 cpus=0-1 + 1 fb_alloc_cmap+0x66/0x150 age=8379756 pid=1 cpus=1 + 1 fb_alloc_cmap+0x81/0x150 age=8379756 pid=1 cpus=1 + 1 fb_alloc_cmap+0x9c/0x150 age=8379756 pid=1 cpus=1 + 1 fbcon_startup+0xd6/0x2f0 age=8379755 pid=1 cpus=1 + 1 acpi_ds_build_internal_buffer_obj+0xe1/0x121 age=8379896 pid=1 cpus=0 + 1 make_acpi_ec+0x1a/0xcb age=8379913 pid=1 cpus=0 + 1 acpi_irq_stats_init+0x83/0x268 age=8379913 pid=1 cpus=0 + 1 acpi_irq_stats_init+0xa7/0x268 age=8379913 pid=1 cpus=0 + 5 alloc_tty_driver+0x1c/0x40 age=8309091/8365595/8379725 pid=1-2711 cpus=1 + 2 vt_ioctl+0x1874/0x1c30 age=8356613/8356613/8356613 pid=1703 cpus=0 + 8 set_inverse_transl+0xa0/0xb0 age=8355024/8367389/8379755 pid=1-1898 cpus=1 + 2 con_clear_unimap+0x2a/0xd0 age=8355024/8367389/8379755 pid=1-1898 cpus=1 + 7 vc_allocate+0x99/0x1b0 age=8356563/8358748/8368241 pid=1135-1729 cpus=0-1 + 1 hpet_alloc+0x6b/0x3c0 age=8379798 pid=1 cpus=0 + 4 uart_open+0x36c/0x4b0 age=8368845/8368914/8369120 pid=1059-1073 cpus=0-1 + 43 bus_add_driver+0x4f/0x280 age=8303025/8373842/8379841 pid=1-2754 cpus=0-1 + 9 bus_register+0x35/0x290 age=8373434/8378695/8379923 pid=1-770 cpus=0-1 + 30 __class_register+0x28/0x1e0 age=8374523/8378099/8379922 pid=1-352 cpus=0-1 + 1 mousedev_open+0xc8/0x1d0 age=8354269 pid=1738 cpus=0 + 1 cpufreq_add_dev+0x8f/0x5c0 age=8366381 pid=1358 cpus=0 + 4 sock_alloc_send_skb+0x1cd/0x200 age=8330763/8342704/8350746 pid=1738 cpus=0-1 + 1 alloc_netdev_mq+0x6c/0x180 age=8373712 pid=126 cpus=1 + 4 inetdev_init+0x28/0x190 age=8373592/8375784/8379779 pid=1-126 cpus=0-1 + 2 fib_hash_table+0x1c/0x80 age=8379779/8379779/8379779 pid=1 cpus=0 + 1 ioapic_init_sysfs+0x74/0xcf age=8379769 pid=1 cpus=1 + 3 snd_malloc_sgbuf_pages+0xbe/0x1f0 [snd_page_alloc] age=8374119/8374119/8374119 pid=107 cpus=1 + 1 usb_get_configuration+0x18f/0x1480 [usbcore] age=22677 pid=419 cpus=0 + 1 usb_get_configuration+0x5f2/0x1480 [usbcore] age=8372692 pid=419 cpus=0 + 2 acpi_processor_get_throttling_info+0x21f/0x58c [processor] age=8375662/8375686/8375710 pid=330 cpus=0 + 48 snd_info_create_entry+0x1b/0xa0 [snd] age=8355304/8371157/8374867 pid=107-1813 cpus=0-1 + 4 snd_timer_new+0x40/0x190 [snd_timer] age=8374097/8374262/8374757 pid=107 cpus=1 + 2 ieee80211_key_alloc+0x37/0xe0 [mac80211] age=3544694/3544694/3544694 pid=1545 cpus=0 + 3 snd_pcm_new_stream+0x161/0x520 [snd_pcm] age=8374119/8374119/8374119 pid=107 cpus=1 + 1 snd_hda_bus_new+0x31/0xf4 [snd_hda_intel] age=8374122 pid=107 cpus=1 + 1 crypto_blkcipher_type+0x54/0xffffffffffffff8e [crypto_blkcipher] age=8374450 pid=215 cpus=0 + 1 md_import_device+0x32/0x290 [md_mod] age=8370110 pid=916 cpus=0 + 1 bitmap_create+0x5e/0xad0 [md_mod] age=8370066 pid=916 cpus=0 + 1 run+0x42/0x500 [raid1] age=8370068 pid=916 cpus=0 + 1 ip6_route_net_init+0x4d/0xd0 [ipv6] age=8360130 pid=1549 cpus=0 +''') +f('sys/kernel/slab/kmalloc-512/objs_per_slab', 0o664, b'14\n') +f('sys/kernel/slab/kmalloc-512/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-512/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-512/object_size', 0o664, b'512\n') +f('sys/kernel/slab/kmalloc-512/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-512/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-512/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-512/objects_partial', 0o664, b'79\n') +f('sys/kernel/slab/kmalloc-512/objects', 0o664, b'443\n') +f('sys/kernel/slab/kmalloc-512/order', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-512/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-512/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-512/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-512/partial', 0o664, b'10\n') +f('sys/kernel/slab/kmalloc-512/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-512/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-512/free_calls', 0o664, b''' 163 <not-available> age=4303047353 pid=0 cpus=0 + 4 __vunmap+0xe9/0x120 age=8374515/8375319/8376179 pid=122-215 cpus=0 + 1 kmem_cache_shrink+0x5d/0x1b0 age=8379872 pid=1 cpus=0 + 33 load_elf_binary+0xa7e/0x1e20 age=8303117/8365402/8377217 pid=62-2754 cpus=0-1 + 19 load_elf_binary+0xc37/0x1e20 age=8355044/8370854/8376371 pid=197-1912 cpus=0-1 + 1 crypto_larval_destroy+0x2b/0x40 age=8373593 pid=126 cpus=1 + 210 skb_release_data+0x85/0xd0 age=22792/8177097/8379923 pid=1-20296 cpus=0-1 + 1 acpi_processor_get_power_info+0x2eb/0x569 [processor] age=8375661 pid=330 cpus=1 + 1 skcipher_geniv_alloc+0xea/0x3f0 [crypto_blkcipher] age=8374478 pid=215 cpus=0 + 1 snd_mixer_oss_build_input+0x402/0x5c0 [snd_mixer_oss] age=8355509 pid=1813 cpus=0 +''') +f('sys/kernel/slab/kmalloc-512/aliases', 0o664, b'0\n') +d('sys/kernel/slab/biovec-256', 0o775) +f('sys/kernel/slab/biovec-256/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/biovec-256/ctor', 0o664, b'') +f('sys/kernel/slab/biovec-256/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/biovec-256/slab_size', 0o664, b'4224\n') +f('sys/kernel/slab/biovec-256/total_objects', 0o664, b'7\n') +f('sys/kernel/slab/biovec-256/slabs', 0o664, b'1\n') +f('sys/kernel/slab/biovec-256/poison', 0o664, b'1\n') +f('sys/kernel/slab/biovec-256/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379465/8379465/8379465 pid=1 cpus=0\n') +f('sys/kernel/slab/biovec-256/objs_per_slab', 0o664, b'7\n') +f('sys/kernel/slab/biovec-256/shrink', 0o664, b'') +f('sys/kernel/slab/biovec-256/trace', 0o664, b'0\n') +f('sys/kernel/slab/biovec-256/object_size', 0o664, b'4096\n') +f('sys/kernel/slab/biovec-256/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/biovec-256/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/biovec-256/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/biovec-256/objects_partial', 0o664, b'2\n') +f('sys/kernel/slab/biovec-256/objects', 0o664, b'2\n') +f('sys/kernel/slab/biovec-256/order', 0o664, b'3\n') +f('sys/kernel/slab/biovec-256/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/biovec-256/store_user', 0o664, b'1\n') +f('sys/kernel/slab/biovec-256/align', 0o664, b'0\n') +f('sys/kernel/slab/biovec-256/partial', 0o664, b'1\n') +f('sys/kernel/slab/biovec-256/validate', 0o664, b'') +f('sys/kernel/slab/biovec-256/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/biovec-256/free_calls', 0o664, b' 2 <not-available> age=4303046899 pid=0 cpus=0\n') +f('sys/kernel/slab/biovec-256/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-128', 0o775) +f('sys/kernel/slab/kmalloc-128/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-128/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-128/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-128/slab_size', 0o664, b'200\n') +f('sys/kernel/slab/kmalloc-128/total_objects', 0o664, b'360\n') +f('sys/kernel/slab/kmalloc-128/slabs', 0o664, b'18\n') +f('sys/kernel/slab/kmalloc-128/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-128/alloc_calls', 0o664, b''' 17 param_sysfs_setup+0x87/0x140 age=8366402/8376536/8379939 pid=1-1358 cpus=0-1 + 1 mempool_create_node+0x4b/0xf0 age=8379025 pid=1 cpus=0 + 4 __vmalloc_area_node+0xfb/0x140 age=8303049/8349608/8370350 pid=900-2754 cpus=0 + 2 shmem_fill_super+0x38/0x200 age=8377584/8378686/8379788 pid=1-46 cpus=0-1 + 56 __percpu_alloc_mask+0xbc/0x140 age=61988/7483637/8379799 pid=1-13295 cpus=0-1 + 11 cdev_alloc+0x1a/0x50 age=61988/7621848/8379938 pid=1-13295 cpus=0-1 + 110 d_alloc+0x19d/0x1f0 age=22451/5346628/8376065 pid=401-13439 cpus=0-1 + 2 bm_register_write+0x63/0x630 age=8354053/8354053/8354053 pid=2054 cpus=1 + 2 alloc_disk_node+0x6c/0x120 age=62016/4220683/8379351 pid=1-13295 cpus=1 + 20 ida_pre_get+0x86/0x90 age=8298034/8372144/8380076 pid=0-2761 cpus=0-1 + 5 acpi_ds_build_internal_package_obj+0xaf/0x1df age=8379905/8379914/8379918 pid=1 cpus=0 + 2 acpi_ds_build_internal_buffer_obj+0xe1/0x121 age=8379921/8379921/8379921 pid=1 cpus=0 + 1 acpi_ev_create_gpe_block+0xb2/0x3bf age=8379933 pid=1 cpus=0 + 4 acpi_add_single_object+0x5d8/0xd3c age=8379862/8379869/8379873 pid=1 cpus=0 + 41 con_insert_unipair+0xd6/0x110 age=8355044/8369520/8379775 pid=1-1898 cpus=1 + 2 thermal_zone_bind_cooling_device+0xde/0x2a0 age=8374828/8374828/8374828 pid=329 cpus=0 + 4 led_trigger_register_simple+0x2b/0x80 age=8375615/8375659/8375793 pid=392-396 cpus=0 + 1 sock_kmalloc+0x5c/0x70 age=8328344 pid=2586 cpus=0 + 3 alloc_netdev_mq+0x6c/0x180 age=8373612/8376531/8379814 pid=1-126 cpus=0-1 + 2 neigh_table_init_no_netlink+0xd2/0x250 age=8360154/8369976/8379799 pid=1-1549 cpus=0 + 8 neigh_parms_alloc+0x5d/0x110 age=8360146/8367976/8379799 pid=1-1549 cpus=0-1 + 4 fz_hash_alloc+0x4a/0x60 age=8325493/8357250/8367862 pid=1185-1541 cpus=0-1 + 1 get_local_pda+0x39/0x9b age=8380015 pid=1 cpus=0 + 1 mnt_init+0xf9/0x202 age=8380076 pid=0 cpus=0 + 1 net_ns_init+0x49/0x16d age=8379942 pid=1 cpus=0 + 3 sg_add+0x8c/0x400 [sg] age=61988/5604850/8376284 pid=169-13295 cpus=0 + 3 usb_get_configuration+0x5f2/0x1480 [usbcore] age=22696/22696/22696 pid=419 cpus=0 + 15 usb_get_configuration+0x1388/0x1480 [usbcore] age=22696/3922325/8372712 pid=419 cpus=0 + 1 0xffffffffa0065117 age=8374777 pid=107 cpus=1 + 1 ieee80211_led_init+0x1b/0x230 [mac80211] age=8373612 pid=126 cpus=1 + 1 ieee80211_led_init+0x83/0x230 [mac80211] age=8373612 pid=126 cpus=1 + 1 ieee80211_led_init+0xeb/0x230 [mac80211] age=8373611 pid=126 cpus=1 + 1 ieee80211_led_init+0x153/0x230 [mac80211] age=8373611 pid=126 cpus=1 + 1 snd_hda_codec_new+0x1ec/0x559 [snd_hda_intel] age=8374142 pid=107 cpus=1 + 1 md_register_thread+0x35/0xd0 [md_mod] age=8370088 pid=916 cpus=0 + 1 fib6_net_init+0x7e/0x130 [ipv6] age=8360149 pid=1549 cpus=0 +''') +f('sys/kernel/slab/kmalloc-128/objs_per_slab', 0o664, b'20\n') +f('sys/kernel/slab/kmalloc-128/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-128/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-128/object_size', 0o664, b'128\n') +f('sys/kernel/slab/kmalloc-128/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-128/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-128/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-128/objects_partial', 0o664, b'83\n') +f('sys/kernel/slab/kmalloc-128/objects', 0o664, b'343\n') +f('sys/kernel/slab/kmalloc-128/order', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-128/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-128/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-128/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-128/partial', 0o664, b'5\n') +f('sys/kernel/slab/kmalloc-128/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-128/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-128/free_calls', 0o664, b''' 197 <not-available> age=4303047372 pid=0 cpus=0 + 3 call_usermodehelper_freeinfo+0x27/0x30 age=8360145/8367948/8373612 pid=745-1532 cpus=0 + 2 __vunmap+0xe9/0x120 age=8375480/8375882/8376284 pid=105-169 cpus=0 + 5 percpu_free+0x2d/0x60 age=7838031/7838092/7838171 pid=419-3347 cpus=0 + 1 cdev_dynamic_release+0x19/0x20 age=7838171 pid=419 cpus=0 + 49 d_callback+0x22/0x40 age=53327/5302082/8375461 pid=0-13314 cpus=0-1 + 51 load_elf_binary+0xaf/0x1e20 age=25315/7326461/8377585 pid=46-21952 cpus=0-1 + 1 free_rb_tree_fname+0x5c/0xb0 age=8366816 pid=1274 cpus=0 + 1 disk_release+0x2e/0x50 age=7838031 pid=3347 cpus=0 + 2 free_bitmap+0x29/0x80 age=8368053/8369024/8369995 pid=55 cpus=0-1 + 1 acpi_evaluate_reference+0x100/0x117 age=8374829 pid=329 cpus=0 + 6 acpi_get_object_info+0x1b6/0x1d4 age=8379736/8379841/8379873 pid=1 cpus=0-1 + 4 do_acpi_find_child+0x48/0x51 age=8379209/8379658/8379850 pid=1 cpus=0-1 + 1 unpack_to_rootfs+0x105/0xa39 age=8379790 pid=1 cpus=0 + 1 sg_remove+0x1ca/0x240 [sg] age=7838171 pid=419 cpus=0 + 6 usb_release_interface_cache+0x2c/0x60 [usbcore] age=7833192/7833192/7833192 pid=419 cpus=1 + 2 usb_release_interface_cache+0x47/0x60 [usbcore] age=7833192/7833192/7833192 pid=419 cpus=1 + 1 acpi_processor_get_throttling_info+0x15e/0x58c [processor] age=8375683 pid=330 cpus=0 +''') +f('sys/kernel/slab/kmalloc-128/aliases', 0o664, b'0\n') +d('sys/kernel/slab/ip_dst_cache', 0o775) +f('sys/kernel/slab/ip_dst_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/ip_dst_cache/ctor', 0o664, b'') +f('sys/kernel/slab/ip_dst_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/ip_dst_cache/slab_size', 0o664, b'384\n') +f('sys/kernel/slab/ip_dst_cache/total_objects', 0o664, b'42\n') +f('sys/kernel/slab/ip_dst_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/ip_dst_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/ip_dst_cache/alloc_calls', 0o664, b' 1 dst_alloc+0x2b/0x90 age=920684 pid=1206 cpus=0\n') +f('sys/kernel/slab/ip_dst_cache/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/ip_dst_cache/shrink', 0o664, b'') +f('sys/kernel/slab/ip_dst_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/ip_dst_cache/object_size', 0o664, b'312\n') +f('sys/kernel/slab/ip_dst_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/ip_dst_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/ip_dst_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/ip_dst_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/ip_dst_cache/objects', 0o664, b'42\n') +f('sys/kernel/slab/ip_dst_cache/order', 0o664, b'1\n') +f('sys/kernel/slab/ip_dst_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/ip_dst_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/ip_dst_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/ip_dst_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/ip_dst_cache/validate', 0o664, b'') +f('sys/kernel/slab/ip_dst_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/ip_dst_cache/free_calls', 0o664, b' 1 <not-available> age=4303046733 pid=0 cpus=0\n') +f('sys/kernel/slab/ip_dst_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/journal_head', 0o775) +f('sys/kernel/slab/journal_head/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/journal_head/ctor', 0o664, b'') +f('sys/kernel/slab/journal_head/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/journal_head/slab_size', 0o664, b'168\n') +f('sys/kernel/slab/journal_head/total_objects', 0o664, b'7680\n') +f('sys/kernel/slab/journal_head/slabs', 0o664, b'320\n') +f('sys/kernel/slab/journal_head/poison', 0o664, b'1\n') +f('sys/kernel/slab/journal_head/alloc_calls', 0o664, b' 7662 journal_add_journal_head+0x9f/0x1b0 age=0/2379/651354 pid=1336-13466 cpus=0-1\n') +f('sys/kernel/slab/journal_head/objs_per_slab', 0o664, b'24\n') +f('sys/kernel/slab/journal_head/shrink', 0o664, b'') +f('sys/kernel/slab/journal_head/trace', 0o664, b'0\n') +f('sys/kernel/slab/journal_head/object_size', 0o664, b'96\n') +f('sys/kernel/slab/journal_head/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/journal_head/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/journal_head/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/journal_head/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/journal_head/objects', 0o664, b'7680\n') +f('sys/kernel/slab/journal_head/order', 0o664, b'0\n') +f('sys/kernel/slab/journal_head/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/journal_head/store_user', 0o664, b'1\n') +f('sys/kernel/slab/journal_head/align', 0o664, b'0\n') +f('sys/kernel/slab/journal_head/partial', 0o664, b'0\n') +f('sys/kernel/slab/journal_head/validate', 0o664, b'') +f('sys/kernel/slab/journal_head/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/journal_head/free_calls', 0o664, b''' 7589 <not-available> age=4303047557 pid=0 cpus=0 + 74 __journal_remove_journal_head+0xcb/0x160 age=1585/52253/654521 pid=32-13248 cpus=0-1 +''') +f('sys/kernel/slab/journal_head/aliases', 0o664, b'0\n') +d('sys/kernel/slab/scsi_data_buffer', 0o775) +f('sys/kernel/slab/scsi_data_buffer/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/ctor', 0o664, b'') +f('sys/kernel/slab/scsi_data_buffer/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/slab_size', 0o664, b'96\n') +f('sys/kernel/slab/scsi_data_buffer/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/slabs', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/poison', 0o664, b'1\n') +f('sys/kernel/slab/scsi_data_buffer/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/scsi_data_buffer/objs_per_slab', 0o664, b'42\n') +f('sys/kernel/slab/scsi_data_buffer/shrink', 0o664, b'') +f('sys/kernel/slab/scsi_data_buffer/trace', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/object_size', 0o664, b'24\n') +f('sys/kernel/slab/scsi_data_buffer/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/objects', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/order', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/scsi_data_buffer/store_user', 0o664, b'1\n') +f('sys/kernel/slab/scsi_data_buffer/align', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/partial', 0o664, b'0\n') +f('sys/kernel/slab/scsi_data_buffer/validate', 0o664, b'') +f('sys/kernel/slab/scsi_data_buffer/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/scsi_data_buffer/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/scsi_data_buffer/aliases', 0o664, b'0\n') +d('sys/kernel/slab/fuse_request', 0o775) +f('sys/kernel/slab/fuse_request/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/fuse_request/ctor', 0o664, b'') +f('sys/kernel/slab/fuse_request/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/fuse_request/slab_size', 0o664, b'728\n') +f('sys/kernel/slab/fuse_request/total_objects', 0o664, b'44\n') +f('sys/kernel/slab/fuse_request/slabs', 0o664, b'2\n') +f('sys/kernel/slab/fuse_request/poison', 0o664, b'1\n') +f('sys/kernel/slab/fuse_request/alloc_calls', 0o664, b' 1 fuse_request_alloc+0x1a/0x40 [fuse] age=8336120 pid=2476 cpus=0\n') +f('sys/kernel/slab/fuse_request/objs_per_slab', 0o664, b'22\n') +f('sys/kernel/slab/fuse_request/shrink', 0o664, b'') +f('sys/kernel/slab/fuse_request/trace', 0o664, b'0\n') +f('sys/kernel/slab/fuse_request/object_size', 0o664, b'656\n') +f('sys/kernel/slab/fuse_request/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/fuse_request/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/fuse_request/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/fuse_request/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/fuse_request/objects', 0o664, b'44\n') +f('sys/kernel/slab/fuse_request/order', 0o664, b'2\n') +f('sys/kernel/slab/fuse_request/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/fuse_request/store_user', 0o664, b'1\n') +f('sys/kernel/slab/fuse_request/align', 0o664, b'0\n') +f('sys/kernel/slab/fuse_request/partial', 0o664, b'0\n') +f('sys/kernel/slab/fuse_request/validate', 0o664, b'') +f('sys/kernel/slab/fuse_request/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/fuse_request/free_calls', 0o664, b' 1 <not-available> age=4303047718 pid=0 cpus=0\n') +f('sys/kernel/slab/fuse_request/aliases', 0o664, b'0\n') +d('sys/kernel/slab/pid', 0o775) +f('sys/kernel/slab/pid/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/pid/ctor', 0o664, b'') +f('sys/kernel/slab/pid/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/pid/slab_size', 0o664, b'192\n') +f('sys/kernel/slab/pid/total_objects', 0o664, b'252\n') +f('sys/kernel/slab/pid/slabs', 0o664, b'12\n') +f('sys/kernel/slab/pid/poison', 0o664, b'1\n') +f('sys/kernel/slab/pid/alloc_calls', 0o664, b' 207 alloc_pid+0x26/0x430 age=4190/8015525/8379960 pid=0-13212 cpus=0-1\n') +f('sys/kernel/slab/pid/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/pid/shrink', 0o664, b'') +f('sys/kernel/slab/pid/trace', 0o664, b'0\n') +f('sys/kernel/slab/pid/object_size', 0o664, b'80\n') +f('sys/kernel/slab/pid/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/pid/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/pid/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/pid/objects_partial', 0o664, b'131\n') +f('sys/kernel/slab/pid/objects', 0o664, b'236\n') +f('sys/kernel/slab/pid/order', 0o664, b'0\n') +f('sys/kernel/slab/pid/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/pid/store_user', 0o664, b'1\n') +f('sys/kernel/slab/pid/align', 0o664, b'8\n') +f('sys/kernel/slab/pid/partial', 0o664, b'7\n') +f('sys/kernel/slab/pid/validate', 0o664, b'') +f('sys/kernel/slab/pid/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/pid/free_calls', 0o664, b''' 69 <not-available> age=4303047306 pid=0 cpus=0 + 138 put_pid+0x36/0x40 age=7228/7841898/8377070 pid=0-13258 cpus=0-1 +''') +f('sys/kernel/slab/pid/aliases', 0o664, b'0\n') +d('sys/kernel/slab/ext2_inode_cache', 0o775) +f('sys/kernel/slab/ext2_inode_cache/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/ext2_inode_cache/ctor', 0o664, b'init_once+0x0/0x60\n') +f('sys/kernel/slab/ext2_inode_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/slab_size', 0o664, b'1456\n') +f('sys/kernel/slab/ext2_inode_cache/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/slabs', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/ext2_inode_cache/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/ext2_inode_cache/objs_per_slab', 0o664, b'22\n') +f('sys/kernel/slab/ext2_inode_cache/shrink', 0o664, b'') +f('sys/kernel/slab/ext2_inode_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/object_size', 0o664, b'1384\n') +f('sys/kernel/slab/ext2_inode_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/objects', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/order', 0o664, b'3\n') +f('sys/kernel/slab/ext2_inode_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/ext2_inode_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/ext2_inode_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/ext2_inode_cache/validate', 0o664, b'') +f('sys/kernel/slab/ext2_inode_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/ext2_inode_cache/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/ext2_inode_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-1024', 0o775) +f('sys/kernel/slab/kmalloc-1024/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-1024/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-1024/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-1024/slab_size', 0o664, b'1096\n') +f('sys/kernel/slab/kmalloc-1024/total_objects', 0o664, b'580\n') +f('sys/kernel/slab/kmalloc-1024/slabs', 0o664, b'20\n') +f('sys/kernel/slab/kmalloc-1024/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-1024/alloc_calls', 0o664, b''' 23 __register_sysctl_paths+0x56/0x340 age=8360116/8368981/8379769 pid=1-1549 cpus=0-1 + 5 param_sysfs_setup+0x87/0x140 age=8355550/8371926/8379909 pid=1-1805 cpus=0-1 + 5 load_module+0x18d5/0x1b30 age=8328407/8365286/8375764 pid=208-2578 cpus=0 + 2 __vmalloc_area_node+0xfb/0x140 age=8360170/8367347/8374524 pid=107-1549 cpus=0 + 4 __percpu_alloc_mask+0xbc/0x140 age=8379760/8379760/8379760 pid=1 cpus=0 + 113 alloc_pipe_info+0x25/0x60 age=125624/8270722/8377065 pid=1-13212 cpus=0-1 + 2 alloc_fdtable+0x81/0x160 age=2417000/5386894/8356789 pid=1690 cpus=0-1 + 1 mb_cache_create+0xb6/0x1f0 age=8379750 pid=1 cpus=1 + 1 mb_cache_create+0x11e/0x1f0 age=8379750 pid=1 cpus=1 + 8 add_partition+0x45/0x250 age=61959/7339549/8379206 pid=1-13295 cpus=0 + 2 __crypto_alloc_tfm+0x43/0x1b0 age=3544684/3544684/3544684 pid=1545 cpus=0 + 1 pci_create_bus+0x82/0x240 age=8379831 pid=1 cpus=0 + 14 pcie_port_device_register+0x254/0x4a0 age=8379746/8379746/8379748 pid=1 cpus=1 + 1 acpi_ev_create_gpe_block+0x10b/0x3bf age=8379903 pid=1 cpus=0 + 1 acpi_tb_resize_root_table_list+0x66/0xdb age=8375731 pid=330 cpus=0 + 2 tty_buffer_request_room+0x136/0x190 age=8214639/8272696/8330753 pid=0-2262 cpus=0 + 1 tty_register_driver+0x1b3/0x2a0 age=8309081 pid=2711 cpus=1 + 10 tty_write+0x160/0x280 age=7214010/8238951/8377659 pid=34-2590 cpus=0-1 + 2 set_inverse_trans_unicode+0xce/0xf0 age=8355014/8367379/8379745 pid=1-1898 cpus=1 + 1 uart_register_driver+0x31/0x1c0 age=8379710 pid=1 cpus=1 + 166 device_create_vargs+0x8c/0x100 age=22658/8173620/8379911 pid=1-13295 cpus=0-1 + 8 platform_device_alloc+0x37/0x90 age=8367172/8376785/8379911 pid=1-1285 cpus=0-1 + 3 scsi_alloc_target+0x63/0x2e0 age=61990/5606770/8379325 pid=1-13295 cpus=0-1 + 2 sd_probe+0x86/0x430 age=61986/4220653/8379321 pid=1-13295 cpus=1 + 1 ahci_port_start+0x34/0xe0 age=8379708 pid=1 cpus=1 + 1 psmouse_connect+0x5b/0x2c0 age=8378898 pid=17 cpus=1 + 2 thermal_cooling_device_register+0x7f/0x290 age=8375643/8375667/8375692 pid=330 cpus=0-1 + 1 hid_add_field+0xcc/0x3a0 age=53473 pid=419 cpus=0 + 4 sock_alloc_send_skb+0x1cd/0x200 age=8344775/8349266/8350926 pid=1738 cpus=0-1 + 3 __rtnl_register+0x79/0x90 age=8360119/8373266/8379912 pid=1-1549 cpus=0 + 6 qdisc_alloc+0x34/0xd0 age=8356043/8356079/8356257 pid=1541 cpus=0 + 1 dmi_id_init+0x2a4/0x30c age=8379910 pid=1 cpus=0 + 5 hub_probe+0xdd/0x820 [usbcore] age=8373999/8374492/8374845 pid=143-147 cpus=0-1 + 5 usb_create_hcd+0x39/0x150 [usbcore] age=8374071/8374526/8374892 pid=143-147 cpus=0 + 26 usb_set_configuration+0x441/0x5f0 [usbcore] age=22663/3237429/8374857 pid=143-419 cpus=0-1 + 10 usb_get_configuration+0x92/0x1480 [usbcore] age=22667/5876069/8374865 pid=143-419 cpus=0-1 + 34 usb_create_ep_files+0x51/0x350 [usbcore] age=22579/5431762/8374732 pid=143-419 cpus=0-1 + 1 acpi_battery_add+0x29/0x1d3 [battery] age=8375630 pid=396 cpus=0 + 1 snd_card_new+0x38/0x370 [snd] age=8374136 pid=107 cpus=0 + 1 sta_info_alloc+0x3c/0x1d0 [mac80211] age=8329523 pid=742 cpus=0 + 2 snd_pcm_new+0x47/0x130 [snd_pcm] age=8374109/8374109/8374109 pid=107 cpus=1 + 1 rs_alloc_sta+0x25/0x120 [iwl3945] age=8329523 pid=742 cpus=0 + 1 get_alloc_hash+0x9b/0x140 [snd_hda_intel] age=8373108 pid=786 cpus=0 + 1 azx_probe+0xb3/0xc20 [snd_hda_intel] age=8374129 pid=107 cpus=0 + 1 azx_probe+0x4a9/0xc20 [snd_hda_intel] age=8374122 pid=107 cpus=0 + 1 snd_hda_codec_new+0x3e/0x559 [snd_hda_intel] age=8374112 pid=107 cpus=1 + 1 md_probe+0xa1/0x360 [md_mod] age=8370183 pid=916 cpus=0 + 8 loop_alloc+0x28/0x140 [loop] age=8369639/8369639/8369639 pid=951 cpus=0 + 4 ipv6_add_dev+0x69/0x330 [ipv6] age=8360116/8360117/8360119 pid=1549 cpus=0 + 1 ipv6_route_sysctl_init+0x22/0xb0 [ipv6] age=8360115 pid=1549 cpus=0 + 2 snd_seq_create_port+0x35/0x180 [snd_seq] age=8355549/8355549/8355549 pid=1805 cpus=0 +''') +f('sys/kernel/slab/kmalloc-1024/objs_per_slab', 0o664, b'29\n') +f('sys/kernel/slab/kmalloc-1024/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-1024/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-1024/object_size', 0o664, b'1024\n') +f('sys/kernel/slab/kmalloc-1024/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-1024/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-1024/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-1024/objects_partial', 0o664, b'196\n') +f('sys/kernel/slab/kmalloc-1024/objects', 0o664, b'544\n') +f('sys/kernel/slab/kmalloc-1024/order', 0o664, b'3\n') +f('sys/kernel/slab/kmalloc-1024/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-1024/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-1024/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-1024/partial', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-1024/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-1024/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-1024/free_calls', 0o664, b''' 216 <not-available> age=4303047343 pid=0 cpus=0 + 1 __vunmap+0xe9/0x120 age=8360137 pid=1549 cpus=0 + 64 __free_pipe_info+0x5c/0x70 age=55301/8227248/8377668 pid=34-13363 cpus=0-1 + 19 acpi_ds_delete_walk_state+0xc9/0xcd age=8355814/8376228/8380000 pid=0-1772 cpus=0-1 + 1 acpi_tb_resize_root_table_list+0xbf/0xdb age=8375732 pid=330 cpus=0 + 2 release_one_tty+0xc7/0x190 age=8352476/8361380/8370284 pid=55-1253 cpus=0-1 + 1 vt_ioctl+0x273/0x1c30 age=8356598 pid=1703 cpus=0 + 14 device_create_release+0x9/0x10 age=8352395/8354628/8356598 pid=1703-2139 cpus=0-1 + 1 fw_dev_release+0x20/0x30 age=8356148 pid=1541 cpus=0 + 184 skb_release_data+0x85/0xd0 age=22639/7036434/8379911 pid=0-13303 cpus=0-1 +''') +f('sys/kernel/slab/kmalloc-1024/aliases', 0o664, b'0\n') +d('sys/kernel/slab/files_cache', 0o775) +f('sys/kernel/slab/files_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/files_cache/ctor', 0o664, b'') +f('sys/kernel/slab/files_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/files_cache/slab_size', 0o664, b'896\n') +f('sys/kernel/slab/files_cache/total_objects', 0o664, b'108\n') +f('sys/kernel/slab/files_cache/slabs', 0o664, b'6\n') +f('sys/kernel/slab/files_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/files_cache/alloc_calls', 0o664, b' 80 dup_fd+0x2e/0x420 age=4136/7769280/8379905 pid=0-12336 cpus=0-1\n') +f('sys/kernel/slab/files_cache/objs_per_slab', 0o664, b'18\n') +f('sys/kernel/slab/files_cache/shrink', 0o664, b'') +f('sys/kernel/slab/files_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/files_cache/object_size', 0o664, b'768\n') +f('sys/kernel/slab/files_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/files_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/files_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/files_cache/objects_partial', 0o664, b'29\n') +f('sys/kernel/slab/files_cache/objects', 0o664, b'101\n') +f('sys/kernel/slab/files_cache/order', 0o664, b'2\n') +f('sys/kernel/slab/files_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/files_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/files_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/files_cache/partial', 0o664, b'2\n') +f('sys/kernel/slab/files_cache/validate', 0o664, b'') +f('sys/kernel/slab/files_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/files_cache/free_calls', 0o664, b''' 9 <not-available> age=4303047250 pid=0 cpus=0 + 31 put_files_struct+0xb4/0xe0 age=7177/7367129/8366999 pid=1202-20292 cpus=0-1 + 40 free_fdtable_rcu+0xa0/0xb0 age=61634/7953135/8376143 pid=0-12335 cpus=0-1 +''') +f('sys/kernel/slab/files_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/UDP-Lite', 0o775) +f('sys/kernel/slab/UDP-Lite/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/ctor', 0o664, b'') +f('sys/kernel/slab/UDP-Lite/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/UDP-Lite/slab_size', 0o664, b'1344\n') +f('sys/kernel/slab/UDP-Lite/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/slabs', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/poison', 0o664, b'1\n') +f('sys/kernel/slab/UDP-Lite/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/UDP-Lite/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/UDP-Lite/shrink', 0o664, b'') +f('sys/kernel/slab/UDP-Lite/trace', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/object_size', 0o664, b'1232\n') +f('sys/kernel/slab/UDP-Lite/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/objects', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/order', 0o664, b'2\n') +f('sys/kernel/slab/UDP-Lite/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/UDP-Lite/store_user', 0o664, b'1\n') +f('sys/kernel/slab/UDP-Lite/align', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/partial', 0o664, b'0\n') +f('sys/kernel/slab/UDP-Lite/validate', 0o664, b'') +f('sys/kernel/slab/UDP-Lite/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/UDP-Lite/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/UDP-Lite/aliases', 0o664, b'0\n') +d('sys/kernel/slab/mnt_cache', 0o775) +f('sys/kernel/slab/mnt_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/mnt_cache/ctor', 0o664, b'') +f('sys/kernel/slab/mnt_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/mnt_cache/slab_size', 0o664, b'320\n') +f('sys/kernel/slab/mnt_cache/total_objects', 0o664, b'36\n') +f('sys/kernel/slab/mnt_cache/slabs', 0o664, b'3\n') +f('sys/kernel/slab/mnt_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/mnt_cache/alloc_calls', 0o664, b' 25 alloc_vfsmnt+0x1f/0x180 age=61162/8041266/8379801 pid=0-13348 cpus=0-1\n') +f('sys/kernel/slab/mnt_cache/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/mnt_cache/shrink', 0o664, b'') +f('sys/kernel/slab/mnt_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/mnt_cache/object_size', 0o664, b'224\n') +f('sys/kernel/slab/mnt_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/mnt_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/mnt_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/mnt_cache/objects_partial', 0o664, b'4\n') +f('sys/kernel/slab/mnt_cache/objects', 0o664, b'28\n') +f('sys/kernel/slab/mnt_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/mnt_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/mnt_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/mnt_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/mnt_cache/partial', 0o664, b'1\n') +f('sys/kernel/slab/mnt_cache/validate', 0o664, b'') +f('sys/kernel/slab/mnt_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/mnt_cache/free_calls', 0o664, b''' 24 <not-available> age=4303047098 pid=0 cpus=0 + 1 free_vfsmnt+0x2c/0x40 age=7837771 pid=3347 cpus=0 +''') +f('sys/kernel/slab/mnt_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/skbuff_head_cache', 0o775) +f('sys/kernel/slab/skbuff_head_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_head_cache/ctor', 0o664, b'') +f('sys/kernel/slab/skbuff_head_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_head_cache/slab_size', 0o664, b'320\n') +f('sys/kernel/slab/skbuff_head_cache/total_objects', 0o664, b'588\n') +f('sys/kernel/slab/skbuff_head_cache/slabs', 0o664, b'49\n') +f('sys/kernel/slab/skbuff_head_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_head_cache/alloc_calls', 0o664, b' 550 __alloc_skb+0x44/0x150 age=1665/3999351/8355948 pid=733-1738 cpus=0-1\n') +f('sys/kernel/slab/skbuff_head_cache/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/skbuff_head_cache/shrink', 0o664, b'') +f('sys/kernel/slab/skbuff_head_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_head_cache/object_size', 0o664, b'208\n') +f('sys/kernel/slab/skbuff_head_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_head_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_head_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_head_cache/objects_partial', 0o664, b'18\n') +f('sys/kernel/slab/skbuff_head_cache/objects', 0o664, b'570\n') +f('sys/kernel/slab/skbuff_head_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_head_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_head_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_head_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_head_cache/partial', 0o664, b'3\n') +f('sys/kernel/slab/skbuff_head_cache/validate', 0o664, b'') +f('sys/kernel/slab/skbuff_head_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_head_cache/free_calls', 0o664, b''' 333 <not-available> age=4303046979 pid=0 cpus=0 + 217 __kfree_skb+0x3a/0xa0 age=1666/662694/8356220 pid=0-13466 cpus=0-1 +''') +f('sys/kernel/slab/skbuff_head_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/fuse_inode', 0o775) +f('sys/kernel/slab/fuse_inode/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/fuse_inode/ctor', 0o664, b'fuse_inode_init_once+0x0/0x10 [fuse]\n') +f('sys/kernel/slab/fuse_inode/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/fuse_inode/slab_size', 0o664, b'1344\n') +f('sys/kernel/slab/fuse_inode/total_objects', 0o664, b'12\n') +f('sys/kernel/slab/fuse_inode/slabs', 0o664, b'1\n') +f('sys/kernel/slab/fuse_inode/poison', 0o664, b'1\n') +f('sys/kernel/slab/fuse_inode/alloc_calls', 0o664, b' 1 fuse_alloc_inode+0x1a/0xe0 [fuse] age=8336111 pid=2476 cpus=0\n') +f('sys/kernel/slab/fuse_inode/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/fuse_inode/shrink', 0o664, b'') +f('sys/kernel/slab/fuse_inode/trace', 0o664, b'0\n') +f('sys/kernel/slab/fuse_inode/object_size', 0o664, b'1248\n') +f('sys/kernel/slab/fuse_inode/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/fuse_inode/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/fuse_inode/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/fuse_inode/objects_partial', 0o664, b'1\n') +f('sys/kernel/slab/fuse_inode/objects', 0o664, b'1\n') +f('sys/kernel/slab/fuse_inode/order', 0o664, b'2\n') +f('sys/kernel/slab/fuse_inode/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/fuse_inode/store_user', 0o664, b'1\n') +f('sys/kernel/slab/fuse_inode/align', 0o664, b'0\n') +f('sys/kernel/slab/fuse_inode/partial', 0o664, b'1\n') +f('sys/kernel/slab/fuse_inode/validate', 0o664, b'') +f('sys/kernel/slab/fuse_inode/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/fuse_inode/free_calls', 0o664, b' 1 <not-available> age=4303047710 pid=0 cpus=0\n') +f('sys/kernel/slab/fuse_inode/aliases', 0o664, b'0\n') +d('sys/kernel/slab/skbuff_fclone_cache', 0o775) +f('sys/kernel/slab/skbuff_fclone_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_fclone_cache/ctor', 0o664, b'') +f('sys/kernel/slab/skbuff_fclone_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_fclone_cache/slab_size', 0o664, b'512\n') +f('sys/kernel/slab/skbuff_fclone_cache/total_objects', 0o664, b'32\n') +f('sys/kernel/slab/skbuff_fclone_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/skbuff_fclone_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_fclone_cache/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/skbuff_fclone_cache/objs_per_slab', 0o664, b'16\n') +f('sys/kernel/slab/skbuff_fclone_cache/shrink', 0o664, b'') +f('sys/kernel/slab/skbuff_fclone_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_fclone_cache/object_size', 0o664, b'420\n') +f('sys/kernel/slab/skbuff_fclone_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_fclone_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_fclone_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_fclone_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_fclone_cache/objects', 0o664, b'32\n') +f('sys/kernel/slab/skbuff_fclone_cache/order', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_fclone_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_fclone_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_fclone_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_fclone_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/skbuff_fclone_cache/validate', 0o664, b'') +f('sys/kernel/slab/skbuff_fclone_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/skbuff_fclone_cache/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/skbuff_fclone_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/buffer_head', 0o775) +f('sys/kernel/slab/buffer_head/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/buffer_head/ctor', 0o664, b'init_buffer_head+0x0/0x20\n') +f('sys/kernel/slab/buffer_head/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/buffer_head/slab_size', 0o664, b'176\n') +f('sys/kernel/slab/buffer_head/total_objects', 0o664, b'31487\n') +f('sys/kernel/slab/buffer_head/slabs', 0o664, b'1369\n') +f('sys/kernel/slab/buffer_head/poison', 0o664, b'1\n') +f('sys/kernel/slab/buffer_head/alloc_calls', 0o664, b' 31488 alloc_buffer_head+0x19/0x50 age=1/3079345/8378152 pid=1-32767 cpus=0-1\n') +f('sys/kernel/slab/buffer_head/objs_per_slab', 0o664, b'23\n') +f('sys/kernel/slab/buffer_head/shrink', 0o664, b'') +f('sys/kernel/slab/buffer_head/trace', 0o664, b'0\n') +f('sys/kernel/slab/buffer_head/object_size', 0o664, b'104\n') +f('sys/kernel/slab/buffer_head/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/buffer_head/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/buffer_head/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/buffer_head/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/buffer_head/objects', 0o664, b'31487\n') +f('sys/kernel/slab/buffer_head/order', 0o664, b'0\n') +f('sys/kernel/slab/buffer_head/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/buffer_head/store_user', 0o664, b'1\n') +f('sys/kernel/slab/buffer_head/align', 0o664, b'0\n') +f('sys/kernel/slab/buffer_head/partial', 0o664, b'0\n') +f('sys/kernel/slab/buffer_head/validate', 0o664, b'') +f('sys/kernel/slab/buffer_head/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/buffer_head/free_calls', 0o664, b''' 14436 <not-available> age=4303047199 pid=0 cpus=0 + 17053 free_buffer_head+0x20/0x40 age=1227/1928220/8379062 pid=1-32759 cpus=0-1 +''') +f('sys/kernel/slab/buffer_head/aliases', 0o664, b'0\n') +d('sys/kernel/slab/blkdev_queue', 0o775) +f('sys/kernel/slab/blkdev_queue/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_queue/ctor', 0o664, b'') +f('sys/kernel/slab/blkdev_queue/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_queue/slab_size', 0o664, b'2496\n') +f('sys/kernel/slab/blkdev_queue/total_objects', 0o664, b'26\n') +f('sys/kernel/slab/blkdev_queue/slabs', 0o664, b'2\n') +f('sys/kernel/slab/blkdev_queue/poison', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_queue/alloc_calls', 0o664, b' 12 blk_alloc_queue_node+0x1c/0xc0 age=61520/7678497/8378855 pid=1-13295 cpus=0-1\n') +f('sys/kernel/slab/blkdev_queue/objs_per_slab', 0o664, b'13\n') +f('sys/kernel/slab/blkdev_queue/shrink', 0o664, b'') +f('sys/kernel/slab/blkdev_queue/trace', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_queue/object_size', 0o664, b'2424\n') +f('sys/kernel/slab/blkdev_queue/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_queue/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_queue/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_queue/objects_partial', 0o664, b'10\n') +f('sys/kernel/slab/blkdev_queue/objects', 0o664, b'23\n') +f('sys/kernel/slab/blkdev_queue/order', 0o664, b'3\n') +f('sys/kernel/slab/blkdev_queue/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_queue/store_user', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_queue/align', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_queue/partial', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_queue/validate', 0o664, b'') +f('sys/kernel/slab/blkdev_queue/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_queue/free_calls', 0o664, b' 12 <not-available> age=4303046873 pid=0 cpus=0\n') +f('sys/kernel/slab/blkdev_queue/aliases', 0o664, b'0\n') +d('sys/kernel/slab/RAW', 0o775) +f('sys/kernel/slab/RAW/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/RAW/ctor', 0o664, b'') +f('sys/kernel/slab/RAW/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/RAW/slab_size', 0o664, b'1280\n') +f('sys/kernel/slab/RAW/total_objects', 0o664, b'12\n') +f('sys/kernel/slab/RAW/slabs', 0o664, b'1\n') +f('sys/kernel/slab/RAW/poison', 0o664, b'1\n') +f('sys/kernel/slab/RAW/alloc_calls', 0o664, b' 3 sk_prot_alloc+0x1e/0xb0 age=8379168/8379171/8379177 pid=1 cpus=0\n') +f('sys/kernel/slab/RAW/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/RAW/shrink', 0o664, b'') +f('sys/kernel/slab/RAW/trace', 0o664, b'0\n') +f('sys/kernel/slab/RAW/object_size', 0o664, b'1208\n') +f('sys/kernel/slab/RAW/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/RAW/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/RAW/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/RAW/objects_partial', 0o664, b'3\n') +f('sys/kernel/slab/RAW/objects', 0o664, b'3\n') +f('sys/kernel/slab/RAW/order', 0o664, b'2\n') +f('sys/kernel/slab/RAW/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/RAW/store_user', 0o664, b'1\n') +f('sys/kernel/slab/RAW/align', 0o664, b'0\n') +f('sys/kernel/slab/RAW/partial', 0o664, b'1\n') +f('sys/kernel/slab/RAW/validate', 0o664, b'') +f('sys/kernel/slab/RAW/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/RAW/free_calls', 0o664, b' 3 <not-available> age=4303046751 pid=0 cpus=0\n') +f('sys/kernel/slab/RAW/aliases', 0o664, b'0\n') +d('sys/kernel/slab/blkdev_ioc', 0o775) +f('sys/kernel/slab/blkdev_ioc/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_ioc/ctor', 0o664, b'') +f('sys/kernel/slab/blkdev_ioc/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_ioc/slab_size', 0o664, b'200\n') +f('sys/kernel/slab/blkdev_ioc/total_objects', 0o664, b'100\n') +f('sys/kernel/slab/blkdev_ioc/slabs', 0o664, b'5\n') +f('sys/kernel/slab/blkdev_ioc/poison', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_ioc/alloc_calls', 0o664, b' 64 alloc_io_context+0x19/0xa0 age=3410/8058449/8378873 pid=1-13466 cpus=0-1\n') +f('sys/kernel/slab/blkdev_ioc/objs_per_slab', 0o664, b'20\n') +f('sys/kernel/slab/blkdev_ioc/shrink', 0o664, b'') +f('sys/kernel/slab/blkdev_ioc/trace', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_ioc/object_size', 0o664, b'128\n') +f('sys/kernel/slab/blkdev_ioc/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_ioc/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_ioc/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_ioc/objects_partial', 0o664, b'38\n') +f('sys/kernel/slab/blkdev_ioc/objects', 0o664, b'98\n') +f('sys/kernel/slab/blkdev_ioc/order', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_ioc/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_ioc/store_user', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_ioc/align', 0o664, b'0\n') +f('sys/kernel/slab/blkdev_ioc/partial', 0o664, b'2\n') +f('sys/kernel/slab/blkdev_ioc/validate', 0o664, b'') +f('sys/kernel/slab/blkdev_ioc/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/blkdev_ioc/free_calls', 0o664, b''' 9 <not-available> age=4303046891 pid=0 cpus=0 + 55 put_io_context+0xb2/0xd0 age=45025/8043308/8374605 pid=145-13349 cpus=0-1 +''') +f('sys/kernel/slab/blkdev_ioc/aliases', 0o664, b'0\n') +d('sys/kernel/slab/sigqueue', 0o775) +f('sys/kernel/slab/sigqueue/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/sigqueue/ctor', 0o664, b'') +f('sys/kernel/slab/sigqueue/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/sigqueue/slab_size', 0o664, b'232\n') +f('sys/kernel/slab/sigqueue/total_objects', 0o664, b'34\n') +f('sys/kernel/slab/sigqueue/slabs', 0o664, b'2\n') +f('sys/kernel/slab/sigqueue/poison', 0o664, b'1\n') +f('sys/kernel/slab/sigqueue/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/sigqueue/objs_per_slab', 0o664, b'17\n') +f('sys/kernel/slab/sigqueue/shrink', 0o664, b'') +f('sys/kernel/slab/sigqueue/trace', 0o664, b'0\n') +f('sys/kernel/slab/sigqueue/object_size', 0o664, b'160\n') +f('sys/kernel/slab/sigqueue/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/sigqueue/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/sigqueue/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/sigqueue/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/sigqueue/objects', 0o664, b'34\n') +f('sys/kernel/slab/sigqueue/order', 0o664, b'0\n') +f('sys/kernel/slab/sigqueue/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/sigqueue/store_user', 0o664, b'1\n') +f('sys/kernel/slab/sigqueue/align', 0o664, b'8\n') +f('sys/kernel/slab/sigqueue/partial', 0o664, b'0\n') +f('sys/kernel/slab/sigqueue/validate', 0o664, b'') +f('sys/kernel/slab/sigqueue/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/sigqueue/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/sigqueue/aliases', 0o664, b'0\n') +d('sys/kernel/slab/TCPv6', 0o775) +f('sys/kernel/slab/TCPv6/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/TCPv6/ctor', 0o664, b'') +f('sys/kernel/slab/TCPv6/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/TCPv6/slab_size', 0o664, b'2432\n') +f('sys/kernel/slab/TCPv6/total_objects', 0o664, b'26\n') +f('sys/kernel/slab/TCPv6/slabs', 0o664, b'2\n') +f('sys/kernel/slab/TCPv6/poison', 0o664, b'1\n') +f('sys/kernel/slab/TCPv6/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/TCPv6/objs_per_slab', 0o664, b'13\n') +f('sys/kernel/slab/TCPv6/shrink', 0o664, b'') +f('sys/kernel/slab/TCPv6/trace', 0o664, b'0\n') +f('sys/kernel/slab/TCPv6/object_size', 0o664, b'2336\n') +f('sys/kernel/slab/TCPv6/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/TCPv6/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/TCPv6/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/TCPv6/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/TCPv6/objects', 0o664, b'26\n') +f('sys/kernel/slab/TCPv6/order', 0o664, b'3\n') +f('sys/kernel/slab/TCPv6/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/TCPv6/store_user', 0o664, b'1\n') +f('sys/kernel/slab/TCPv6/align', 0o664, b'0\n') +f('sys/kernel/slab/TCPv6/partial', 0o664, b'0\n') +f('sys/kernel/slab/TCPv6/validate', 0o664, b'') +f('sys/kernel/slab/TCPv6/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/TCPv6/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/TCPv6/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kioctx', 0o775) +f('sys/kernel/slab/kioctx/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kioctx/ctor', 0o664, b'') +f('sys/kernel/slab/kioctx/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/kioctx/slab_size', 0o664, b'640\n') +f('sys/kernel/slab/kioctx/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/kioctx/slabs', 0o664, b'0\n') +f('sys/kernel/slab/kioctx/poison', 0o664, b'1\n') +f('sys/kernel/slab/kioctx/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/kioctx/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/kioctx/shrink', 0o664, b'') +f('sys/kernel/slab/kioctx/trace', 0o664, b'0\n') +f('sys/kernel/slab/kioctx/object_size', 0o664, b'512\n') +f('sys/kernel/slab/kioctx/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kioctx/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kioctx/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kioctx/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/kioctx/objects', 0o664, b'0\n') +f('sys/kernel/slab/kioctx/order', 0o664, b'1\n') +f('sys/kernel/slab/kioctx/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kioctx/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kioctx/align', 0o664, b'8\n') +f('sys/kernel/slab/kioctx/partial', 0o664, b'0\n') +f('sys/kernel/slab/kioctx/validate', 0o664, b'') +f('sys/kernel/slab/kioctx/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kioctx/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/kioctx/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-32', 0o775) +f('sys/kernel/slab/kmalloc-32/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-32/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-32/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-32/slab_size', 0o664, b'104\n') +f('sys/kernel/slab/kmalloc-32/total_objects', 0o664, b'624\n') +f('sys/kernel/slab/kmalloc-32/slabs', 0o664, b'16\n') +f('sys/kernel/slab/kmalloc-32/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-32/alloc_calls', 0o664, b''' 1 mtrr_file_add+0xb0/0xe0 age=8355511 pid=1738 cpus=0 + 2 arch_acpi_processor_init_pdc+0x8e/0x180 age=8375727/8375758/8375789 pid=330 cpus=0 + 1 pm_qos_add_requirement+0x34/0xe0 age=8376080 pid=122 cpus=1 + 59 setup_modinfo_srcversion+0x19/0x30 age=8303075/8368435/8376316 pid=105-2754 cpus=0-1 + 42 load_module+0x1455/0x1b30 age=8303075/8366312/8375832 pid=107-2754 cpus=0-1 + 151 load_module+0x1ac4/0x1b30 age=8303071/8368871/8376310 pid=105-2754 cpus=0-1 + 3 mempool_create_node+0x4b/0xf0 age=62046/5606826/8379381 pid=1-13295 cpus=0-1 + 1 strndup_user+0x6d/0xc0 age=8374925 pid=107 cpus=0 + 16 __vmalloc_area_node+0xfb/0x140 age=8328464/8366300/8376086 pid=107-2578 cpus=0-1 + 1 do_kern_mount+0xca/0x110 age=8335800 pid=2476 cpus=0 + 1 do_sys_poll+0xdb/0x450 age=1303 pid=1333 cpus=1 + 1 alloc_vfsmnt+0x97/0x180 age=8335801 pid=2476 cpus=0 + 1 single_open+0x3c/0xb0 age=8355816 pid=1738 cpus=0 + 66 sysfs_new_dirent+0x10c/0x120 age=8360190/8377926/8379815 pid=1-1549 cpus=0-1 + 30 do_shmat+0x169/0x410 age=8274161/8330033/8348616 pid=1738-2621 cpus=0-1 + 21 register_blkdev+0x60/0x150 age=8369695/8377753/8379765 pid=1-951 cpus=0-1 + 39 kvasprintf+0x55/0x90 age=8360190/8378048/8379814 pid=1-1549 cpus=0-1 + 7 pci_save_state+0x1a4/0x250 age=8373637/8378406/8379803 pid=1-126 cpus=0-1 + 2 pcim_enable_device+0x86/0xb0 age=8379255/8379510/8379765 pid=1 cpus=0-1 + 15 acpi_ds_build_internal_package_obj+0xaf/0x1df age=8379932/8379938/8379947 pid=1 cpus=0 + 21 acpi_ds_build_internal_buffer_obj+0xe1/0x121 age=3847501/7731852/8379949 pid=1-330 cpus=0 + 1 acpi_install_gpe_handler+0xa7/0x13a age=8379959 pid=1 cpus=0 + 1 acpi_ev_create_gpe_block+0x282/0x3bf age=8379959 pid=1 cpus=0 + 1 acpi_pci_bind_root+0x8d/0x13e age=8379883 pid=1 cpus=0 + 18 acpi_pci_bind+0x85/0x28d age=8379879/8379879/8379882 pid=1 cpus=0 + 15 rand_initialize_disk+0x1d/0x30 age=62014/7263977/8379377 pid=1-13295 cpus=0-1 + 1 ata_host_start+0xcb/0x1e0 age=8379764 pid=1 cpus=1 + 1 hidinput_connect+0x2372/0x24e0 age=53529 pid=419 cpus=0 + 1 sock_kmalloc+0x5c/0x70 age=8325518 pid=1849 cpus=1 + 2 proto_register+0x7c/0x260 age=8360191/8370012/8379834 pid=1-1549 cpus=0 + 2 neigh_hash_alloc+0x42/0x50 age=8325417/8327412/8329408 pid=0-1849 cpus=1 + 1 nl_pid_hash_rehash+0x180/0x1a0 age=947530 pid=1189 cpus=0 + 28 unix_bind+0xd8/0x3a0 age=8356458/8357177/8366824 pid=1336-1738 cpus=0-1 + 3 ipc_init_proc_interface+0x2e/0x7c age=8379805/8379805/8379805 pid=1 cpus=1 + 13 usb_cache_string+0x65/0xa0 [usbcore] age=22649/4521883/8374921 pid=143-419 cpus=0-1 + 6 usb_get_configuration+0x18f/0x1480 [usbcore] age=67053/6989971/8374921 pid=143-419 cpus=0-1 + 2 _snd_ctl_register_ioctl+0x2b/0x80 [snd] age=8374675/8374675/8374675 pid=107 cpus=0 + 2 snd_oss_info_register+0x40/0xc0 [snd] age=8355350/8355452/8355555 pid=1813 cpus=0 + 6 adjust_io+0xeb/0x120 [rsrc_nonstatic] age=8373110/8373182/8373542 pid=352-800 cpus=0 + 5 adjust_memory+0xe5/0x1a0 [rsrc_nonstatic] age=8373110/8373278/8373535 pid=352-800 cpus=0 + 1 ieee80211_sta_set_extra_ie+0x7d/0xe0 [mac80211] age=8329597 pid=1545 cpus=0 + 2 ieee80211_rx_bss_info+0x4df/0xa20 [mac80211] age=8330170/8342783/8355397 pid=0 cpus=0 + 2 ieee80211_rx_bss_info+0x568/0xa20 [mac80211] age=22736/4188782/8354829 pid=742-1951 cpus=0 + 2 ieee80211_rx_bss_info+0x5f7/0xa20 [mac80211] age=22736/4189294/8355852 pid=742-1772 cpus=0 + 1 rate_control_alloc+0x32/0x110 [mac80211] age=8373757 pid=126 cpus=1 + 2 ieee80211_rate_control_register+0x72/0xf0 [mac80211] age=8374580/8374635/8374690 pid=126 cpus=0-1 + 2 azx_probe+0x9a4/0xc20 [snd_hda_intel] age=8374165/8374165/8374165 pid=107 cpus=1 + 1 async_chainiv_givencrypt+0x71/0x110 [crypto_blkcipher] age=8374560 pid=215 cpus=0 + 1 run+0x66/0x500 [raid1] age=8370114 pid=916 cpus=0 + 1 acpi_cpufreq_cpu_init+0x4d/0x45c [acpi_cpufreq] age=8366427 pid=1358 cpus=0 +''') +f('sys/kernel/slab/kmalloc-32/objs_per_slab', 0o664, b'39\n') +f('sys/kernel/slab/kmalloc-32/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-32/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-32/object_size', 0o664, b'32\n') +f('sys/kernel/slab/kmalloc-32/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-32/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-32/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-32/objects_partial', 0o664, b'149\n') +f('sys/kernel/slab/kmalloc-32/objects', 0o664, b'617\n') +f('sys/kernel/slab/kmalloc-32/order', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-32/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-32/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-32/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-32/partial', 0o664, b'4\n') +f('sys/kernel/slab/kmalloc-32/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-32/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-32/free_calls', 0o664, b''' 409 <not-available> age=4303047399 pid=0 cpus=0 + 4 __vunmap+0xe9/0x120 age=8366429/8372533/8374823 pid=215-1358 cpus=0-1 + 1 vfs_rename+0x301/0x450 age=8274772 pid=2851 cpus=0 + 8 do_sys_poll+0x32b/0x450 age=1304/6728883/8333312 pid=1333 cpus=0-1 + 1 seq_release_private+0x2d/0x60 age=8352378 pid=2141 cpus=0 + 5 single_release+0x2e/0x40 age=8343903/8358822/8366889 pid=1258-1806 cpus=0 + 1 setxattr+0xa6/0x130 age=8355591 pid=1816 cpus=0 + 6 bio_free_map_data+0x25/0x30 age=53571/4350975/8375998 pid=0-318 cpus=0 + 6 remove_kevent+0x44/0x60 age=7219423/7961750/8346613 pid=2271-2423 cpus=0-1 + 57 load_elf_binary+0xa72/0x1e20 age=22671/8213994/8376585 pid=102-13419 cpus=0-1 + 1 generic_acl_set+0x15e/0x1a0 age=8355591 pid=1816 cpus=0 + 67 kobject_uevent_env+0x11a/0x470 age=62016/8246870/8379965 pid=1-13295 cpus=0-1 + 2 pci_get_subsys+0x74/0xa0 age=8375728/8375759/8375790 pid=330 cpus=0 + 8 acpi_evaluate_integer+0xbf/0xd1 age=3847577/7810351/8379888 pid=1-2097 cpus=0 + 3 acpi_ds_create_operand+0x12c/0x209 age=3847578/6867437/8379889 pid=1-2097 cpus=0 + 3 acpi_ns_get_node+0x92/0xa1 age=8374447/8376288/8379960 pid=1-215 cpus=0-1 + 5 acpi_ut_delete_internal_obj+0x15f/0x16f age=8366428/8373878/8375771 pid=330-1358 cpus=0 + 3 acpi_pci_bind+0x277/0x28d age=8379881/8379881/8379883 pid=1 cpus=0 + 1 get_modalias+0xd4/0x120 age=8355825 pid=1772 cpus=0 + 2 ioctl_standard_iw_point+0x179/0x350 age=63360/84363/105367 pid=1541 cpus=0 + 1 pci_bus_assign_resources+0xfe/0x4d0 age=8379836 pid=1 cpus=0 + 1 sg_clean+0x3e/0x80 [usbcore] age=59566 pid=13294 cpus=0 + 9 usb_get_device_descriptor+0x9b/0xa0 [usbcore] age=22724/6523118/8374922 pid=143-419 cpus=0-1 + 1 ieee80211_rx_bss_info+0x552/0xa20 [mac80211] age=22737 pid=742 cpus=0 + 2 ieee80211_rx_bss_info+0x5e1/0xa20 [mac80211] age=22737/4189295/8355853 pid=742-1772 cpus=0 +''') +f('sys/kernel/slab/kmalloc-32/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-64', 0o775) +f('sys/kernel/slab/kmalloc-64/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-64/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-64/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-64/slab_size', 0o664, b'136\n') +f('sys/kernel/slab/kmalloc-64/total_objects', 0o664, b'15300\n') +f('sys/kernel/slab/kmalloc-64/slabs', 0o664, b'510\n') +f('sys/kernel/slab/kmalloc-64/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-64/alloc_calls', 0o664, b''' 30 alternatives_smp_module_add+0x81/0x160 age=8303055/8368397/8380085 pid=0-2754 cpus=0-1 + 39 __request_region+0x39/0x120 age=8373811/8378273/8379949 pid=1-352 cpus=0-1 + 1 audit_log_start+0x353/0x3f0 age=8379797 pid=1 cpus=1 + 16 request_irq+0x9a/0xf0 age=8356279/8374005/8379942 pid=1-1541 cpus=0-1 + 3 devm_request_irq+0x4b/0xc0 age=8379232/8379403/8379747 pid=1 cpus=0-1 + 1 strndup_user+0x6d/0xc0 age=8374545 pid=215 cpus=0 + 95 __get_vm_area_node+0x9b/0x220 age=8303058/8371551/8380085 pid=0-2754 cpus=0-1 + 17 __vmalloc_area_node+0xfb/0x140 age=8309125/8366469/8376299 pid=105-2711 cpus=0-1 + 1 add_swap_extent+0x57/0xc0 age=8372039 pid=867 cpus=0 + 33 dma_pool_alloc+0x6d/0x200 age=8309120/8340771/8374904 pid=143-2711 cpus=0-1 + 40 alloc_kmem_cache_cpu+0x81/0x90 age=8360159/8368022/8379787 pid=1-1549 cpus=0-1 + 164 __percpu_alloc_mask+0x52/0x140 age=61997/8067718/8380085 pid=0-13295 cpus=0-1 + 184 __percpu_alloc_mask+0xbc/0x140 age=62029/8100825/8380085 pid=0-13295 cpus=0-1 + 604 d_alloc+0x19d/0x1f0 age=22685/7859083/8376462 pid=72-24701 cpus=0-1 + 17 alloc_fdtable+0x57/0x160 age=4267/6101781/8357279 pid=1532-12336 cpus=0-1 + 17 alloc_fdtable+0xb4/0x160 age=4267/6101781/8357279 pid=1532-12336 cpus=0-1 + 1 bioset_create+0x21/0xc0 age=8379947 pid=1 cpus=0 + 1 bd_claim_by_disk+0x6f/0x270 age=8370131 pid=916 cpus=0 + 14 posix_acl_alloc+0x1b/0x30 age=53326/7759393/8352180 pid=2175-13390 cpus=0-1 + 5 proc_reg_open+0x3f/0x170 age=8355799/8361268/8366755 pid=1327-1738 cpus=0 + 12754 ext3_init_block_alloc_info+0x22/0x80 age=1/498494/8368528 pid=1-23373 cpus=0-1 + 4 ext3_readdir+0x617/0x650 age=8352064/8352079/8352114 pid=1370 cpus=0 + 8 ext3_htree_store_dirent+0x37/0x130 age=8352064/8352072/8352099 pid=1370 cpus=0 + 277 kobject_create+0x1a/0x40 age=22618/7771015/8380085 pid=0-13295 cpus=0-1 + 1 pci_create_sysfs_dev_files+0x23e/0x3b0 age=8378937 pid=1 cpus=0 + 11 acpi_os_validate_address+0x3d/0xa3 age=8379914/8379927/8379932 pid=1 cpus=0 + 124 acpi_ds_build_internal_package_obj+0xaf/0x1df age=3847484/8233379/8379936 pid=1-330 cpus=0 + 6 acpi_ds_build_internal_buffer_obj+0xe1/0x121 age=8379920/8379925/8379934 pid=1 cpus=0 + 1 acpi_ev_system_memory_region_setup+0x68/0x8f age=8379914 pid=1 cpus=0 + 3 acpi_add_single_object+0x596/0xd3c age=8379878/8379880/8379882 pid=1 cpus=0 + 3 acpi_add_single_object+0x5d8/0xd3c age=8379886/8379888/8379890 pid=1 cpus=0 + 27 acpi_add_single_object+0x9f7/0xd3c age=8379871/8379888/8379900 pid=1 cpus=0 + 55 acpi_ec_add_query_handler+0x31/0x91 age=8379870/8379870/8379870 pid=1 cpus=0 + 1 find_dock+0x2c9/0x426 age=8379950 pid=1 cpus=0 + 6 find_dock_devices+0x5e/0x92 age=8379950/8379950/8379950 pid=1 cpus=0 + 8 acpi_pci_link_add+0x32/0x1db age=8379843/8379844/8379846 pid=1 cpus=0 + 39 acpi_pci_irq_add_prt+0x181/0x324 age=8379862/8379863/8379865 pid=1 cpus=0 + 15 init_dev+0x3c8/0x6f0 age=7217158/8282400/8378180 pid=33-2593 cpus=0-1 + 15 init_dev+0x437/0x6f0 age=7217158/8282400/8378180 pid=33-2593 cpus=0-1 + 3 init_dev+0x5b2/0x6f0 age=7217158/7969269/8364358 pid=1258-2593 cpus=0-1 + 3 init_dev+0x637/0x6f0 age=7217158/7969269/8364358 pid=1258-2593 cpus=0-1 + 2 kobj_map_init+0x36/0xa0 age=8379947/8380016/8380085 pid=0-1 cpus=0 + 38 kobj_map+0x79/0x1a0 age=61997/7936136/8379947 pid=1-13295 cpus=0-1 + 3 dmam_alloc_coherent+0x3f/0xa0 age=8379232/8379403/8379747 pid=1 cpus=0-1 + 1 scsi_probe_and_add_lun+0x65e/0xd80 age=62028 pid=13295 cpus=0 + 170 scsi_dev_info_list_add+0x3d/0x120 age=8379831/8379831/8379831 pid=1 cpus=0 + 1 ahci_init_one+0x137/0xcb0 age=8379748 pid=1 cpus=1 + 1 cpufreq_stat_notifier_policy+0xa1/0x2e0 age=8366410 pid=1358 cpus=0 + 1 cpufreq_stat_notifier_policy+0x17e/0x2e0 age=8366410 pid=1358 cpus=0 + 1 hid_parse_report+0xa9/0x2c0 age=53512 pid=419 cpus=0 + 10 __dev_addr_add+0x69/0xe0 age=8325501/8345496/8360156 pid=8-1849 cpus=0-1 +''') +f('sys/kernel/slab/kmalloc-64/objs_per_slab', 0o664, b'30\n') +f('sys/kernel/slab/kmalloc-64/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-64/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-64/object_size', 0o664, b'64\n') +f('sys/kernel/slab/kmalloc-64/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-64/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-64/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-64/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-64/objects', 0o664, b'15300\n') +f('sys/kernel/slab/kmalloc-64/order', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-64/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-64/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-64/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-64/partial', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-64/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-64/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-64/free_calls', 0o664, b''' 13029 <not-available> age=4303047386 pid=0 cpus=0 + 1 iounmap+0xc2/0x100 age=8379917 pid=1 cpus=0 + 1 memtype_get_idx+0x75/0xc0 age=782 pid=13466 cpus=0 + 2 __release_region+0xc6/0xd0 age=8379754/8379754/8379754 pid=1 cpus=1 + 3 __request_region+0x86/0x120 age=8379828/8379828/8379828 pid=1 cpus=0 + 1 generic_smp_call_function_single_interrupt+0xce/0xe0 age=8355499 pid=0 cpus=1 + 53 __stop_machine+0x216/0x220 age=8303059/8367652/8376299 pid=105-2754 cpus=0-1 + 2 free_irq+0xef/0x190 age=8356302/8367658/8379015 pid=1-1541 cpus=0 + 28 __vunmap+0xcd/0x120 age=8309125/8366969/8376298 pid=105-2711 cpus=0-1 + 8 __vunmap+0xe9/0x120 age=8328457/8364062/8376068 pid=107-2578 cpus=0-1 + 1 percpu_free+0x2d/0x60 age=61987 pid=13295 cpus=0 + 10 do_sys_poll+0x32b/0x450 age=61481/7500944/8334758 pid=1333-2262 cpus=0-1 + 187 d_callback+0x22/0x40 age=22704/7997936/8376459 pid=0-2156 cpus=0-1 + 198 free_fdtable_rcu+0x7a/0xb0 age=1292/3883175/8376371 pid=0-13456 cpus=0-1 + 224 free_fdtable_rcu+0x82/0xb0 age=1292/3491449/8377150 pid=0-13456 cpus=0-1 + 42 proc_reg_release+0x96/0x120 age=3564/7013222/8376067 pid=126-2586 cpus=0-1 + 50 proc_reg_open+0x138/0x170 age=656297/2956669/8367924 pid=1184-12336 cpus=0-1 + 1046 free_rb_tree_fname+0x5c/0xb0 age=5905/4315279/8376402 pid=102-24701 cpus=0-1 + 79 ext3_htree_free_dir_info+0x19/0x20 age=5905/6235661/8376402 pid=102-24701 cpus=0-1 + 26 ext3_clear_inode+0xa5/0xb0 age=12954/2421572/8354304 pid=1253-8445 cpus=0-1 + 1 dynamic_kobj_release+0x2c/0x40 age=8356191 pid=1541 cpus=0 + 66 kobject_uevent_env+0x11a/0x470 age=22624/7608199/8379955 pid=1-2711 cpus=0-1 + 16 acpi_ds_call_control_method+0xfe/0x180 age=3020/4710292/8379848 pid=1-13466 cpus=0-1 + 1 acpi_ev_execute_reg_method+0x129/0x13a age=8379946 pid=1 cpus=0 + 1 acpi_ev_asynch_execute_gpe_method+0xcc/0x119 age=8379905 pid=12 cpus=1 + 33 acpi_evaluate_object+0x1ea/0x1fc age=3015/5838124/8379955 pid=1-13466 cpus=0-1 + 4 acpi_get_object_info+0x1c4/0x1d4 age=8379876/8379888/8379895 pid=1 cpus=0 + 1 acpi_walk_resources+0xa4/0xbd age=8379755 pid=1 cpus=1 + 41 acpi_ut_evaluate_object+0x18d/0x19b age=8379223/8379861/8379919 pid=1 cpus=0-1 + 4 acpi_ut_delete_internal_obj+0x15f/0x16f age=8366416/8373412/8375744 pid=330-1358 cpus=0 + 7 acpi_bus_get_ejd+0x73/0x80 age=8379955/8379955/8379955 pid=1 cpus=0 + 11 pnp_show_options+0x459/0x600 age=1578/1602/1627 pid=13466 cpus=0 + 11 pnp_show_current_resources+0x16f/0x180 age=1578/1603/1628 pid=13466 cpus=0 + 19 release_one_tty+0x53/0x190 age=804540/7566113/8370327 pid=55-2106 cpus=0-1 + 24 release_one_tty+0x60/0x190 age=804540/7729452/8370327 pid=55-2141 cpus=0-1 + 6 release_one_tty+0x167/0x190 age=8352429/8353224/8354794 pid=1967-2141 cpus=0 + 4 devres_remove_group+0x9e/0xe0 age=8379026/8379313/8379753 pid=1 cpus=0-1 + 1 ata_acpi_on_devcfg+0x385/0x6a0 age=8379406 pid=25 cpus=0 + 3 serio_free_event+0x1d/0x30 age=8378463/8378812/8378999 pid=17 cpus=0-1 + 6 input_register_device+0x17c/0x230 age=53514/6988336/8378983 pid=17-803 cpus=0-1 + 1 ip_cork_release+0x1f/0x50 age=8333854 pid=2536 cpus=1 + 1 unix_sock_destructor+0x75/0xd0 age=7217178 pid=2344 cpus=0 + 13 huft_free+0x1e/0x2f age=8379804/8379804/8379804 pid=1 cpus=0 + 6 hub_port_init+0x522/0x740 [usbcore] age=22825/4210550/8374275 pid=419 cpus=0-1 + 1 usb_release_interface_cache+0x2c/0x60 [usbcore] age=8373868 pid=419 cpus=0 + 1 usb_release_interface_cache+0x47/0x60 [usbcore] age=8373868 pid=419 cpus=0 + 1 __param_str_act+0x16c/0xfffffffffffffb13 [thermal] age=8375113 pid=383 cpus=0 + 3 snd_card_file_remove+0x73/0x130 [snd] age=8333050/8337203/8339297 pid=2400-2425 cpus=0 + 2 hid_probe+0x222/0xf30 [usbhid] age=53517/4212911/8372306 pid=419-803 cpus=0 +''') +f('sys/kernel/slab/kmalloc-64/aliases', 0o664, b'0\n') +d('sys/kernel/slab/sgpool-128', 0o775) +f('sys/kernel/slab/sgpool-128/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-128/ctor', 0o664, b'') +f('sys/kernel/slab/sgpool-128/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-128/slab_size', 0o664, b'4224\n') +f('sys/kernel/slab/sgpool-128/total_objects', 0o664, b'14\n') +f('sys/kernel/slab/sgpool-128/slabs', 0o664, b'2\n') +f('sys/kernel/slab/sgpool-128/poison', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-128/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379262/8379262/8379262 pid=1 cpus=0\n') +f('sys/kernel/slab/sgpool-128/objs_per_slab', 0o664, b'7\n') +f('sys/kernel/slab/sgpool-128/shrink', 0o664, b'') +f('sys/kernel/slab/sgpool-128/trace', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-128/object_size', 0o664, b'4096\n') +f('sys/kernel/slab/sgpool-128/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-128/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-128/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-128/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-128/objects', 0o664, b'14\n') +f('sys/kernel/slab/sgpool-128/order', 0o664, b'3\n') +f('sys/kernel/slab/sgpool-128/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-128/store_user', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-128/align', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-128/partial', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-128/validate', 0o664, b'') +f('sys/kernel/slab/sgpool-128/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-128/free_calls', 0o664, b' 2 <not-available> age=4303046812 pid=0 cpus=0\n') +f('sys/kernel/slab/sgpool-128/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kcopyd_job', 0o775) +f('sys/kernel/slab/kcopyd_job/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/ctor', 0o664, b'') +f('sys/kernel/slab/kcopyd_job/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/slab_size', 0o664, b'544\n') +f('sys/kernel/slab/kcopyd_job/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/slabs', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/poison', 0o664, b'1\n') +f('sys/kernel/slab/kcopyd_job/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/kcopyd_job/objs_per_slab', 0o664, b'15\n') +f('sys/kernel/slab/kcopyd_job/shrink', 0o664, b'') +f('sys/kernel/slab/kcopyd_job/trace', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/object_size', 0o664, b'472\n') +f('sys/kernel/slab/kcopyd_job/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/objects', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/order', 0o664, b'1\n') +f('sys/kernel/slab/kcopyd_job/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kcopyd_job/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kcopyd_job/align', 0o664, b'8\n') +f('sys/kernel/slab/kcopyd_job/partial', 0o664, b'0\n') +f('sys/kernel/slab/kcopyd_job/validate', 0o664, b'') +f('sys/kernel/slab/kcopyd_job/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kcopyd_job/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/kcopyd_job/aliases', 0o664, b'0\n') +d('sys/kernel/slab/dm_target_io', 0o775) +f('sys/kernel/slab/dm_target_io/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/ctor', 0o664, b'') +f('sys/kernel/slab/dm_target_io/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/slab_size', 0o664, b'96\n') +f('sys/kernel/slab/dm_target_io/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/slabs', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/poison', 0o664, b'1\n') +f('sys/kernel/slab/dm_target_io/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/dm_target_io/objs_per_slab', 0o664, b'42\n') +f('sys/kernel/slab/dm_target_io/shrink', 0o664, b'') +f('sys/kernel/slab/dm_target_io/trace', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/object_size', 0o664, b'24\n') +f('sys/kernel/slab/dm_target_io/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/objects', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/order', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/dm_target_io/store_user', 0o664, b'1\n') +f('sys/kernel/slab/dm_target_io/align', 0o664, b'8\n') +f('sys/kernel/slab/dm_target_io/partial', 0o664, b'0\n') +f('sys/kernel/slab/dm_target_io/validate', 0o664, b'') +f('sys/kernel/slab/dm_target_io/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/dm_target_io/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/dm_target_io/aliases', 0o664, b'0\n') +d('sys/kernel/slab/signal_cache', 0o775) +f('sys/kernel/slab/signal_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/signal_cache/ctor', 0o664, b'') +f('sys/kernel/slab/signal_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/signal_cache/slab_size', 0o664, b'1024\n') +f('sys/kernel/slab/signal_cache/total_objects', 0o664, b'160\n') +f('sys/kernel/slab/signal_cache/slabs', 0o664, b'10\n') +f('sys/kernel/slab/signal_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/signal_cache/alloc_calls', 0o664, b' 124 copy_process+0x93c/0x1220 age=4145/7851187/8379914 pid=0-12336 cpus=0-1\n') +f('sys/kernel/slab/signal_cache/objs_per_slab', 0o664, b'16\n') +f('sys/kernel/slab/signal_cache/shrink', 0o664, b'') +f('sys/kernel/slab/signal_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/signal_cache/object_size', 0o664, b'896\n') +f('sys/kernel/slab/signal_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/signal_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/signal_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/signal_cache/objects_partial', 0o664, b'70\n') +f('sys/kernel/slab/signal_cache/objects', 0o664, b'150\n') +f('sys/kernel/slab/signal_cache/order', 0o664, b'2\n') +f('sys/kernel/slab/signal_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/signal_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/signal_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/signal_cache/partial', 0o664, b'5\n') +f('sys/kernel/slab/signal_cache/validate', 0o664, b'') +f('sys/kernel/slab/signal_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/signal_cache/free_calls', 0o664, b''' 42 <not-available> age=4303047259 pid=0 cpus=0 + 82 __cleanup_signal+0x20/0x30 age=7186/7586663/8375843 pid=1-13288 cpus=0-1 +''') +f('sys/kernel/slab/signal_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/radix_tree_node', 0o775) +f('sys/kernel/slab/radix_tree_node/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/radix_tree_node/ctor', 0o664, b'radix_tree_node_ctor+0x0/0x10\n') +f('sys/kernel/slab/radix_tree_node/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/radix_tree_node/slab_size', 0o664, b'624\n') +f('sys/kernel/slab/radix_tree_node/total_objects', 0o664, b'6747\n') +f('sys/kernel/slab/radix_tree_node/slabs', 0o664, b'519\n') +f('sys/kernel/slab/radix_tree_node/poison', 0o664, b'1\n') +f('sys/kernel/slab/radix_tree_node/alloc_calls', 0o664, b' 6737 radix_tree_preload+0x3b/0xb0 age=16/6612251/8379044 pid=1-32767 cpus=0-1\n') +f('sys/kernel/slab/radix_tree_node/objs_per_slab', 0o664, b'13\n') +f('sys/kernel/slab/radix_tree_node/shrink', 0o664, b'') +f('sys/kernel/slab/radix_tree_node/trace', 0o664, b'0\n') +f('sys/kernel/slab/radix_tree_node/object_size', 0o664, b'552\n') +f('sys/kernel/slab/radix_tree_node/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/radix_tree_node/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/radix_tree_node/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/radix_tree_node/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/radix_tree_node/objects', 0o664, b'6747\n') +f('sys/kernel/slab/radix_tree_node/order', 0o664, b'1\n') +f('sys/kernel/slab/radix_tree_node/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/radix_tree_node/store_user', 0o664, b'1\n') +f('sys/kernel/slab/radix_tree_node/align', 0o664, b'0\n') +f('sys/kernel/slab/radix_tree_node/partial', 0o664, b'0\n') +f('sys/kernel/slab/radix_tree_node/validate', 0o664, b'') +f('sys/kernel/slab/radix_tree_node/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/radix_tree_node/free_calls', 0o664, b''' 4146 <not-available> age=4303047064 pid=0 cpus=0 + 2591 radix_tree_node_rcu_free+0x41/0x50 age=39290/6239072/8378908 pid=0-32584 cpus=0-1 +''') +f('sys/kernel/slab/radix_tree_node/aliases', 0o664, b'0\n') +d('sys/kernel/slab/uid_cache', 0o775) +f('sys/kernel/slab/uid_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/uid_cache/ctor', 0o664, b'') +f('sys/kernel/slab/uid_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/uid_cache/slab_size', 0o664, b'320\n') +f('sys/kernel/slab/uid_cache/total_objects', 0o664, b'24\n') +f('sys/kernel/slab/uid_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/uid_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/uid_cache/alloc_calls', 0o664, b' 5 alloc_uid+0xbd/0x1e0 age=8351086/8358570/8366097 pid=1333-2177 cpus=0-1\n') +f('sys/kernel/slab/uid_cache/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/uid_cache/shrink', 0o664, b'') +f('sys/kernel/slab/uid_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/uid_cache/object_size', 0o664, b'216\n') +f('sys/kernel/slab/uid_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/uid_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/uid_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/uid_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/uid_cache/objects', 0o664, b'24\n') +f('sys/kernel/slab/uid_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/uid_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/uid_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/uid_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/uid_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/uid_cache/validate', 0o664, b'') +f('sys/kernel/slab/uid_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/uid_cache/free_calls', 0o664, b''' 2 <not-available> age=4303046654 pid=0 cpus=0 + 3 remove_user_sysfs_dir+0xd0/0x100 age=8357175/8367109/8374935 pid=7 cpus=0 +''') +f('sys/kernel/slab/uid_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/tw_sock_TCPv6', 0o775) +f('sys/kernel/slab/tw_sock_TCPv6/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/ctor', 0o664, b'') +f('sys/kernel/slab/tw_sock_TCPv6/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCPv6/slab_size', 0o664, b'256\n') +f('sys/kernel/slab/tw_sock_TCPv6/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/slabs', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/poison', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCPv6/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/tw_sock_TCPv6/objs_per_slab', 0o664, b'16\n') +f('sys/kernel/slab/tw_sock_TCPv6/shrink', 0o664, b'') +f('sys/kernel/slab/tw_sock_TCPv6/trace', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/object_size', 0o664, b'168\n') +f('sys/kernel/slab/tw_sock_TCPv6/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/objects', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/order', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCPv6/store_user', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCPv6/align', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/partial', 0o664, b'0\n') +f('sys/kernel/slab/tw_sock_TCPv6/validate', 0o664, b'') +f('sys/kernel/slab/tw_sock_TCPv6/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/tw_sock_TCPv6/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/tw_sock_TCPv6/aliases', 0o664, b'0\n') +d('sys/kernel/slab/sighand_cache', 0o775) +f('sys/kernel/slab/sighand_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/sighand_cache/ctor', 0o664, b'sighand_ctor+0x0/0x40\n') +f('sys/kernel/slab/sighand_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/sighand_cache/slab_size', 0o664, b'2304\n') +f('sys/kernel/slab/sighand_cache/total_objects', 0o664, b'154\n') +f('sys/kernel/slab/sighand_cache/slabs', 0o664, b'11\n') +f('sys/kernel/slab/sighand_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/sighand_cache/alloc_calls', 0o664, b''' 123 copy_process+0x82a/0x1220 age=4154/7846897/8379923 pid=0-12336 cpus=0-1 + 1 flush_old_exec+0x4e1/0x8a0 age=8378174 pid=1 cpus=0 +''') +f('sys/kernel/slab/sighand_cache/objs_per_slab', 0o664, b'14\n') +f('sys/kernel/slab/sighand_cache/shrink', 0o664, b'') +f('sys/kernel/slab/sighand_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/sighand_cache/object_size', 0o664, b'2184\n') +f('sys/kernel/slab/sighand_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/sighand_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/sighand_cache/destroy_by_rcu', 0o664, b'1\n') +f('sys/kernel/slab/sighand_cache/objects_partial', 0o664, b'61\n') +f('sys/kernel/slab/sighand_cache/objects', 0o664, b'145\n') +f('sys/kernel/slab/sighand_cache/order', 0o664, b'3\n') +f('sys/kernel/slab/sighand_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/sighand_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/sighand_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/sighand_cache/partial', 0o664, b'5\n') +f('sys/kernel/slab/sighand_cache/validate', 0o664, b'') +f('sys/kernel/slab/sighand_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/sighand_cache/free_calls', 0o664, b''' 46 <not-available> age=4303047268 pid=0 cpus=0 + 78 __cleanup_sighand+0x27/0x30 age=7195/7547046/8375852 pid=1-13288 cpus=0-1 +''') +f('sys/kernel/slab/sighand_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/names_cache', 0o775) +f('sys/kernel/slab/names_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/names_cache/ctor', 0o664, b'') +f('sys/kernel/slab/names_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/names_cache/slab_size', 0o664, b'4224\n') +f('sys/kernel/slab/names_cache/total_objects', 0o664, b'14\n') +f('sys/kernel/slab/names_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/names_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/names_cache/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/names_cache/objs_per_slab', 0o664, b'7\n') +f('sys/kernel/slab/names_cache/shrink', 0o664, b'') +f('sys/kernel/slab/names_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/names_cache/object_size', 0o664, b'4096\n') +f('sys/kernel/slab/names_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/names_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/names_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/names_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/names_cache/objects', 0o664, b'14\n') +f('sys/kernel/slab/names_cache/order', 0o664, b'3\n') +f('sys/kernel/slab/names_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/names_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/names_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/names_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/names_cache/validate', 0o664, b'') +f('sys/kernel/slab/names_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/names_cache/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/names_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/dm_io', 0o775) +f('sys/kernel/slab/dm_io/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/ctor', 0o664, b'') +f('sys/kernel/slab/dm_io/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/slab_size', 0o664, b'104\n') +f('sys/kernel/slab/dm_io/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/slabs', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/poison', 0o664, b'1\n') +f('sys/kernel/slab/dm_io/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/dm_io/objs_per_slab', 0o664, b'39\n') +f('sys/kernel/slab/dm_io/shrink', 0o664, b'') +f('sys/kernel/slab/dm_io/trace', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/object_size', 0o664, b'32\n') +f('sys/kernel/slab/dm_io/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/objects', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/order', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/dm_io/store_user', 0o664, b'1\n') +f('sys/kernel/slab/dm_io/align', 0o664, b'8\n') +f('sys/kernel/slab/dm_io/partial', 0o664, b'0\n') +f('sys/kernel/slab/dm_io/validate', 0o664, b'') +f('sys/kernel/slab/dm_io/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/dm_io/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/dm_io/aliases', 0o664, b'0\n') +d('sys/kernel/slab/key_jar', 0o775) +f('sys/kernel/slab/key_jar/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/ctor', 0o664, b'') +f('sys/kernel/slab/key_jar/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/key_jar/slab_size', 0o664, b'320\n') +f('sys/kernel/slab/key_jar/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/slabs', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/poison', 0o664, b'1\n') +f('sys/kernel/slab/key_jar/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/key_jar/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/key_jar/shrink', 0o664, b'') +f('sys/kernel/slab/key_jar/trace', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/object_size', 0o664, b'232\n') +f('sys/kernel/slab/key_jar/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/objects', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/order', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/key_jar/store_user', 0o664, b'1\n') +f('sys/kernel/slab/key_jar/align', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/partial', 0o664, b'0\n') +f('sys/kernel/slab/key_jar/validate', 0o664, b'') +f('sys/kernel/slab/key_jar/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/key_jar/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/key_jar/aliases', 0o664, b'0\n') +d('sys/kernel/slab/tcp_bind_bucket', 0o775) +f('sys/kernel/slab/tcp_bind_bucket/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/tcp_bind_bucket/ctor', 0o664, b'') +f('sys/kernel/slab/tcp_bind_bucket/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/tcp_bind_bucket/slab_size', 0o664, b'128\n') +f('sys/kernel/slab/tcp_bind_bucket/total_objects', 0o664, b'64\n') +f('sys/kernel/slab/tcp_bind_bucket/slabs', 0o664, b'2\n') +f('sys/kernel/slab/tcp_bind_bucket/poison', 0o664, b'1\n') +f('sys/kernel/slab/tcp_bind_bucket/alloc_calls', 0o664, b' 3 inet_bind_bucket_create+0x27/0x80 age=926731/5878918/8356133 pid=1206-1920 cpus=0\n') +f('sys/kernel/slab/tcp_bind_bucket/objs_per_slab', 0o664, b'32\n') +f('sys/kernel/slab/tcp_bind_bucket/shrink', 0o664, b'') +f('sys/kernel/slab/tcp_bind_bucket/trace', 0o664, b'0\n') +f('sys/kernel/slab/tcp_bind_bucket/object_size', 0o664, b'40\n') +f('sys/kernel/slab/tcp_bind_bucket/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/tcp_bind_bucket/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/tcp_bind_bucket/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/tcp_bind_bucket/objects_partial', 0o664, b'2\n') +f('sys/kernel/slab/tcp_bind_bucket/objects', 0o664, b'34\n') +f('sys/kernel/slab/tcp_bind_bucket/order', 0o664, b'0\n') +f('sys/kernel/slab/tcp_bind_bucket/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/tcp_bind_bucket/store_user', 0o664, b'1\n') +f('sys/kernel/slab/tcp_bind_bucket/align', 0o664, b'0\n') +f('sys/kernel/slab/tcp_bind_bucket/partial', 0o664, b'1\n') +f('sys/kernel/slab/tcp_bind_bucket/validate', 0o664, b'') +f('sys/kernel/slab/tcp_bind_bucket/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/tcp_bind_bucket/free_calls', 0o664, b''' 1 <not-available> age=4303046680 pid=0 cpus=0 + 2 inet_bind_bucket_destroy+0x29/0x30 age=1107644/4731733/8355822 pid=0-1707 cpus=0 +''') +f('sys/kernel/slab/tcp_bind_bucket/aliases', 0o664, b'0\n') +d('sys/kernel/slab/mm_struct', 0o775) +f('sys/kernel/slab/mm_struct/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/mm_struct/ctor', 0o664, b'') +f('sys/kernel/slab/mm_struct/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/mm_struct/slab_size', 0o664, b'1216\n') +f('sys/kernel/slab/mm_struct/total_objects', 0o664, b'91\n') +f('sys/kernel/slab/mm_struct/slabs', 0o664, b'7\n') +f('sys/kernel/slab/mm_struct/poison', 0o664, b'1\n') +f('sys/kernel/slab/mm_struct/alloc_calls', 0o664, b''' 52 mm_alloc+0x15/0x50 age=4100/7453183/8378125 pid=1-20296 cpus=0-1 + 27 dup_mm+0x61/0x390 age=8335613/8355052/8376513 pid=71-2467 cpus=0-1 +''') +f('sys/kernel/slab/mm_struct/objs_per_slab', 0o664, b'13\n') +f('sys/kernel/slab/mm_struct/shrink', 0o664, b'') +f('sys/kernel/slab/mm_struct/trace', 0o664, b'0\n') +f('sys/kernel/slab/mm_struct/object_size', 0o664, b'1144\n') +f('sys/kernel/slab/mm_struct/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/mm_struct/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/mm_struct/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/mm_struct/objects_partial', 0o664, b'23\n') +f('sys/kernel/slab/mm_struct/objects', 0o664, b'88\n') +f('sys/kernel/slab/mm_struct/order', 0o664, b'2\n') +f('sys/kernel/slab/mm_struct/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/mm_struct/store_user', 0o664, b'1\n') +f('sys/kernel/slab/mm_struct/align', 0o664, b'0\n') +f('sys/kernel/slab/mm_struct/partial', 0o664, b'2\n') +f('sys/kernel/slab/mm_struct/validate', 0o664, b'') +f('sys/kernel/slab/mm_struct/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/mm_struct/free_calls', 0o664, b''' 6 <not-available> age=4303047216 pid=0 cpus=0 + 73 __mmdrop+0x47/0x60 age=7143/7714522/8376982 pid=1-20295 cpus=0-1 +''') +f('sys/kernel/slab/mm_struct/aliases', 0o664, b'0\n') +d('sys/kernel/slab/dentry', 0o775) +f('sys/kernel/slab/dentry/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/dentry/ctor', 0o664, b'') +f('sys/kernel/slab/dentry/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/dentry/slab_size', 0o664, b'328\n') +f('sys/kernel/slab/dentry/total_objects', 0o664, b'49656\n') +f('sys/kernel/slab/dentry/slabs', 0o664, b'4138\n') +f('sys/kernel/slab/dentry/poison', 0o664, b'1\n') +f('sys/kernel/slab/dentry/alloc_calls', 0o664, b' 49656 d_alloc+0x22/0x1f0 age=0/4250434/8379825 pid=0-32757 cpus=0-1\n') +f('sys/kernel/slab/dentry/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/dentry/shrink', 0o664, b'') +f('sys/kernel/slab/dentry/trace', 0o664, b'0\n') +f('sys/kernel/slab/dentry/object_size', 0o664, b'256\n') +f('sys/kernel/slab/dentry/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/dentry/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/dentry/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/dentry/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/dentry/objects', 0o664, b'49656\n') +f('sys/kernel/slab/dentry/order', 0o664, b'0\n') +f('sys/kernel/slab/dentry/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/dentry/store_user', 0o664, b'1\n') +f('sys/kernel/slab/dentry/align', 0o664, b'8\n') +f('sys/kernel/slab/dentry/partial', 0o664, b'0\n') +f('sys/kernel/slab/dentry/validate', 0o664, b'') +f('sys/kernel/slab/dentry/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/dentry/free_calls', 0o664, b''' 30093 <not-available> age=4303047137 pid=0 cpus=0 + 2265 d_free+0x6c/0x80 age=519/5532797/8376904 pid=1-32728 cpus=0-1 + 17299 d_callback+0x31/0x40 age=1040/2433896/8379551 pid=0-30210 cpus=0-1 +''') +f('sys/kernel/slab/dentry/aliases', 0o664, b'0\n') +d('sys/kernel/slab/UDPv6', 0o775) +f('sys/kernel/slab/UDPv6/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/UDPv6/ctor', 0o664, b'') +f('sys/kernel/slab/UDPv6/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/UDPv6/slab_size', 0o664, b'1472\n') +f('sys/kernel/slab/UDPv6/total_objects', 0o664, b'22\n') +f('sys/kernel/slab/UDPv6/slabs', 0o664, b'1\n') +f('sys/kernel/slab/UDPv6/poison', 0o664, b'1\n') +f('sys/kernel/slab/UDPv6/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/UDPv6/objs_per_slab', 0o664, b'22\n') +f('sys/kernel/slab/UDPv6/shrink', 0o664, b'') +f('sys/kernel/slab/UDPv6/trace', 0o664, b'0\n') +f('sys/kernel/slab/UDPv6/object_size', 0o664, b'1368\n') +f('sys/kernel/slab/UDPv6/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/UDPv6/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/UDPv6/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/UDPv6/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/UDPv6/objects', 0o664, b'22\n') +f('sys/kernel/slab/UDPv6/order', 0o664, b'3\n') +f('sys/kernel/slab/UDPv6/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/UDPv6/store_user', 0o664, b'1\n') +f('sys/kernel/slab/UDPv6/align', 0o664, b'0\n') +f('sys/kernel/slab/UDPv6/partial', 0o664, b'0\n') +f('sys/kernel/slab/UDPv6/validate', 0o664, b'') +f('sys/kernel/slab/UDPv6/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/UDPv6/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/UDPv6/aliases', 0o664, b'0\n') +d('sys/kernel/slab/mqueue_inode_cache', 0o775) +f('sys/kernel/slab/mqueue_inode_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/mqueue_inode_cache/ctor', 0o664, b'init_once+0x0/0x10\n') +f('sys/kernel/slab/mqueue_inode_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/mqueue_inode_cache/slab_size', 0o664, b'1536\n') +f('sys/kernel/slab/mqueue_inode_cache/total_objects', 0o664, b'21\n') +f('sys/kernel/slab/mqueue_inode_cache/slabs', 0o664, b'1\n') +f('sys/kernel/slab/mqueue_inode_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/mqueue_inode_cache/alloc_calls', 0o664, b' 1 mqueue_alloc_inode+0x15/0x30 age=8380010 pid=1 cpus=1\n') +f('sys/kernel/slab/mqueue_inode_cache/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/mqueue_inode_cache/shrink', 0o664, b'') +f('sys/kernel/slab/mqueue_inode_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/mqueue_inode_cache/object_size', 0o664, b'1456\n') +f('sys/kernel/slab/mqueue_inode_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/mqueue_inode_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/mqueue_inode_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/mqueue_inode_cache/objects_partial', 0o664, b'1\n') +f('sys/kernel/slab/mqueue_inode_cache/objects', 0o664, b'1\n') +f('sys/kernel/slab/mqueue_inode_cache/order', 0o664, b'3\n') +f('sys/kernel/slab/mqueue_inode_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/mqueue_inode_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/mqueue_inode_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/mqueue_inode_cache/partial', 0o664, b'1\n') +f('sys/kernel/slab/mqueue_inode_cache/validate', 0o664, b'') +f('sys/kernel/slab/mqueue_inode_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/mqueue_inode_cache/free_calls', 0o664, b' 1 <not-available> age=4303047603 pid=0 cpus=0\n') +f('sys/kernel/slab/mqueue_inode_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/biovec-128', 0o775) +f('sys/kernel/slab/biovec-128/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/biovec-128/ctor', 0o664, b'') +f('sys/kernel/slab/biovec-128/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/biovec-128/slab_size', 0o664, b'2176\n') +f('sys/kernel/slab/biovec-128/total_objects', 0o664, b'15\n') +f('sys/kernel/slab/biovec-128/slabs', 0o664, b'1\n') +f('sys/kernel/slab/biovec-128/poison', 0o664, b'1\n') +f('sys/kernel/slab/biovec-128/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379474/8379474/8379474 pid=1 cpus=0\n') +f('sys/kernel/slab/biovec-128/objs_per_slab', 0o664, b'15\n') +f('sys/kernel/slab/biovec-128/shrink', 0o664, b'') +f('sys/kernel/slab/biovec-128/trace', 0o664, b'0\n') +f('sys/kernel/slab/biovec-128/object_size', 0o664, b'2048\n') +f('sys/kernel/slab/biovec-128/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/biovec-128/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/biovec-128/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/biovec-128/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/biovec-128/objects', 0o664, b'15\n') +f('sys/kernel/slab/biovec-128/order', 0o664, b'3\n') +f('sys/kernel/slab/biovec-128/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/biovec-128/store_user', 0o664, b'1\n') +f('sys/kernel/slab/biovec-128/align', 0o664, b'0\n') +f('sys/kernel/slab/biovec-128/partial', 0o664, b'0\n') +f('sys/kernel/slab/biovec-128/validate', 0o664, b'') +f('sys/kernel/slab/biovec-128/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/biovec-128/free_calls', 0o664, b' 2 <not-available> age=4303046908 pid=0 cpus=0\n') +f('sys/kernel/slab/biovec-128/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-192', 0o775) +f('sys/kernel/slab/kmalloc-192/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-192/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-192/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-192/slab_size', 0o664, b'264\n') +f('sys/kernel/slab/kmalloc-192/total_objects', 0o664, b'255\n') +f('sys/kernel/slab/kmalloc-192/slabs', 0o664, b'17\n') +f('sys/kernel/slab/kmalloc-192/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-192/alloc_calls', 0o664, b''' 10 sched_create_group+0x91/0x220 age=8351861/8359345/8366872 pid=1333-2177 cpus=0-1 + 10 sched_create_group+0xae/0x220 age=8351861/8359345/8366872 pid=1333-2177 cpus=0-1 + 10 groups_alloc+0x41/0xe0 age=17070/6159814/8366872 pid=1333-20296 cpus=0-1 + 9 param_sysfs_setup+0x87/0x140 age=8303102/8368759/8379996 pid=1-2754 cpus=0-1 + 2 futex_lock_pi+0x776/0xb00 age=125614/1986240/3846867 pid=2411-13213 cpus=0-1 + 18 mempool_create_node+0x2e/0xf0 age=62077/7917175/8379995 pid=1-13295 cpus=0-1 + 4 __vmalloc_area_node+0xfb/0x140 age=8370390/8373664/8374956 pid=107-901 cpus=0 + 30 __percpu_alloc_mask+0xbc/0x140 age=8370400/8377809/8380000 pid=1-900 cpus=0-1 + 4 d_alloc+0x19d/0x1f0 age=61160/6282991/8356935 pid=1706-13349 cpus=0-1 + 1 bm_register_write+0x63/0x630 age=8354110 pid=2054 cpus=1 + 1 sysfs_open_file+0xd6/0x230 age=0 pid=13466 cpus=0 + 15 ipc_rcu_alloc+0x4a/0x70 age=8274192/8330064/8348647 pid=2177-2621 cpus=0-1 + 28 kset_create_and_add+0x35/0xa0 age=8355999/8378311/8380000 pid=1-1766 cpus=0-1 + 1 acpi_ds_build_internal_package_obj+0xaf/0x1df age=8379979 pid=1 cpus=0 + 3 acpi_ds_build_internal_buffer_obj+0xe1/0x121 age=8379976/8379976/8379977 pid=1 cpus=0 + 1 acpi_power_add+0x4a/0x1d6 age=8379890 pid=1 cpus=0 + 2 ata_host_alloc+0x4f/0xf0 age=8379280/8379538/8379796 pid=1 cpus=0-1 + 8 cpuidle_add_state_sysfs+0xc3/0x140 age=125753/125759/125766 pid=13 cpus=0-1 + 1 hid_parse_report+0x43/0x2c0 age=53560 pid=419 cpus=0 + 2 hid_add_field+0x18a/0x3a0 age=53560/53560/53560 pid=419 cpus=0 + 6 fib_create_info+0x61/0x970 age=8324536/8346547/8367903 pid=1197-1541 cpus=0-1 + 1 unix_sysctl_register+0x2a/0x80 age=8379847 pid=1 cpus=0 + 1 rtnetlink_init+0x38/0x113 age=8379999 pid=1 cpus=0 + 1 inet_diag_init+0x15/0x6b age=8378998 pid=1 cpus=0 + 41 usb_alloc_urb+0x19/0x50 [usbcore] age=22746/1043846/8374920 pid=143-419 cpus=0-1 + 1 usb_get_configuration+0x5f2/0x1480 [usbcore] age=22753 pid=419 cpus=0 + 2 usb_get_configuration+0x1388/0x1480 [usbcore] age=8372394/8372581/8372769 pid=419 cpus=0 + 1 sr_probe+0x76/0x540 [sr_mod] age=8375854 pid=163 cpus=0 + 18 snd_ctl_new+0x28/0x90 [snd] age=8374174/8374174/8374174 pid=107 cpus=1 + 1 iwl3945_pci_probe+0xd3f/0x1020 [iwl3945] age=8373796 pid=126 cpus=1 + 1 blkcipher_walk_next+0x29c/0x390 [crypto_blkcipher] age=8374562 pid=215 cpus=1 + 3 dm_register_target+0x1f/0xf0 [dm_mod] age=8370400/8370400/8370401 pid=900 cpus=0 + 1 ipv6_icmp_sysctl_init+0x22/0x40 [ipv6] age=8360202 pid=1549 cpus=0 + 1 snd_seq_pool_new+0x1b/0x80 [snd_seq] age=8355636 pid=1805 cpus=0 +''') +f('sys/kernel/slab/kmalloc-192/objs_per_slab', 0o664, b'15\n') +f('sys/kernel/slab/kmalloc-192/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-192/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-192/object_size', 0o664, b'192\n') +f('sys/kernel/slab/kmalloc-192/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-192/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-192/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-192/objects_partial', 0o664, b'14\n') +f('sys/kernel/slab/kmalloc-192/objects', 0o664, b'254\n') +f('sys/kernel/slab/kmalloc-192/order', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-192/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-192/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-192/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-192/partial', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-192/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-192/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-192/free_calls', 0o664, b''' 149 <not-available> age=4303047430 pid=0 cpus=0 + 5 free_sched_group+0x3b/0x80 age=363179/6767246/8375130 pid=0-1614 cpus=0-1 + 1 free_sched_group+0x50/0x80 age=8369988 pid=0 cpus=0 + 1 do_exit+0x713/0x960 age=8333169 pid=2558 cpus=1 + 7 groups_free+0x56/0x60 age=17071/4081875/8369994 pid=0-1690 cpus=0-1 + 1 __vunmap+0xe9/0x120 age=8356237 pid=1748 cpus=1 + 1 do_readv_writev+0xe4/0x1e0 age=8331191 pid=2262 cpus=0 + 4 getxattr+0x8c/0x140 age=0/6266155/8357946 pid=1610-13466 cpus=0-1 + 20 sysfs_release+0x7c/0xa0 age=53608/7118781/8376453 pid=226-2519 cpus=0-1 + 1 ipc_immediate_free+0x9/0x10 age=8330259 pid=2568 cpus=0 + 1 acpi_pci_irq_add_prt+0x30b/0x324 age=8379911 pid=1 cpus=0 + 6 cpuidle_remove_state_sysfs+0x4f/0x70 age=125768/1366349/3847513 pid=13 cpus=0 + 4 free_fib_info+0x34/0x60 age=8367904/8367909/8367920 pid=1185-1197 cpus=0-1 + 36 urb_destroy+0x23/0x30 [usbcore] age=22749/2596918/8374921 pid=143-13294 cpus=0-1 + 1 sg_clean+0x3e/0x80 [usbcore] age=61399 pid=13294 cpus=0 + 1 0xffffffffa006521f age=8355637 pid=1805 cpus=0 +''') +f('sys/kernel/slab/kmalloc-192/aliases', 0o664, b'0\n') +d('sys/kernel/slab/task_struct', 0o775) +f('sys/kernel/slab/task_struct/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/task_struct/ctor', 0o664, b'') +f('sys/kernel/slab/task_struct/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/task_struct/slab_size', 0o664, b'4400\n') +f('sys/kernel/slab/task_struct/total_objects', 0o664, b'224\n') +f('sys/kernel/slab/task_struct/slabs', 0o664, b'32\n') +f('sys/kernel/slab/task_struct/poison', 0o664, b'1\n') +f('sys/kernel/slab/task_struct/alloc_calls', 0o664, b' 203 copy_process+0xa4/0x1220 age=4172/8008848/8379941 pid=0-13212 cpus=0-1\n') +f('sys/kernel/slab/task_struct/objs_per_slab', 0o664, b'7\n') +f('sys/kernel/slab/task_struct/shrink', 0o664, b'') +f('sys/kernel/slab/task_struct/trace', 0o664, b'0\n') +f('sys/kernel/slab/task_struct/object_size', 0o664, b'4320\n') +f('sys/kernel/slab/task_struct/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/task_struct/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/task_struct/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/task_struct/objects_partial', 0o664, b'57\n') +f('sys/kernel/slab/task_struct/objects', 0o664, b'211\n') +f('sys/kernel/slab/task_struct/order', 0o664, b'3\n') +f('sys/kernel/slab/task_struct/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/task_struct/store_user', 0o664, b'1\n') +f('sys/kernel/slab/task_struct/align', 0o664, b'16\n') +f('sys/kernel/slab/task_struct/partial', 0o664, b'10\n') +f('sys/kernel/slab/task_struct/validate', 0o664, b'') +f('sys/kernel/slab/task_struct/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/task_struct/free_calls', 0o664, b''' 93 <not-available> age=4303047286 pid=0 cpus=0 + 110 free_task+0x30/0x40 age=7208/7706854/8377050 pid=0-13258 cpus=0-1 +''') +f('sys/kernel/slab/task_struct/aliases', 0o664, b'0\n') +d('sys/kernel/slab/sgpool-16', 0o775) +f('sys/kernel/slab/sgpool-16/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-16/ctor', 0o664, b'') +f('sys/kernel/slab/sgpool-16/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-16/slab_size', 0o664, b'640\n') +f('sys/kernel/slab/sgpool-16/total_objects', 0o664, b'24\n') +f('sys/kernel/slab/sgpool-16/slabs', 0o664, b'2\n') +f('sys/kernel/slab/sgpool-16/poison', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-16/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379289/8379289/8379289 pid=1 cpus=0\n') +f('sys/kernel/slab/sgpool-16/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/sgpool-16/shrink', 0o664, b'') +f('sys/kernel/slab/sgpool-16/trace', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-16/object_size', 0o664, b'512\n') +f('sys/kernel/slab/sgpool-16/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-16/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-16/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-16/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-16/objects', 0o664, b'24\n') +f('sys/kernel/slab/sgpool-16/order', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-16/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-16/store_user', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-16/align', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-16/partial', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-16/validate', 0o664, b'') +f('sys/kernel/slab/sgpool-16/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-16/free_calls', 0o664, b' 2 <not-available> age=4303046838 pid=0 cpus=0\n') +f('sys/kernel/slab/sgpool-16/aliases', 0o664, b'0\n') +d('sys/kernel/slab/request_sock_TCPv6', 0o775) +f('sys/kernel/slab/request_sock_TCPv6/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/ctor', 0o664, b'') +f('sys/kernel/slab/request_sock_TCPv6/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/request_sock_TCPv6/slab_size', 0o664, b'256\n') +f('sys/kernel/slab/request_sock_TCPv6/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/slabs', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/poison', 0o664, b'1\n') +f('sys/kernel/slab/request_sock_TCPv6/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/request_sock_TCPv6/objs_per_slab', 0o664, b'16\n') +f('sys/kernel/slab/request_sock_TCPv6/shrink', 0o664, b'') +f('sys/kernel/slab/request_sock_TCPv6/trace', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/object_size', 0o664, b'136\n') +f('sys/kernel/slab/request_sock_TCPv6/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/objects', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/order', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/request_sock_TCPv6/store_user', 0o664, b'1\n') +f('sys/kernel/slab/request_sock_TCPv6/align', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/partial', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCPv6/validate', 0o664, b'') +f('sys/kernel/slab/request_sock_TCPv6/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/request_sock_TCPv6/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/request_sock_TCPv6/aliases', 0o664, b'0\n') +d('sys/kernel/slab/Acpi-Namespace', 0o775) +f('sys/kernel/slab/Acpi-Namespace/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Namespace/ctor', 0o664, b'') +f('sys/kernel/slab/Acpi-Namespace/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Namespace/slab_size', 0o664, b'104\n') +f('sys/kernel/slab/Acpi-Namespace/total_objects', 0o664, b'1755\n') +f('sys/kernel/slab/Acpi-Namespace/slabs', 0o664, b'45\n') +f('sys/kernel/slab/Acpi-Namespace/poison', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Namespace/alloc_calls', 0o664, b' 1709 acpi_ns_create_node+0x34/0x45 age=8375345/8379655/8379737 pid=0-330 cpus=0\n') +f('sys/kernel/slab/Acpi-Namespace/objs_per_slab', 0o664, b'39\n') +f('sys/kernel/slab/Acpi-Namespace/shrink', 0o664, b'') +f('sys/kernel/slab/Acpi-Namespace/trace', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Namespace/object_size', 0o664, b'32\n') +f('sys/kernel/slab/Acpi-Namespace/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Namespace/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Namespace/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Namespace/objects_partial', 0o664, b'32\n') +f('sys/kernel/slab/Acpi-Namespace/objects', 0o664, b'1709\n') +f('sys/kernel/slab/Acpi-Namespace/order', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Namespace/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Namespace/store_user', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Namespace/align', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Namespace/partial', 0o664, b'2\n') +f('sys/kernel/slab/Acpi-Namespace/validate', 0o664, b'') +f('sys/kernel/slab/Acpi-Namespace/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Namespace/free_calls', 0o664, b' 1709 <not-available> age=4303047034 pid=0 cpus=0\n') +f('sys/kernel/slab/Acpi-Namespace/aliases', 0o664, b'0\n') +d('sys/kernel/slab/posix_timers_cache', 0o775) +f('sys/kernel/slab/posix_timers_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/ctor', 0o664, b'') +f('sys/kernel/slab/posix_timers_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/slab_size', 0o664, b'320\n') +f('sys/kernel/slab/posix_timers_cache/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/slabs', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/posix_timers_cache/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/posix_timers_cache/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/posix_timers_cache/shrink', 0o664, b'') +f('sys/kernel/slab/posix_timers_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/object_size', 0o664, b'248\n') +f('sys/kernel/slab/posix_timers_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/objects', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/posix_timers_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/posix_timers_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/posix_timers_cache/validate', 0o664, b'') +f('sys/kernel/slab/posix_timers_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/posix_timers_cache/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/posix_timers_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/scsi_cmd_cache', 0o775) +f('sys/kernel/slab/scsi_cmd_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/scsi_cmd_cache/ctor', 0o664, b'') +f('sys/kernel/slab/scsi_cmd_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/scsi_cmd_cache/slab_size', 0o664, b'448\n') +f('sys/kernel/slab/scsi_cmd_cache/total_objects', 0o664, b'36\n') +f('sys/kernel/slab/scsi_cmd_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/scsi_cmd_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/scsi_cmd_cache/alloc_calls', 0o664, b' 7 scsi_pool_alloc_command+0x25/0x80 age=67290/7192324/8380005 pid=1-419 cpus=0-1\n') +f('sys/kernel/slab/scsi_cmd_cache/objs_per_slab', 0o664, b'18\n') +f('sys/kernel/slab/scsi_cmd_cache/shrink', 0o664, b'') +f('sys/kernel/slab/scsi_cmd_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/scsi_cmd_cache/object_size', 0o664, b'320\n') +f('sys/kernel/slab/scsi_cmd_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/scsi_cmd_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/scsi_cmd_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/scsi_cmd_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/scsi_cmd_cache/objects', 0o664, b'36\n') +f('sys/kernel/slab/scsi_cmd_cache/order', 0o664, b'1\n') +f('sys/kernel/slab/scsi_cmd_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/scsi_cmd_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/scsi_cmd_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/scsi_cmd_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/scsi_cmd_cache/validate', 0o664, b'') +f('sys/kernel/slab/scsi_cmd_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/scsi_cmd_cache/free_calls', 0o664, b''' 5 <not-available> age=4303047639 pid=0 cpus=0 + 2 scsi_pool_free_command+0x4c/0x60 age=67789/4223648/8379508 pid=0 cpus=0 +''') +f('sys/kernel/slab/scsi_cmd_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/eventpoll_pwq', 0o775) +f('sys/kernel/slab/eventpoll_pwq/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_pwq/ctor', 0o664, b'') +f('sys/kernel/slab/eventpoll_pwq/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_pwq/slab_size', 0o664, b'144\n') +f('sys/kernel/slab/eventpoll_pwq/total_objects', 0o664, b'112\n') +f('sys/kernel/slab/eventpoll_pwq/slabs', 0o664, b'4\n') +f('sys/kernel/slab/eventpoll_pwq/poison', 0o664, b'1\n') +f('sys/kernel/slab/eventpoll_pwq/alloc_calls', 0o664, b' 65 ep_ptable_queue_proc+0x35/0xa0 age=2416434/8173328/8356246 pid=1690-20296 cpus=0-1\n') +f('sys/kernel/slab/eventpoll_pwq/objs_per_slab', 0o664, b'28\n') +f('sys/kernel/slab/eventpoll_pwq/shrink', 0o664, b'') +f('sys/kernel/slab/eventpoll_pwq/trace', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_pwq/object_size', 0o664, b'72\n') +f('sys/kernel/slab/eventpoll_pwq/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_pwq/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_pwq/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_pwq/objects_partial', 0o664, b'7\n') +f('sys/kernel/slab/eventpoll_pwq/objects', 0o664, b'91\n') +f('sys/kernel/slab/eventpoll_pwq/order', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_pwq/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/eventpoll_pwq/store_user', 0o664, b'1\n') +f('sys/kernel/slab/eventpoll_pwq/align', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_pwq/partial', 0o664, b'1\n') +f('sys/kernel/slab/eventpoll_pwq/validate', 0o664, b'') +f('sys/kernel/slab/eventpoll_pwq/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/eventpoll_pwq/free_calls', 0o664, b''' 61 <not-available> age=4303046794 pid=0 cpus=0 + 4 ep_unregister_pollwait+0x61/0x80 age=2416452/6864185/8356241 pid=1690-2073 cpus=0-1 +''') +f('sys/kernel/slab/eventpoll_pwq/aliases', 0o664, b'0\n') +d('sys/kernel/slab/journal_handle', 0o775) +f('sys/kernel/slab/journal_handle/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/journal_handle/ctor', 0o664, b'') +f('sys/kernel/slab/journal_handle/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/journal_handle/slab_size', 0o664, b'128\n') +f('sys/kernel/slab/journal_handle/total_objects', 0o664, b'64\n') +f('sys/kernel/slab/journal_handle/slabs', 0o664, b'2\n') +f('sys/kernel/slab/journal_handle/poison', 0o664, b'1\n') +f('sys/kernel/slab/journal_handle/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/journal_handle/objs_per_slab', 0o664, b'32\n') +f('sys/kernel/slab/journal_handle/shrink', 0o664, b'') +f('sys/kernel/slab/journal_handle/trace', 0o664, b'0\n') +f('sys/kernel/slab/journal_handle/object_size', 0o664, b'56\n') +f('sys/kernel/slab/journal_handle/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/journal_handle/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/journal_handle/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/journal_handle/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/journal_handle/objects', 0o664, b'64\n') +f('sys/kernel/slab/journal_handle/order', 0o664, b'0\n') +f('sys/kernel/slab/journal_handle/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/journal_handle/store_user', 0o664, b'1\n') +f('sys/kernel/slab/journal_handle/align', 0o664, b'0\n') +f('sys/kernel/slab/journal_handle/partial', 0o664, b'0\n') +f('sys/kernel/slab/journal_handle/validate', 0o664, b'') +f('sys/kernel/slab/journal_handle/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/journal_handle/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/journal_handle/aliases', 0o664, b'0\n') +d('sys/kernel/slab/bsg_cmd', 0o775) +f('sys/kernel/slab/bsg_cmd/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/ctor', 0o664, b'') +f('sys/kernel/slab/bsg_cmd/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/slab_size', 0o664, b'384\n') +f('sys/kernel/slab/bsg_cmd/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/slabs', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/poison', 0o664, b'1\n') +f('sys/kernel/slab/bsg_cmd/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/bsg_cmd/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/bsg_cmd/shrink', 0o664, b'') +f('sys/kernel/slab/bsg_cmd/trace', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/object_size', 0o664, b'312\n') +f('sys/kernel/slab/bsg_cmd/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/objects', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/order', 0o664, b'1\n') +f('sys/kernel/slab/bsg_cmd/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/bsg_cmd/store_user', 0o664, b'1\n') +f('sys/kernel/slab/bsg_cmd/align', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/partial', 0o664, b'0\n') +f('sys/kernel/slab/bsg_cmd/validate', 0o664, b'') +f('sys/kernel/slab/bsg_cmd/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/bsg_cmd/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/bsg_cmd/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kiocb', 0o775) +f('sys/kernel/slab/kiocb/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/ctor', 0o664, b'') +f('sys/kernel/slab/kiocb/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/kiocb/slab_size', 0o664, b'320\n') +f('sys/kernel/slab/kiocb/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/slabs', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/poison', 0o664, b'1\n') +f('sys/kernel/slab/kiocb/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/kiocb/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/kiocb/shrink', 0o664, b'') +f('sys/kernel/slab/kiocb/trace', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/object_size', 0o664, b'240\n') +f('sys/kernel/slab/kiocb/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/objects', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/order', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kiocb/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kiocb/align', 0o664, b'8\n') +f('sys/kernel/slab/kiocb/partial', 0o664, b'0\n') +f('sys/kernel/slab/kiocb/validate', 0o664, b'') +f('sys/kernel/slab/kiocb/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kiocb/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/kiocb/aliases', 0o664, b'0\n') +d('sys/kernel/slab/file_lock_cache', 0o775) +f('sys/kernel/slab/file_lock_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/file_lock_cache/ctor', 0o664, b'init_once+0x0/0x10\n') +f('sys/kernel/slab/file_lock_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/file_lock_cache/slab_size', 0o664, b'296\n') +f('sys/kernel/slab/file_lock_cache/total_objects', 0o664, b'26\n') +f('sys/kernel/slab/file_lock_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/file_lock_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/file_lock_cache/alloc_calls', 0o664, b''' 2 flock_lock_file_wait+0x2d6/0x2f0 age=8355055/8355767/8356479 pid=1690-1807 cpus=0 + 1 __posix_lock_file+0x3f/0x560 age=8349601 pid=2262 cpus=0 +''') +f('sys/kernel/slab/file_lock_cache/objs_per_slab', 0o664, b'13\n') +f('sys/kernel/slab/file_lock_cache/shrink', 0o664, b'') +f('sys/kernel/slab/file_lock_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/file_lock_cache/object_size', 0o664, b'224\n') +f('sys/kernel/slab/file_lock_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/file_lock_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/file_lock_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/file_lock_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/file_lock_cache/objects', 0o664, b'26\n') +f('sys/kernel/slab/file_lock_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/file_lock_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/file_lock_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/file_lock_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/file_lock_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/file_lock_cache/validate', 0o664, b'') +f('sys/kernel/slab/file_lock_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/file_lock_cache/free_calls', 0o664, b' 3 locks_free_lock+0x3e/0x60 age=8351291/8355422/8359832 pid=1549-2189 cpus=0\n') +f('sys/kernel/slab/file_lock_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/inet_peer_cache', 0o775) +f('sys/kernel/slab/inet_peer_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/ctor', 0o664, b'') +f('sys/kernel/slab/inet_peer_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/inet_peer_cache/slab_size', 0o664, b'192\n') +f('sys/kernel/slab/inet_peer_cache/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/slabs', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/inet_peer_cache/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/inet_peer_cache/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/inet_peer_cache/shrink', 0o664, b'') +f('sys/kernel/slab/inet_peer_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/object_size', 0o664, b'64\n') +f('sys/kernel/slab/inet_peer_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/objects', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/inet_peer_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/inet_peer_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/inet_peer_cache/validate', 0o664, b'') +f('sys/kernel/slab/inet_peer_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/inet_peer_cache/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/inet_peer_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/arp_cache', 0o775) +f('sys/kernel/slab/arp_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/arp_cache/ctor', 0o664, b'') +f('sys/kernel/slab/arp_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/arp_cache/slab_size', 0o664, b'448\n') +f('sys/kernel/slab/arp_cache/total_objects', 0o664, b'36\n') +f('sys/kernel/slab/arp_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/arp_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/arp_cache/alloc_calls', 0o664, b' 1 neigh_create+0x8b/0x530 age=1133499 pid=952 cpus=0\n') +f('sys/kernel/slab/arp_cache/objs_per_slab', 0o664, b'18\n') +f('sys/kernel/slab/arp_cache/shrink', 0o664, b'') +f('sys/kernel/slab/arp_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/arp_cache/object_size', 0o664, b'348\n') +f('sys/kernel/slab/arp_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/arp_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/arp_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/arp_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/arp_cache/objects', 0o664, b'36\n') +f('sys/kernel/slab/arp_cache/order', 0o664, b'1\n') +f('sys/kernel/slab/arp_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/arp_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/arp_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/arp_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/arp_cache/validate', 0o664, b'') +f('sys/kernel/slab/arp_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/arp_cache/free_calls', 0o664, b' 1 neigh_destroy+0x10c/0x160 age=1135741 pid=0 cpus=0\n') +f('sys/kernel/slab/arp_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/biovec-4', 0o775) +f('sys/kernel/slab/biovec-4/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/biovec-4/ctor', 0o664, b'') +f('sys/kernel/slab/biovec-4/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/biovec-4/slab_size', 0o664, b'192\n') +f('sys/kernel/slab/biovec-4/total_objects', 0o664, b'42\n') +f('sys/kernel/slab/biovec-4/slabs', 0o664, b'2\n') +f('sys/kernel/slab/biovec-4/poison', 0o664, b'1\n') +f('sys/kernel/slab/biovec-4/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379500/8379500/8379500 pid=1 cpus=0\n') +f('sys/kernel/slab/biovec-4/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/biovec-4/shrink', 0o664, b'') +f('sys/kernel/slab/biovec-4/trace', 0o664, b'0\n') +f('sys/kernel/slab/biovec-4/object_size', 0o664, b'64\n') +f('sys/kernel/slab/biovec-4/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/biovec-4/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/biovec-4/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/biovec-4/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/biovec-4/objects', 0o664, b'42\n') +f('sys/kernel/slab/biovec-4/order', 0o664, b'0\n') +f('sys/kernel/slab/biovec-4/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/biovec-4/store_user', 0o664, b'1\n') +f('sys/kernel/slab/biovec-4/align', 0o664, b'0\n') +f('sys/kernel/slab/biovec-4/partial', 0o664, b'0\n') +f('sys/kernel/slab/biovec-4/validate', 0o664, b'') +f('sys/kernel/slab/biovec-4/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/biovec-4/free_calls', 0o664, b' 2 <not-available> age=4303046934 pid=0 cpus=0\n') +f('sys/kernel/slab/biovec-4/aliases', 0o664, b'0\n') +d('sys/kernel/slab/scsi_sense_cache', 0o775) +f('sys/kernel/slab/scsi_sense_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/scsi_sense_cache/ctor', 0o664, b'') +f('sys/kernel/slab/scsi_sense_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/scsi_sense_cache/slab_size', 0o664, b'192\n') +f('sys/kernel/slab/scsi_sense_cache/total_objects', 0o664, b'42\n') +f('sys/kernel/slab/scsi_sense_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/scsi_sense_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/scsi_sense_cache/alloc_calls', 0o664, b' 7 scsi_pool_alloc_command+0x4a/0x80 age=67299/7192333/8380014 pid=1-419 cpus=0-1\n') +f('sys/kernel/slab/scsi_sense_cache/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/scsi_sense_cache/shrink', 0o664, b'') +f('sys/kernel/slab/scsi_sense_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/scsi_sense_cache/object_size', 0o664, b'96\n') +f('sys/kernel/slab/scsi_sense_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/scsi_sense_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/scsi_sense_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/scsi_sense_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/scsi_sense_cache/objects', 0o664, b'42\n') +f('sys/kernel/slab/scsi_sense_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/scsi_sense_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/scsi_sense_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/scsi_sense_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/scsi_sense_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/scsi_sense_cache/validate', 0o664, b'') +f('sys/kernel/slab/scsi_sense_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/scsi_sense_cache/free_calls', 0o664, b''' 5 <not-available> age=4303047648 pid=0 cpus=0 + 2 scsi_pool_free_command+0x40/0x60 age=67798/4223657/8379517 pid=0 cpus=0 +''') +f('sys/kernel/slab/scsi_sense_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/cfq_io_context', 0o775) +f('sys/kernel/slab/cfq_io_context/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/cfq_io_context/ctor', 0o664, b'') +f('sys/kernel/slab/cfq_io_context/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/cfq_io_context/slab_size', 0o664, b'240\n') +f('sys/kernel/slab/cfq_io_context/total_objects', 0o664, b'85\n') +f('sys/kernel/slab/cfq_io_context/slabs', 0o664, b'5\n') +f('sys/kernel/slab/cfq_io_context/poison', 0o664, b'1\n') +f('sys/kernel/slab/cfq_io_context/alloc_calls', 0o664, b' 69 cfq_set_request+0x13d/0x390 age=177/7837888/8379613 pid=1-13466 cpus=0-1\n') +f('sys/kernel/slab/cfq_io_context/objs_per_slab', 0o664, b'17\n') +f('sys/kernel/slab/cfq_io_context/shrink', 0o664, b'') +f('sys/kernel/slab/cfq_io_context/trace', 0o664, b'0\n') +f('sys/kernel/slab/cfq_io_context/object_size', 0o664, b'168\n') +f('sys/kernel/slab/cfq_io_context/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/cfq_io_context/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/cfq_io_context/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/cfq_io_context/objects_partial', 0o664, b'16\n') +f('sys/kernel/slab/cfq_io_context/objects', 0o664, b'84\n') +f('sys/kernel/slab/cfq_io_context/order', 0o664, b'0\n') +f('sys/kernel/slab/cfq_io_context/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/cfq_io_context/store_user', 0o664, b'1\n') +f('sys/kernel/slab/cfq_io_context/align', 0o664, b'8\n') +f('sys/kernel/slab/cfq_io_context/partial', 0o664, b'1\n') +f('sys/kernel/slab/cfq_io_context/validate', 0o664, b'') +f('sys/kernel/slab/cfq_io_context/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/cfq_io_context/free_calls', 0o664, b''' 12 <not-available> age=4303047630 pid=0 cpus=0 + 57 cfq_cic_free_rcu+0x21/0xc0 age=61842/7747595/8376055 pid=0-2535 cpus=0-1 +''') +f('sys/kernel/slab/cfq_io_context/aliases', 0o664, b'0\n') +d('sys/kernel/slab/idr_layer_cache', 0o775) +f('sys/kernel/slab/idr_layer_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/idr_layer_cache/ctor', 0o664, b'idr_cache_ctor+0x0/0x10\n') +f('sys/kernel/slab/idr_layer_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/idr_layer_cache/slab_size', 0o664, b'616\n') +f('sys/kernel/slab/idr_layer_cache/total_objects', 0o664, b'442\n') +f('sys/kernel/slab/idr_layer_cache/slabs', 0o664, b'34\n') +f('sys/kernel/slab/idr_layer_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/idr_layer_cache/alloc_calls', 0o664, b' 406 idr_pre_get+0x5d/0x80 age=60336/8278969/8380018 pid=0-13355 cpus=0-1\n') +f('sys/kernel/slab/idr_layer_cache/objs_per_slab', 0o664, b'13\n') +f('sys/kernel/slab/idr_layer_cache/shrink', 0o664, b'') +f('sys/kernel/slab/idr_layer_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/idr_layer_cache/object_size', 0o664, b'544\n') +f('sys/kernel/slab/idr_layer_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/idr_layer_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/idr_layer_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/idr_layer_cache/objects_partial', 0o664, b'82\n') +f('sys/kernel/slab/idr_layer_cache/objects', 0o664, b'420\n') +f('sys/kernel/slab/idr_layer_cache/order', 0o664, b'1\n') +f('sys/kernel/slab/idr_layer_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/idr_layer_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/idr_layer_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/idr_layer_cache/partial', 0o664, b'8\n') +f('sys/kernel/slab/idr_layer_cache/validate', 0o664, b'') +f('sys/kernel/slab/idr_layer_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/idr_layer_cache/free_calls', 0o664, b''' 304 <not-available> age=4303047315 pid=0 cpus=0 + 3 idr_destroy+0x2f/0x40 age=104486/3178486/4715486 pid=13211-13803 cpus=0-1 + 4 idr_layer_rcu_free+0x17/0x20 age=8334501/8362397/8377168 pid=0-1155 cpus=0-1 + 95 ida_get_new_above+0x141/0x210 age=812584/8292482/8380019 pid=0-2593 cpus=0-1 +''') +f('sys/kernel/slab/idr_layer_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/vm_area_struct', 0o775) +f('sys/kernel/slab/vm_area_struct/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/vm_area_struct/ctor', 0o664, b'') +f('sys/kernel/slab/vm_area_struct/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/vm_area_struct/slab_size', 0o664, b'240\n') +f('sys/kernel/slab/vm_area_struct/total_objects', 0o664, b'12087\n') +f('sys/kernel/slab/vm_area_struct/slabs', 0o664, b'711\n') +f('sys/kernel/slab/vm_area_struct/poison', 0o664, b'1\n') +f('sys/kernel/slab/vm_area_struct/alloc_calls', 0o664, b''' 2751 dup_mm+0x194/0x390 age=8335622/8348807/8376522 pid=71-2467 cpus=0-1 + 52 install_special_mapping+0x3d/0xe0 age=4109/7453125/8378118 pid=1-20296 cpus=0-1 + 4006 split_vma+0x61/0x140 age=4107/7930710/8366050 pid=1206-20296 cpus=0-1 + 3 copy_vma+0x125/0x1b0 age=8353805/8353815/8353824 pid=1738 cpus=0 + 54 do_brk+0x2ec/0x360 age=4107/7486452/8378131 pid=1-20296 cpus=0-1 + 5097 mmap_region+0x195/0x5c0 age=4105/7877577/8378131 pid=1-20296 cpus=0-1 + 52 bprm_mm_init+0xa0/0x1b0 age=4109/7453192/8378134 pid=1-20296 cpus=0-1 +''') +f('sys/kernel/slab/vm_area_struct/objs_per_slab', 0o664, b'17\n') +f('sys/kernel/slab/vm_area_struct/shrink', 0o664, b'') +f('sys/kernel/slab/vm_area_struct/trace', 0o664, b'0\n') +f('sys/kernel/slab/vm_area_struct/object_size', 0o664, b'168\n') +f('sys/kernel/slab/vm_area_struct/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/vm_area_struct/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/vm_area_struct/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/vm_area_struct/objects_partial', 0o664, b'47\n') +f('sys/kernel/slab/vm_area_struct/objects', 0o664, b'12049\n') +f('sys/kernel/slab/vm_area_struct/order', 0o664, b'0\n') +f('sys/kernel/slab/vm_area_struct/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/vm_area_struct/store_user', 0o664, b'1\n') +f('sys/kernel/slab/vm_area_struct/align', 0o664, b'0\n') +f('sys/kernel/slab/vm_area_struct/partial', 0o664, b'5\n') +f('sys/kernel/slab/vm_area_struct/validate', 0o664, b'') +f('sys/kernel/slab/vm_area_struct/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/vm_area_struct/free_calls', 0o664, b''' 6424 <not-available> age=4303047229 pid=0 cpus=0 + 5590 remove_vma+0x53/0x70 age=4110/7683818/8376767 pid=71-20296 cpus=0-1 + 1 vma_adjust+0x32c/0x570 age=8364245 pid=1371 cpus=0 +''') +f('sys/kernel/slab/vm_area_struct/aliases', 0o664, b'0\n') +d('sys/kernel/slab/biovec-1', 0o775) +f('sys/kernel/slab/biovec-1/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/biovec-1/ctor', 0o664, b'') +f('sys/kernel/slab/biovec-1/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/biovec-1/slab_size', 0o664, b'96\n') +f('sys/kernel/slab/biovec-1/total_objects', 0o664, b'126\n') +f('sys/kernel/slab/biovec-1/slabs', 0o664, b'3\n') +f('sys/kernel/slab/biovec-1/poison', 0o664, b'1\n') +f('sys/kernel/slab/biovec-1/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379509/8379509/8379509 pid=1 cpus=0\n') +f('sys/kernel/slab/biovec-1/objs_per_slab', 0o664, b'42\n') +f('sys/kernel/slab/biovec-1/shrink', 0o664, b'') +f('sys/kernel/slab/biovec-1/trace', 0o664, b'0\n') +f('sys/kernel/slab/biovec-1/object_size', 0o664, b'16\n') +f('sys/kernel/slab/biovec-1/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/biovec-1/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/biovec-1/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/biovec-1/objects_partial', 0o664, b'2\n') +f('sys/kernel/slab/biovec-1/objects', 0o664, b'86\n') +f('sys/kernel/slab/biovec-1/order', 0o664, b'0\n') +f('sys/kernel/slab/biovec-1/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/biovec-1/store_user', 0o664, b'1\n') +f('sys/kernel/slab/biovec-1/align', 0o664, b'0\n') +f('sys/kernel/slab/biovec-1/partial', 0o664, b'1\n') +f('sys/kernel/slab/biovec-1/validate', 0o664, b'') +f('sys/kernel/slab/biovec-1/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/biovec-1/free_calls', 0o664, b' 2 <not-available> age=4303046943 pid=0 cpus=0\n') +f('sys/kernel/slab/biovec-1/aliases', 0o664, b'0\n') +d('sys/kernel/slab/secpath_cache', 0o775) +f('sys/kernel/slab/secpath_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/ctor', 0o664, b'') +f('sys/kernel/slab/secpath_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/secpath_cache/slab_size', 0o664, b'128\n') +f('sys/kernel/slab/secpath_cache/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/slabs', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/secpath_cache/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/secpath_cache/objs_per_slab', 0o664, b'32\n') +f('sys/kernel/slab/secpath_cache/shrink', 0o664, b'') +f('sys/kernel/slab/secpath_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/object_size', 0o664, b'56\n') +f('sys/kernel/slab/secpath_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/objects', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/secpath_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/secpath_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/secpath_cache/validate', 0o664, b'') +f('sys/kernel/slab/secpath_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/secpath_cache/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/secpath_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/UNIX', 0o775) +f('sys/kernel/slab/UNIX/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/UNIX/ctor', 0o664, b'') +f('sys/kernel/slab/UNIX/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/UNIX/slab_size', 0o664, b'1472\n') +f('sys/kernel/slab/UNIX/total_objects', 0o664, b'506\n') +f('sys/kernel/slab/UNIX/slabs', 0o664, b'23\n') +f('sys/kernel/slab/UNIX/poison', 0o664, b'1\n') +f('sys/kernel/slab/UNIX/alloc_calls', 0o664, b' 450 sk_prot_alloc+0x1e/0xb0 age=61033/8220474/8376385 pid=71-20296 cpus=0-1\n') +f('sys/kernel/slab/UNIX/objs_per_slab', 0o664, b'22\n') +f('sys/kernel/slab/UNIX/shrink', 0o664, b'') +f('sys/kernel/slab/UNIX/trace', 0o664, b'0\n') +f('sys/kernel/slab/UNIX/object_size', 0o664, b'1376\n') +f('sys/kernel/slab/UNIX/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/UNIX/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/UNIX/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/UNIX/objects_partial', 0o664, b'178\n') +f('sys/kernel/slab/UNIX/objects', 0o664, b'486\n') +f('sys/kernel/slab/UNIX/order', 0o664, b'3\n') +f('sys/kernel/slab/UNIX/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/UNIX/store_user', 0o664, b'1\n') +f('sys/kernel/slab/UNIX/align', 0o664, b'0\n') +f('sys/kernel/slab/UNIX/partial', 0o664, b'9\n') +f('sys/kernel/slab/UNIX/validate', 0o664, b'') +f('sys/kernel/slab/UNIX/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/UNIX/free_calls', 0o664, b''' 235 <not-available> age=4303046663 pid=0 cpus=0 + 215 sk_free+0x80/0x100 age=61050/8083366/8375930 pid=76-20292 cpus=0-1 +''') +f('sys/kernel/slab/UNIX/aliases', 0o664, b'0\n') +d('sys/kernel/slab/RAWv6', 0o775) +f('sys/kernel/slab/RAWv6/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/RAWv6/ctor', 0o664, b'') +f('sys/kernel/slab/RAWv6/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/RAWv6/slab_size', 0o664, b'1472\n') +f('sys/kernel/slab/RAWv6/total_objects', 0o664, b'22\n') +f('sys/kernel/slab/RAWv6/slabs', 0o664, b'1\n') +f('sys/kernel/slab/RAWv6/poison', 0o664, b'1\n') +f('sys/kernel/slab/RAWv6/alloc_calls', 0o664, b' 5 sk_prot_alloc+0x1e/0xb0 age=8360545/8360552/8360555 pid=1549 cpus=0\n') +f('sys/kernel/slab/RAWv6/objs_per_slab', 0o664, b'22\n') +f('sys/kernel/slab/RAWv6/shrink', 0o664, b'') +f('sys/kernel/slab/RAWv6/trace', 0o664, b'0\n') +f('sys/kernel/slab/RAWv6/object_size', 0o664, b'1376\n') +f('sys/kernel/slab/RAWv6/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/RAWv6/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/RAWv6/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/RAWv6/objects_partial', 0o664, b'5\n') +f('sys/kernel/slab/RAWv6/objects', 0o664, b'5\n') +f('sys/kernel/slab/RAWv6/order', 0o664, b'3\n') +f('sys/kernel/slab/RAWv6/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/RAWv6/store_user', 0o664, b'1\n') +f('sys/kernel/slab/RAWv6/align', 0o664, b'0\n') +f('sys/kernel/slab/RAWv6/partial', 0o664, b'1\n') +f('sys/kernel/slab/RAWv6/validate', 0o664, b'') +f('sys/kernel/slab/RAWv6/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/RAWv6/free_calls', 0o664, b' 5 <not-available> age=4303047773 pid=0 cpus=0\n') +f('sys/kernel/slab/RAWv6/aliases', 0o664, b'0\n') +d('sys/kernel/slab/sgpool-64', 0o775) +f('sys/kernel/slab/sgpool-64/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-64/ctor', 0o664, b'') +f('sys/kernel/slab/sgpool-64/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-64/slab_size', 0o664, b'2176\n') +f('sys/kernel/slab/sgpool-64/total_objects', 0o664, b'30\n') +f('sys/kernel/slab/sgpool-64/slabs', 0o664, b'2\n') +f('sys/kernel/slab/sgpool-64/poison', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-64/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379271/8379271/8379271 pid=1 cpus=0\n') +f('sys/kernel/slab/sgpool-64/objs_per_slab', 0o664, b'15\n') +f('sys/kernel/slab/sgpool-64/shrink', 0o664, b'') +f('sys/kernel/slab/sgpool-64/trace', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-64/object_size', 0o664, b'2048\n') +f('sys/kernel/slab/sgpool-64/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-64/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-64/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-64/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-64/objects', 0o664, b'30\n') +f('sys/kernel/slab/sgpool-64/order', 0o664, b'3\n') +f('sys/kernel/slab/sgpool-64/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-64/store_user', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-64/align', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-64/partial', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-64/validate', 0o664, b'') +f('sys/kernel/slab/sgpool-64/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-64/free_calls', 0o664, b' 2 <not-available> age=4303046820 pid=0 cpus=0\n') +f('sys/kernel/slab/sgpool-64/aliases', 0o664, b'0\n') +d('sys/kernel/slab/bdev_cache', 0o775) +f('sys/kernel/slab/bdev_cache/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/bdev_cache/ctor', 0o664, b'init_once+0x0/0x100\n') +f('sys/kernel/slab/bdev_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/bdev_cache/slab_size', 0o664, b'1536\n') +f('sys/kernel/slab/bdev_cache/total_objects', 0o664, b'42\n') +f('sys/kernel/slab/bdev_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/bdev_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/bdev_cache/alloc_calls', 0o664, b' 13 bdev_alloc_inode+0x15/0x30 age=61383/7093434/8379778 pid=0-13333 cpus=0\n') +f('sys/kernel/slab/bdev_cache/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/bdev_cache/shrink', 0o664, b'') +f('sys/kernel/slab/bdev_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/bdev_cache/object_size', 0o664, b'1432\n') +f('sys/kernel/slab/bdev_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/bdev_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/bdev_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/bdev_cache/objects_partial', 0o664, b'11\n') +f('sys/kernel/slab/bdev_cache/objects', 0o664, b'32\n') +f('sys/kernel/slab/bdev_cache/order', 0o664, b'3\n') +f('sys/kernel/slab/bdev_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/bdev_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/bdev_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/bdev_cache/partial', 0o664, b'1\n') +f('sys/kernel/slab/bdev_cache/validate', 0o664, b'') +f('sys/kernel/slab/bdev_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/bdev_cache/free_calls', 0o664, b''' 9 <not-available> age=4303047074 pid=0 cpus=0 + 4 bdev_destroy_inode+0x1f/0x30 age=61405/4218130/8374840 pid=488-13325 cpus=0-1 +''') +f('sys/kernel/slab/bdev_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/fasync_cache', 0o775) +f('sys/kernel/slab/fasync_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/fasync_cache/ctor', 0o664, b'') +f('sys/kernel/slab/fasync_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/fasync_cache/slab_size', 0o664, b'96\n') +f('sys/kernel/slab/fasync_cache/total_objects', 0o664, b'42\n') +f('sys/kernel/slab/fasync_cache/slabs', 0o664, b'1\n') +f('sys/kernel/slab/fasync_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/fasync_cache/alloc_calls', 0o664, b' 1 fasync_helper+0x115/0x130 age=8354059 pid=1738 cpus=0\n') +f('sys/kernel/slab/fasync_cache/objs_per_slab', 0o664, b'42\n') +f('sys/kernel/slab/fasync_cache/shrink', 0o664, b'') +f('sys/kernel/slab/fasync_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/fasync_cache/object_size', 0o664, b'24\n') +f('sys/kernel/slab/fasync_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/fasync_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/fasync_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/fasync_cache/objects_partial', 0o664, b'1\n') +f('sys/kernel/slab/fasync_cache/objects', 0o664, b'1\n') +f('sys/kernel/slab/fasync_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/fasync_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/fasync_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/fasync_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/fasync_cache/partial', 0o664, b'1\n') +f('sys/kernel/slab/fasync_cache/validate', 0o664, b'') +f('sys/kernel/slab/fasync_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/fasync_cache/free_calls', 0o664, b' 1 <not-available> age=4303047449 pid=0 cpus=0\n') +f('sys/kernel/slab/fasync_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/UDPLITEv6', 0o775) +f('sys/kernel/slab/UDPLITEv6/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/ctor', 0o664, b'') +f('sys/kernel/slab/UDPLITEv6/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/UDPLITEv6/slab_size', 0o664, b'1472\n') +f('sys/kernel/slab/UDPLITEv6/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/slabs', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/poison', 0o664, b'1\n') +f('sys/kernel/slab/UDPLITEv6/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/UDPLITEv6/objs_per_slab', 0o664, b'22\n') +f('sys/kernel/slab/UDPLITEv6/shrink', 0o664, b'') +f('sys/kernel/slab/UDPLITEv6/trace', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/object_size', 0o664, b'1368\n') +f('sys/kernel/slab/UDPLITEv6/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/objects', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/order', 0o664, b'3\n') +f('sys/kernel/slab/UDPLITEv6/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/UDPLITEv6/store_user', 0o664, b'1\n') +f('sys/kernel/slab/UDPLITEv6/align', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/partial', 0o664, b'0\n') +f('sys/kernel/slab/UDPLITEv6/validate', 0o664, b'') +f('sys/kernel/slab/UDPLITEv6/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/UDPLITEv6/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/UDPLITEv6/aliases', 0o664, b'0\n') +d('sys/kernel/slab/Acpi-Operand', 0o775) +f('sys/kernel/slab/Acpi-Operand/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Operand/ctor', 0o664, b'') +f('sys/kernel/slab/Acpi-Operand/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Operand/slab_size', 0o664, b'144\n') +f('sys/kernel/slab/Acpi-Operand/total_objects', 0o664, b'2688\n') +f('sys/kernel/slab/Acpi-Operand/slabs', 0o664, b'96\n') +f('sys/kernel/slab/Acpi-Operand/poison', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Operand/alloc_calls', 0o664, b' 2653 acpi_ut_allocate_object_desc_dbg+0x39/0x75 age=2625/8339457/8379700 pid=0-13466 cpus=0-1\n') +f('sys/kernel/slab/Acpi-Operand/objs_per_slab', 0o664, b'28\n') +f('sys/kernel/slab/Acpi-Operand/shrink', 0o664, b'') +f('sys/kernel/slab/Acpi-Operand/trace', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Operand/object_size', 0o664, b'72\n') +f('sys/kernel/slab/Acpi-Operand/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Operand/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Operand/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Operand/objects_partial', 0o664, b'171\n') +f('sys/kernel/slab/Acpi-Operand/objects', 0o664, b'2663\n') +f('sys/kernel/slab/Acpi-Operand/order', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Operand/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Operand/store_user', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Operand/align', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-Operand/partial', 0o664, b'7\n') +f('sys/kernel/slab/Acpi-Operand/validate', 0o664, b'') +f('sys/kernel/slab/Acpi-Operand/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-Operand/free_calls', 0o664, b''' 2267 <not-available> age=4303046997 pid=0 cpus=0 + 386 acpi_os_release_object+0x9/0xd age=2626/8137233/8379689 pid=0-13466 cpus=0-1 +''') +f('sys/kernel/slab/Acpi-Operand/aliases', 0o664, b'0\n') +d('sys/kernel/slab/xfrm_dst_cache', 0o775) +f('sys/kernel/slab/xfrm_dst_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/ctor', 0o664, b'') +f('sys/kernel/slab/xfrm_dst_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/xfrm_dst_cache/slab_size', 0o664, b'448\n') +f('sys/kernel/slab/xfrm_dst_cache/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/slabs', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/xfrm_dst_cache/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/xfrm_dst_cache/objs_per_slab', 0o664, b'18\n') +f('sys/kernel/slab/xfrm_dst_cache/shrink', 0o664, b'') +f('sys/kernel/slab/xfrm_dst_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/object_size', 0o664, b'344\n') +f('sys/kernel/slab/xfrm_dst_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/objects', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/order', 0o664, b'1\n') +f('sys/kernel/slab/xfrm_dst_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/xfrm_dst_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/xfrm_dst_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/xfrm_dst_cache/validate', 0o664, b'') +f('sys/kernel/slab/xfrm_dst_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/xfrm_dst_cache/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/xfrm_dst_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/eventpoll_epi', 0o775) +f('sys/kernel/slab/eventpoll_epi/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_epi/ctor', 0o664, b'') +f('sys/kernel/slab/eventpoll_epi/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/eventpoll_epi/slab_size', 0o664, b'256\n') +f('sys/kernel/slab/eventpoll_epi/total_objects', 0o664, b'96\n') +f('sys/kernel/slab/eventpoll_epi/slabs', 0o664, b'6\n') +f('sys/kernel/slab/eventpoll_epi/poison', 0o664, b'1\n') +f('sys/kernel/slab/eventpoll_epi/alloc_calls', 0o664, b' 65 sys_epoll_ctl+0x1a4/0x4d0 age=2416443/8173337/8356255 pid=1690-20296 cpus=0-1\n') +f('sys/kernel/slab/eventpoll_epi/objs_per_slab', 0o664, b'16\n') +f('sys/kernel/slab/eventpoll_epi/shrink', 0o664, b'') +f('sys/kernel/slab/eventpoll_epi/trace', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_epi/object_size', 0o664, b'128\n') +f('sys/kernel/slab/eventpoll_epi/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_epi/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_epi/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_epi/objects_partial', 0o664, b'15\n') +f('sys/kernel/slab/eventpoll_epi/objects', 0o664, b'79\n') +f('sys/kernel/slab/eventpoll_epi/order', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_epi/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/eventpoll_epi/store_user', 0o664, b'1\n') +f('sys/kernel/slab/eventpoll_epi/align', 0o664, b'0\n') +f('sys/kernel/slab/eventpoll_epi/partial', 0o664, b'2\n') +f('sys/kernel/slab/eventpoll_epi/validate', 0o664, b'') +f('sys/kernel/slab/eventpoll_epi/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/eventpoll_epi/free_calls', 0o664, b''' 61 <not-available> age=4303046803 pid=0 cpus=0 + 4 ep_remove+0xae/0xc0 age=2416461/6864194/8356250 pid=1690-2073 cpus=0-1 +''') +f('sys/kernel/slab/eventpoll_epi/aliases', 0o664, b'0\n') +d('sys/kernel/slab/revoke_table', 0o775) +f('sys/kernel/slab/revoke_table/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/revoke_table/ctor', 0o664, b'') +f('sys/kernel/slab/revoke_table/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/revoke_table/slab_size', 0o664, b'88\n') +f('sys/kernel/slab/revoke_table/total_objects', 0o664, b'46\n') +f('sys/kernel/slab/revoke_table/slabs', 0o664, b'1\n') +f('sys/kernel/slab/revoke_table/poison', 0o664, b'1\n') +f('sys/kernel/slab/revoke_table/alloc_calls', 0o664, b' 4 journal_init_revoke_table+0x1b/0xb0 age=8369805/8374155/8378505 pid=1-962 cpus=0\n') +f('sys/kernel/slab/revoke_table/objs_per_slab', 0o664, b'46\n') +f('sys/kernel/slab/revoke_table/shrink', 0o664, b'') +f('sys/kernel/slab/revoke_table/trace', 0o664, b'0\n') +f('sys/kernel/slab/revoke_table/object_size', 0o664, b'16\n') +f('sys/kernel/slab/revoke_table/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/revoke_table/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/revoke_table/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/revoke_table/objects_partial', 0o664, b'4\n') +f('sys/kernel/slab/revoke_table/objects', 0o664, b'4\n') +f('sys/kernel/slab/revoke_table/order', 0o664, b'0\n') +f('sys/kernel/slab/revoke_table/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/revoke_table/store_user', 0o664, b'1\n') +f('sys/kernel/slab/revoke_table/align', 0o664, b'0\n') +f('sys/kernel/slab/revoke_table/partial', 0o664, b'1\n') +f('sys/kernel/slab/revoke_table/validate', 0o664, b'') +f('sys/kernel/slab/revoke_table/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/revoke_table/free_calls', 0o664, b' 4 <not-available> age=4303047546 pid=0 cpus=0\n') +f('sys/kernel/slab/revoke_table/aliases', 0o664, b'0\n') +d('sys/kernel/slab/sgpool-32', 0o775) +f('sys/kernel/slab/sgpool-32/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-32/ctor', 0o664, b'') +f('sys/kernel/slab/sgpool-32/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-32/slab_size', 0o664, b'1152\n') +f('sys/kernel/slab/sgpool-32/total_objects', 0o664, b'28\n') +f('sys/kernel/slab/sgpool-32/slabs', 0o664, b'2\n') +f('sys/kernel/slab/sgpool-32/poison', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-32/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379280/8379280/8379280 pid=1 cpus=0\n') +f('sys/kernel/slab/sgpool-32/objs_per_slab', 0o664, b'14\n') +f('sys/kernel/slab/sgpool-32/shrink', 0o664, b'') +f('sys/kernel/slab/sgpool-32/trace', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-32/object_size', 0o664, b'1024\n') +f('sys/kernel/slab/sgpool-32/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-32/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-32/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-32/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-32/objects', 0o664, b'28\n') +f('sys/kernel/slab/sgpool-32/order', 0o664, b'2\n') +f('sys/kernel/slab/sgpool-32/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-32/store_user', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-32/align', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-32/partial', 0o664, b'0\n') +f('sys/kernel/slab/sgpool-32/validate', 0o664, b'') +f('sys/kernel/slab/sgpool-32/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/sgpool-32/free_calls', 0o664, b' 2 <not-available> age=4303046829 pid=0 cpus=0\n') +f('sys/kernel/slab/sgpool-32/aliases', 0o664, b'0\n') +d('sys/kernel/slab/fib6_nodes', 0o775) +f('sys/kernel/slab/fib6_nodes/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/fib6_nodes/ctor', 0o664, b'') +f('sys/kernel/slab/fib6_nodes/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/fib6_nodes/slab_size', 0o664, b'128\n') +f('sys/kernel/slab/fib6_nodes/total_objects', 0o664, b'64\n') +f('sys/kernel/slab/fib6_nodes/slabs', 0o664, b'2\n') +f('sys/kernel/slab/fib6_nodes/poison', 0o664, b'1\n') +f('sys/kernel/slab/fib6_nodes/alloc_calls', 0o664, b''' 3 fib6_add+0x112/0x6a0 [ipv6] age=8328809/8339785/8360575 pid=8-2080 cpus=0-1 + 1 fib6_add+0x2a2/0x6a0 [ipv6] age=8329973 pid=8 cpus=1 + 1 fib6_add+0x2b6/0x6a0 [ipv6] age=8329973 pid=8 cpus=1 +''') +f('sys/kernel/slab/fib6_nodes/objs_per_slab', 0o664, b'32\n') +f('sys/kernel/slab/fib6_nodes/shrink', 0o664, b'') +f('sys/kernel/slab/fib6_nodes/trace', 0o664, b'0\n') +f('sys/kernel/slab/fib6_nodes/object_size', 0o664, b'48\n') +f('sys/kernel/slab/fib6_nodes/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/fib6_nodes/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/fib6_nodes/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/fib6_nodes/objects_partial', 0o664, b'5\n') +f('sys/kernel/slab/fib6_nodes/objects', 0o664, b'5\n') +f('sys/kernel/slab/fib6_nodes/order', 0o664, b'0\n') +f('sys/kernel/slab/fib6_nodes/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/fib6_nodes/store_user', 0o664, b'1\n') +f('sys/kernel/slab/fib6_nodes/align', 0o664, b'0\n') +f('sys/kernel/slab/fib6_nodes/partial', 0o664, b'2\n') +f('sys/kernel/slab/fib6_nodes/validate', 0o664, b'') +f('sys/kernel/slab/fib6_nodes/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/fib6_nodes/free_calls', 0o664, b' 5 <not-available> age=4303047799 pid=0 cpus=0\n') +f('sys/kernel/slab/fib6_nodes/aliases', 0o664, b'0\n') +d('sys/kernel/slab/flow_cache', 0o775) +f('sys/kernel/slab/flow_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/ctor', 0o664, b'') +f('sys/kernel/slab/flow_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/slab_size', 0o664, b'168\n') +f('sys/kernel/slab/flow_cache/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/slabs', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/flow_cache/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/flow_cache/objs_per_slab', 0o664, b'24\n') +f('sys/kernel/slab/flow_cache/shrink', 0o664, b'') +f('sys/kernel/slab/flow_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/object_size', 0o664, b'96\n') +f('sys/kernel/slab/flow_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/objects', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/flow_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/flow_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/flow_cache/validate', 0o664, b'') +f('sys/kernel/slab/flow_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/flow_cache/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/flow_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/fat_cache', 0o775) +f('sys/kernel/slab/fat_cache/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/fat_cache/ctor', 0o664, b'init_once+0x0/0x10\n') +f('sys/kernel/slab/fat_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/fat_cache/slab_size', 0o664, b'104\n') +f('sys/kernel/slab/fat_cache/total_objects', 0o664, b'39\n') +f('sys/kernel/slab/fat_cache/slabs', 0o664, b'1\n') +f('sys/kernel/slab/fat_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/fat_cache/alloc_calls', 0o664, b' 14 fat_cache_add+0x11f/0x1c0 age=61297/61310/61330 pid=13349 cpus=0\n') +f('sys/kernel/slab/fat_cache/objs_per_slab', 0o664, b'39\n') +f('sys/kernel/slab/fat_cache/shrink', 0o664, b'') +f('sys/kernel/slab/fat_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/fat_cache/object_size', 0o664, b'32\n') +f('sys/kernel/slab/fat_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/fat_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/fat_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/fat_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/fat_cache/objects', 0o664, b'39\n') +f('sys/kernel/slab/fat_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/fat_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/fat_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/fat_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/fat_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/fat_cache/validate', 0o664, b'') +f('sys/kernel/slab/fat_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/fat_cache/free_calls', 0o664, b' 14 <not-available> age=4303047585 pid=0 cpus=0\n') +f('sys/kernel/slab/fat_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/sock_inode_cache', 0o775) +f('sys/kernel/slab/sock_inode_cache/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/sock_inode_cache/ctor', 0o664, b'init_once+0x0/0x10\n') +f('sys/kernel/slab/sock_inode_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/sock_inode_cache/slab_size', 0o664, b'1280\n') +f('sys/kernel/slab/sock_inode_cache/total_objects', 0o664, b'504\n') +f('sys/kernel/slab/sock_inode_cache/slabs', 0o664, b'42\n') +f('sys/kernel/slab/sock_inode_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/sock_inode_cache/alloc_calls', 0o664, b' 481 sock_alloc_inode+0x1a/0x70 age=61330/8214562/8379530 pid=1-20296 cpus=0-1\n') +f('sys/kernel/slab/sock_inode_cache/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/sock_inode_cache/shrink', 0o664, b'') +f('sys/kernel/slab/sock_inode_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/sock_inode_cache/object_size', 0o664, b'1192\n') +f('sys/kernel/slab/sock_inode_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/sock_inode_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/sock_inode_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/sock_inode_cache/objects_partial', 0o664, b'83\n') +f('sys/kernel/slab/sock_inode_cache/objects', 0o664, b'491\n') +f('sys/kernel/slab/sock_inode_cache/order', 0o664, b'2\n') +f('sys/kernel/slab/sock_inode_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/sock_inode_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/sock_inode_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/sock_inode_cache/partial', 0o664, b'8\n') +f('sys/kernel/slab/sock_inode_cache/validate', 0o664, b'') +f('sys/kernel/slab/sock_inode_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/sock_inode_cache/free_calls', 0o664, b''' 276 <not-available> age=4303046961 pid=0 cpus=0 + 205 sock_destroy_inode+0x14/0x20 age=61348/8035806/8376228 pid=76-20292 cpus=0-1 +''') +f('sys/kernel/slab/sock_inode_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/ip_fib_hash', 0o775) +f('sys/kernel/slab/ip_fib_hash/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_hash/ctor', 0o664, b'') +f('sys/kernel/slab/ip_fib_hash/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_hash/slab_size', 0o664, b'144\n') +f('sys/kernel/slab/ip_fib_hash/total_objects', 0o664, b'56\n') +f('sys/kernel/slab/ip_fib_hash/slabs', 0o664, b'2\n') +f('sys/kernel/slab/ip_fib_hash/poison', 0o664, b'1\n') +f('sys/kernel/slab/ip_fib_hash/alloc_calls', 0o664, b' 11 fn_hash_insert+0x5a6/0x800 age=8323831/8347847/8367198 pid=1197-1541 cpus=0-1\n') +f('sys/kernel/slab/ip_fib_hash/objs_per_slab', 0o664, b'28\n') +f('sys/kernel/slab/ip_fib_hash/shrink', 0o664, b'') +f('sys/kernel/slab/ip_fib_hash/trace', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_hash/object_size', 0o664, b'72\n') +f('sys/kernel/slab/ip_fib_hash/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_hash/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_hash/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_hash/objects_partial', 0o664, b'11\n') +f('sys/kernel/slab/ip_fib_hash/objects', 0o664, b'11\n') +f('sys/kernel/slab/ip_fib_hash/order', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_hash/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/ip_fib_hash/store_user', 0o664, b'1\n') +f('sys/kernel/slab/ip_fib_hash/align', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_hash/partial', 0o664, b'2\n') +f('sys/kernel/slab/ip_fib_hash/validate', 0o664, b'') +f('sys/kernel/slab/ip_fib_hash/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/ip_fib_hash/free_calls', 0o664, b''' 7 <not-available> age=4303046724 pid=0 cpus=0 + 4 fn_hash_delete+0x22c/0x290 age=8367201/8367201/8367201 pid=1195 cpus=1 +''') +f('sys/kernel/slab/ip_fib_hash/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc_dma-512', 0o775) +f('sys/kernel/slab/kmalloc_dma-512/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc_dma-512/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc_dma-512/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc_dma-512/slab_size', 0o664, b'584\n') +f('sys/kernel/slab/kmalloc_dma-512/total_objects', 0o664, b'14\n') +f('sys/kernel/slab/kmalloc_dma-512/slabs', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc_dma-512/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc_dma-512/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/kmalloc_dma-512/objs_per_slab', 0o664, b'14\n') +f('sys/kernel/slab/kmalloc_dma-512/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc_dma-512/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc_dma-512/object_size', 0o664, b'512\n') +f('sys/kernel/slab/kmalloc_dma-512/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc_dma-512/cache_dma', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc_dma-512/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc_dma-512/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc_dma-512/objects', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc_dma-512/order', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc_dma-512/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc_dma-512/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc_dma-512/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc_dma-512/partial', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc_dma-512/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc_dma-512/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc_dma-512/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/kmalloc_dma-512/aliases', 0o664, b'0\n') +d('sys/kernel/slab/inode_cache', 0o775) +f('sys/kernel/slab/inode_cache/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/inode_cache/ctor', 0o664, b'init_once+0x0/0x10\n') +f('sys/kernel/slab/inode_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/inode_cache/slab_size', 0o664, b'1144\n') +f('sys/kernel/slab/inode_cache/total_objects', 0o664, b'11676\n') +f('sys/kernel/slab/inode_cache/slabs', 0o664, b'834\n') +f('sys/kernel/slab/inode_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/inode_cache/alloc_calls', 0o664, b' 11655 alloc_inode+0x251/0x280 age=665/7686826/8379810 pid=0-13466 cpus=0-1\n') +f('sys/kernel/slab/inode_cache/objs_per_slab', 0o664, b'14\n') +f('sys/kernel/slab/inode_cache/shrink', 0o664, b'') +f('sys/kernel/slab/inode_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/inode_cache/object_size', 0o664, b'1072\n') +f('sys/kernel/slab/inode_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/inode_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/inode_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/inode_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/inode_cache/objects', 0o664, b'11676\n') +f('sys/kernel/slab/inode_cache/order', 0o664, b'2\n') +f('sys/kernel/slab/inode_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/inode_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/inode_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/inode_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/inode_cache/validate', 0o664, b'') +f('sys/kernel/slab/inode_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/inode_cache/free_calls', 0o664, b''' 11113 <not-available> age=4303047110 pid=0 cpus=0 + 542 destroy_inode+0x4f/0x60 age=1016/6891707/8377435 pid=7-15896 cpus=0-1 +''') +f('sys/kernel/slab/inode_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/inotify_event_cache', 0o775) +f('sys/kernel/slab/inotify_event_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/inotify_event_cache/ctor', 0o664, b'') +f('sys/kernel/slab/inotify_event_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/inotify_event_cache/slab_size', 0o664, b'112\n') +f('sys/kernel/slab/inotify_event_cache/total_objects', 0o664, b'72\n') +f('sys/kernel/slab/inotify_event_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/inotify_event_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/inotify_event_cache/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/inotify_event_cache/objs_per_slab', 0o664, b'36\n') +f('sys/kernel/slab/inotify_event_cache/shrink', 0o664, b'') +f('sys/kernel/slab/inotify_event_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/inotify_event_cache/object_size', 0o664, b'40\n') +f('sys/kernel/slab/inotify_event_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/inotify_event_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/inotify_event_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/inotify_event_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/inotify_event_cache/objects', 0o664, b'72\n') +f('sys/kernel/slab/inotify_event_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/inotify_event_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/inotify_event_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/inotify_event_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/inotify_event_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/inotify_event_cache/validate', 0o664, b'') +f('sys/kernel/slab/inotify_event_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/inotify_event_cache/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/inotify_event_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/UDP', 0o775) +f('sys/kernel/slab/UDP/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/UDP/ctor', 0o664, b'') +f('sys/kernel/slab/UDP/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/UDP/slab_size', 0o664, b'1344\n') +f('sys/kernel/slab/UDP/total_objects', 0o664, b'24\n') +f('sys/kernel/slab/UDP/slabs', 0o664, b'2\n') +f('sys/kernel/slab/UDP/poison', 0o664, b'1\n') +f('sys/kernel/slab/UDP/alloc_calls', 0o664, b' 5 sk_prot_alloc+0x1e/0xb0 age=8327731/8349275/8355457 pid=1545-2586 cpus=0-1\n') +f('sys/kernel/slab/UDP/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/UDP/shrink', 0o664, b'') +f('sys/kernel/slab/UDP/trace', 0o664, b'0\n') +f('sys/kernel/slab/UDP/object_size', 0o664, b'1232\n') +f('sys/kernel/slab/UDP/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/UDP/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/UDP/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/UDP/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/UDP/objects', 0o664, b'24\n') +f('sys/kernel/slab/UDP/order', 0o664, b'2\n') +f('sys/kernel/slab/UDP/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/UDP/store_user', 0o664, b'1\n') +f('sys/kernel/slab/UDP/align', 0o664, b'0\n') +f('sys/kernel/slab/UDP/partial', 0o664, b'0\n') +f('sys/kernel/slab/UDP/validate', 0o664, b'') +f('sys/kernel/slab/UDP/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/UDP/free_calls', 0o664, b''' 1 <not-available> age=4303046759 pid=0 cpus=0 + 4 sk_free+0x80/0x100 age=8327731/8350484/8364461 pid=1371-2586 cpus=0-1 +''') +f('sys/kernel/slab/UDP/aliases', 0o664, b'0\n') +d('sys/kernel/slab/Acpi-ParseExt', 0o775) +f('sys/kernel/slab/Acpi-ParseExt/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-ParseExt/ctor', 0o664, b'') +f('sys/kernel/slab/Acpi-ParseExt/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-ParseExt/slab_size', 0o664, b'144\n') +f('sys/kernel/slab/Acpi-ParseExt/total_objects', 0o664, b'56\n') +f('sys/kernel/slab/Acpi-ParseExt/slabs', 0o664, b'2\n') +f('sys/kernel/slab/Acpi-ParseExt/poison', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-ParseExt/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/Acpi-ParseExt/objs_per_slab', 0o664, b'28\n') +f('sys/kernel/slab/Acpi-ParseExt/shrink', 0o664, b'') +f('sys/kernel/slab/Acpi-ParseExt/trace', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-ParseExt/object_size', 0o664, b'72\n') +f('sys/kernel/slab/Acpi-ParseExt/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-ParseExt/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-ParseExt/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-ParseExt/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-ParseExt/objects', 0o664, b'56\n') +f('sys/kernel/slab/Acpi-ParseExt/order', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-ParseExt/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-ParseExt/store_user', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-ParseExt/align', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-ParseExt/partial', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-ParseExt/validate', 0o664, b'') +f('sys/kernel/slab/Acpi-ParseExt/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-ParseExt/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/Acpi-ParseExt/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-8', 0o775) +f('sys/kernel/slab/kmalloc-8/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-8/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-8/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-8/slab_size', 0o664, b'80\n') +f('sys/kernel/slab/kmalloc-8/total_objects', 0o664, b'3366\n') +f('sys/kernel/slab/kmalloc-8/slabs', 0o664, b'66\n') +f('sys/kernel/slab/kmalloc-8/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-8/alloc_calls', 0o664, b''' 1 cache_k8_northbridges+0x5f/0x130 age=8379864 pid=1 cpus=0 + 1 pm_qos_add_requirement+0x51/0xe0 age=8376100 pid=122 cpus=1 + 5 setup_modinfo_version+0x19/0x30 age=8355991/8370769/8376336 pid=169-1766 cpus=0-1 + 379 load_module+0x1ac4/0x1b30 age=8303091/8368856/8376330 pid=105-2754 cpus=0-1 + 57 strndup_user+0x6d/0xc0 age=8303095/8368234/8376336 pid=105-2754 cpus=0-1 + 4 krealloc+0x1e/0x60 age=8355270/8362240/8377141 pid=71-1849 cpus=0-1 + 5 __vmalloc_area_node+0xfb/0x140 age=8373659/8374450/8375164 pid=181-754 cpus=0-1 + 17 alloc_vfsmnt+0x97/0x180 age=8354102/8377143/8380122 pid=0-2064 cpus=0-1 + 1 proc_symlink+0x4d/0xb0 age=8374163 pid=107 cpus=1 + 1954 sysfs_new_dirent+0x10c/0x120 age=22655/7531182/8380122 pid=0-13295 cpus=0-1 + 690 kvasprintf+0x55/0x90 age=22668/7820060/8380122 pid=0-13295 cpus=0-1 + 1 proc_bus_pci_open+0x1d/0x50 age=8355838 pid=1738 cpus=0 + 5 pcie_port_device_register+0x25/0x4a0 age=8379822/8379823/8379824 pid=1 cpus=1 + 19 acpi_ds_build_internal_buffer_obj+0xe1/0x121 age=8379961/8379970/8379972 pid=1 cpus=0 + 9 acpi_ev_pci_config_region_setup+0x162/0x270 age=8379256/8379854/8379947 pid=1-12 cpus=0-1 + 2 acpi_ut_copy_simple_object+0x8f/0x11c age=8375678/8375686/8375694 pid=396 cpus=0 + 35 acpi_irq_stats_init+0x1bd/0x268 age=8379979/8379979/8379979 pid=1 cpus=0 + 8 neigh_sysctl_register+0x1cd/0x330 age=8360192/8368781/8379845 pid=1-1549 cpus=0-1 + 7 netlink_kernel_create+0xab/0x1a0 age=8378987/8379768/8379988 pid=1 cpus=0-1 + 5 __devinet_sysctl_register+0xb8/0x120 age=8373658/8377862/8379845 pid=1-126 cpus=0-1 + 1 fz_hash_alloc+0x4a/0x60 age=8324525 pid=1541 cpus=0 + 1 init_vdso_vars+0x4c/0x24a age=8379835 pid=1 cpus=1 + 30 netlink_proto_init+0xf1/0x16b age=8379988/8379988/8379988 pid=1 cpus=0 + 5 hub_probe+0x20b/0x820 [usbcore] age=8374075/8374568/8374921 pid=143-147 cpus=0-1 + 3 usb_cache_string+0x65/0xa0 [usbcore] age=22742/37518/67072 pid=419 cpus=0 + 10 usb_get_configuration+0xbd/0x1480 [usbcore] age=22743/5876145/8374941 pid=143-419 cpus=0-1 + 35 snd_info_create_entry+0x30/0xa0 [snd] age=8355370/8370655/8374933 pid=107-1813 cpus=0-1 + 1 async_chainiv_givencrypt_first+0x56/0x80 [crypto_blkcipher] age=8374580 pid=215 cpus=0 + 1 md_seq_open+0x2d/0x90 [md_mod] age=8366135 pid=1371 cpus=0 + 1 bitmap_create+0x3aa/0xad0 [md_mod] age=8370125 pid=916 cpus=0 + 5 __addrconf_sysctl_register+0xcd/0x140 [ipv6] age=8360192/8360193/8360195 pid=1549 cpus=0 + 1 fib6_net_init+0x5d/0x130 [ipv6] age=8360195 pid=1549 cpus=0 +''') +f('sys/kernel/slab/kmalloc-8/objs_per_slab', 0o664, b'51\n') +f('sys/kernel/slab/kmalloc-8/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-8/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-8/object_size', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-8/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-8/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-8/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-8/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-8/objects', 0o664, b'3366\n') +f('sys/kernel/slab/kmalloc-8/order', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-8/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-8/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-8/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-8/partial', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-8/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-8/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-8/free_calls', 0o664, b''' 2657 <not-available> age=4303047420 pid=0 cpus=0 + 3 free_sect_attrs+0x2e/0x50 age=8375066/8375066/8375066 pid=383 cpus=0 + 6 load_module+0x73f/0x1b30 age=8374844/8375309/8376003 pid=143-332 cpus=0-1 + 1 free_module+0xb9/0xf0 age=8375066 pid=383 cpus=0 + 1 krealloc+0x3a/0x60 age=8375814 pid=330 cpus=0 + 41 __vunmap+0xe9/0x120 age=8355636/8372979/8376319 pid=105-1805 cpus=0-1 + 1 vfs_rename+0x301/0x450 age=8367176 pid=72 cpus=1 + 254 release_sysfs_dirent+0x8c/0xd0 age=125751/7762571/8379789 pid=1-3347 cpus=0-1 + 61 kobject_release+0xe1/0x140 age=125751/6939731/8378264 pid=1-3347 cpus=0-1 + 1 match_number+0x95/0xb0 age=8335823 pid=2476 cpus=0 + 2 proc_bus_pci_release+0x18/0x30 age=8355841/8356005/8356169 pid=1738 cpus=0 + 49 acpi_ds_create_operand+0x12c/0x209 age=125757/8029619/8379980 pid=1-1442 cpus=0-1 + 128 acpi_ns_get_node+0x92/0xa1 age=8366449/8379363/8379989 pid=1-1358 cpus=0-1 + 2 acpi_ut_delete_internal_obj+0x15f/0x16f age=8375669/8375730/8375792 pid=330-396 cpus=0 + 2 module_add_driver+0x66/0xd0 age=8375989/8375992/8375996 pid=144 cpus=0 + 2 sd_media_changed+0xca/0x210 age=7839601/7929600/8019600 pid=2796 cpus=0 + 3 get_modalias+0xd4/0x120 age=8355846/8370834/8379988 pid=1-1772 cpus=0-1 + 1 fib_hash_free+0x35/0x40 age=8367910 pid=1185 cpus=0 + 1 usb_release_dev+0x39/0x70 [usbcore] age=7833240 pid=419 cpus=1 + 2 usb_release_dev+0x45/0x70 [usbcore] age=7833240/7835719/7838199 pid=419 cpus=0-1 + 4 sg_clean+0x3e/0x80 [usbcore] age=62037/2121033/8297977 pid=2760-13294 cpus=0 + 59 usb_control_msg+0xef/0x110 [usbcore] age=22658/5520135/8374943 pid=143-419 cpus=0-1 + 7 usb_set_configuration+0x338/0x5f0 [usbcore] age=53566/5999072/8374935 pid=143-419 cpus=0-1 + 4 usb_destroy_configuration+0x78/0x140 [usbcore] age=7824401/7967435/8373902 pid=419 cpus=0-1 + 7 sr_media_change+0xeb/0x2a0 [sr_mod] age=53597/5984195/8374963 pid=558-1456 cpus=0-1 +''') +f('sys/kernel/slab/kmalloc-8/aliases', 0o664, b'0\n') +d('sys/kernel/slab/revoke_record', 0o775) +f('sys/kernel/slab/revoke_record/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/revoke_record/ctor', 0o664, b'') +f('sys/kernel/slab/revoke_record/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/revoke_record/slab_size', 0o664, b'128\n') +f('sys/kernel/slab/revoke_record/total_objects', 0o664, b'64\n') +f('sys/kernel/slab/revoke_record/slabs', 0o664, b'2\n') +f('sys/kernel/slab/revoke_record/poison', 0o664, b'1\n') +f('sys/kernel/slab/revoke_record/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/revoke_record/objs_per_slab', 0o664, b'32\n') +f('sys/kernel/slab/revoke_record/shrink', 0o664, b'') +f('sys/kernel/slab/revoke_record/trace', 0o664, b'0\n') +f('sys/kernel/slab/revoke_record/object_size', 0o664, b'32\n') +f('sys/kernel/slab/revoke_record/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/revoke_record/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/revoke_record/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/revoke_record/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/revoke_record/objects', 0o664, b'64\n') +f('sys/kernel/slab/revoke_record/order', 0o664, b'0\n') +f('sys/kernel/slab/revoke_record/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/revoke_record/store_user', 0o664, b'1\n') +f('sys/kernel/slab/revoke_record/align', 0o664, b'0\n') +f('sys/kernel/slab/revoke_record/partial', 0o664, b'0\n') +f('sys/kernel/slab/revoke_record/validate', 0o664, b'') +f('sys/kernel/slab/revoke_record/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/revoke_record/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/revoke_record/aliases', 0o664, b'0\n') +d('sys/kernel/slab/ext3_inode_cache', 0o775) +f('sys/kernel/slab/ext3_inode_cache/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/ext3_inode_cache/ctor', 0o664, b'init_once+0x0/0x70\n') +f('sys/kernel/slab/ext3_inode_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/ext3_inode_cache/slab_size', 0o664, b'1544\n') +f('sys/kernel/slab/ext3_inode_cache/total_objects', 0o664, b'27342\n') +f('sys/kernel/slab/ext3_inode_cache/slabs', 0o664, b'1302\n') +f('sys/kernel/slab/ext3_inode_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/ext3_inode_cache/alloc_calls', 0o664, b' 27338 ext3_alloc_inode+0x15/0x60 age=0/2288559/8378475 pid=1-27944 cpus=0-1\n') +f('sys/kernel/slab/ext3_inode_cache/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/ext3_inode_cache/shrink', 0o664, b'') +f('sys/kernel/slab/ext3_inode_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/ext3_inode_cache/object_size', 0o664, b'1472\n') +f('sys/kernel/slab/ext3_inode_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/ext3_inode_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/ext3_inode_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/ext3_inode_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/ext3_inode_cache/objects', 0o664, b'27342\n') +f('sys/kernel/slab/ext3_inode_cache/order', 0o664, b'3\n') +f('sys/kernel/slab/ext3_inode_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/ext3_inode_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/ext3_inode_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/ext3_inode_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/ext3_inode_cache/validate', 0o664, b'') +f('sys/kernel/slab/ext3_inode_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/ext3_inode_cache/free_calls', 0o664, b''' 25981 <not-available> age=4303047521 pid=0 cpus=0 + 1358 ext3_destroy_inode+0x2f/0x90 age=13089/2437961/8371953 pid=542-32759 cpus=0-1 +''') +f('sys/kernel/slab/ext3_inode_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/ndisc_cache', 0o775) +f('sys/kernel/slab/ndisc_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/ndisc_cache/ctor', 0o664, b'') +f('sys/kernel/slab/ndisc_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/ndisc_cache/slab_size', 0o664, b'448\n') +f('sys/kernel/slab/ndisc_cache/total_objects', 0o664, b'18\n') +f('sys/kernel/slab/ndisc_cache/slabs', 0o664, b'1\n') +f('sys/kernel/slab/ndisc_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/ndisc_cache/alloc_calls', 0o664, b' 1 neigh_create+0x8b/0x530 age=8360557 pid=1549 cpus=0\n') +f('sys/kernel/slab/ndisc_cache/objs_per_slab', 0o664, b'18\n') +f('sys/kernel/slab/ndisc_cache/shrink', 0o664, b'') +f('sys/kernel/slab/ndisc_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/ndisc_cache/object_size', 0o664, b'360\n') +f('sys/kernel/slab/ndisc_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/ndisc_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/ndisc_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/ndisc_cache/objects_partial', 0o664, b'1\n') +f('sys/kernel/slab/ndisc_cache/objects', 0o664, b'1\n') +f('sys/kernel/slab/ndisc_cache/order', 0o664, b'1\n') +f('sys/kernel/slab/ndisc_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/ndisc_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/ndisc_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/ndisc_cache/partial', 0o664, b'1\n') +f('sys/kernel/slab/ndisc_cache/validate', 0o664, b'') +f('sys/kernel/slab/ndisc_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/ndisc_cache/free_calls', 0o664, b' 1 <not-available> age=4303047782 pid=0 cpus=0\n') +f('sys/kernel/slab/ndisc_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/ip_fib_alias', 0o775) +f('sys/kernel/slab/ip_fib_alias/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/ctor', 0o664, b'') +f('sys/kernel/slab/ip_fib_alias/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/slab_size', 0o664, b'104\n') +f('sys/kernel/slab/ip_fib_alias/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/slabs', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/poison', 0o664, b'1\n') +f('sys/kernel/slab/ip_fib_alias/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/ip_fib_alias/objs_per_slab', 0o664, b'39\n') +f('sys/kernel/slab/ip_fib_alias/shrink', 0o664, b'') +f('sys/kernel/slab/ip_fib_alias/trace', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/object_size', 0o664, b'32\n') +f('sys/kernel/slab/ip_fib_alias/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/objects', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/order', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/ip_fib_alias/store_user', 0o664, b'1\n') +f('sys/kernel/slab/ip_fib_alias/align', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/partial', 0o664, b'0\n') +f('sys/kernel/slab/ip_fib_alias/validate', 0o664, b'') +f('sys/kernel/slab/ip_fib_alias/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/ip_fib_alias/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/ip_fib_alias/aliases', 0o664, b'0\n') +d('sys/kernel/slab/proc_inode_cache', 0o775) +f('sys/kernel/slab/proc_inode_cache/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/proc_inode_cache/ctor', 0o664, b'init_once+0x0/0x10\n') +f('sys/kernel/slab/proc_inode_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/proc_inode_cache/slab_size', 0o664, b'1192\n') +f('sys/kernel/slab/proc_inode_cache/total_objects', 0o664, b'1677\n') +f('sys/kernel/slab/proc_inode_cache/slabs', 0o664, b'129\n') +f('sys/kernel/slab/proc_inode_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/proc_inode_cache/alloc_calls', 0o664, b' 1627 proc_alloc_inode+0x1b/0x90 age=61424/8163415/8379746 pid=0-19241 cpus=0-1\n') +f('sys/kernel/slab/proc_inode_cache/objs_per_slab', 0o664, b'13\n') +f('sys/kernel/slab/proc_inode_cache/shrink', 0o664, b'') +f('sys/kernel/slab/proc_inode_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/proc_inode_cache/object_size', 0o664, b'1120\n') +f('sys/kernel/slab/proc_inode_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/proc_inode_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/proc_inode_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/proc_inode_cache/objects_partial', 0o664, b'78\n') +f('sys/kernel/slab/proc_inode_cache/objects', 0o664, b'1651\n') +f('sys/kernel/slab/proc_inode_cache/order', 0o664, b'2\n') +f('sys/kernel/slab/proc_inode_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/proc_inode_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/proc_inode_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/proc_inode_cache/partial', 0o664, b'8\n') +f('sys/kernel/slab/proc_inode_cache/validate', 0o664, b'') +f('sys/kernel/slab/proc_inode_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/proc_inode_cache/free_calls', 0o664, b''' 1124 <not-available> age=4303047043 pid=0 cpus=0 + 503 proc_destroy_inode+0x14/0x20 age=61430/7970819/8372808 pid=1-12336 cpus=0-1 +''') +f('sys/kernel/slab/proc_inode_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/biovec-16', 0o775) +f('sys/kernel/slab/biovec-16/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/biovec-16/ctor', 0o664, b'') +f('sys/kernel/slab/biovec-16/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/biovec-16/slab_size', 0o664, b'384\n') +f('sys/kernel/slab/biovec-16/total_objects', 0o664, b'63\n') +f('sys/kernel/slab/biovec-16/slabs', 0o664, b'3\n') +f('sys/kernel/slab/biovec-16/poison', 0o664, b'1\n') +f('sys/kernel/slab/biovec-16/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379491/8379491/8379491 pid=1 cpus=0\n') +f('sys/kernel/slab/biovec-16/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/biovec-16/shrink', 0o664, b'') +f('sys/kernel/slab/biovec-16/trace', 0o664, b'0\n') +f('sys/kernel/slab/biovec-16/object_size', 0o664, b'256\n') +f('sys/kernel/slab/biovec-16/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/biovec-16/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/biovec-16/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/biovec-16/objects_partial', 0o664, b'2\n') +f('sys/kernel/slab/biovec-16/objects', 0o664, b'44\n') +f('sys/kernel/slab/biovec-16/order', 0o664, b'1\n') +f('sys/kernel/slab/biovec-16/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/biovec-16/store_user', 0o664, b'1\n') +f('sys/kernel/slab/biovec-16/align', 0o664, b'0\n') +f('sys/kernel/slab/biovec-16/partial', 0o664, b'1\n') +f('sys/kernel/slab/biovec-16/validate', 0o664, b'') +f('sys/kernel/slab/biovec-16/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/biovec-16/free_calls', 0o664, b' 2 <not-available> age=4303046925 pid=0 cpus=0\n') +f('sys/kernel/slab/biovec-16/aliases', 0o664, b'0\n') +d('sys/kernel/slab/Acpi-State', 0o775) +f('sys/kernel/slab/Acpi-State/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-State/ctor', 0o664, b'') +f('sys/kernel/slab/Acpi-State/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-State/slab_size', 0o664, b'152\n') +f('sys/kernel/slab/Acpi-State/total_objects', 0o664, b'52\n') +f('sys/kernel/slab/Acpi-State/slabs', 0o664, b'2\n') +f('sys/kernel/slab/Acpi-State/poison', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-State/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/Acpi-State/objs_per_slab', 0o664, b'26\n') +f('sys/kernel/slab/Acpi-State/shrink', 0o664, b'') +f('sys/kernel/slab/Acpi-State/trace', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-State/object_size', 0o664, b'80\n') +f('sys/kernel/slab/Acpi-State/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-State/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-State/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-State/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-State/objects', 0o664, b'52\n') +f('sys/kernel/slab/Acpi-State/order', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-State/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-State/store_user', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-State/align', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-State/partial', 0o664, b'0\n') +f('sys/kernel/slab/Acpi-State/validate', 0o664, b'') +f('sys/kernel/slab/Acpi-State/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/Acpi-State/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/Acpi-State/aliases', 0o664, b'0\n') +d('sys/kernel/slab/ip6_dst_cache', 0o775) +f('sys/kernel/slab/ip6_dst_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/ip6_dst_cache/ctor', 0o664, b'') +f('sys/kernel/slab/ip6_dst_cache/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/ip6_dst_cache/slab_size', 0o664, b'384\n') +f('sys/kernel/slab/ip6_dst_cache/total_objects', 0o664, b'42\n') +f('sys/kernel/slab/ip6_dst_cache/slabs', 0o664, b'2\n') +f('sys/kernel/slab/ip6_dst_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/ip6_dst_cache/alloc_calls', 0o664, b' 4 dst_alloc+0x2b/0x90 age=8329964/8337614/8360566 pid=8-1549 cpus=0-1\n') +f('sys/kernel/slab/ip6_dst_cache/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/ip6_dst_cache/shrink', 0o664, b'') +f('sys/kernel/slab/ip6_dst_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/ip6_dst_cache/object_size', 0o664, b'304\n') +f('sys/kernel/slab/ip6_dst_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/ip6_dst_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/ip6_dst_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/ip6_dst_cache/objects_partial', 0o664, b'4\n') +f('sys/kernel/slab/ip6_dst_cache/objects', 0o664, b'4\n') +f('sys/kernel/slab/ip6_dst_cache/order', 0o664, b'1\n') +f('sys/kernel/slab/ip6_dst_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/ip6_dst_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/ip6_dst_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/ip6_dst_cache/partial', 0o664, b'2\n') +f('sys/kernel/slab/ip6_dst_cache/validate', 0o664, b'') +f('sys/kernel/slab/ip6_dst_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/ip6_dst_cache/free_calls', 0o664, b' 4 <not-available> age=4303047790 pid=0 cpus=0\n') +f('sys/kernel/slab/ip6_dst_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/task_xstate', 0o775) +f('sys/kernel/slab/task_xstate/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/task_xstate/ctor', 0o664, b'') +f('sys/kernel/slab/task_xstate/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/task_xstate/slab_size', 0o664, b'592\n') +f('sys/kernel/slab/task_xstate/total_objects', 0o664, b'169\n') +f('sys/kernel/slab/task_xstate/slabs', 0o664, b'13\n') +f('sys/kernel/slab/task_xstate/poison', 0o664, b'1\n') +f('sys/kernel/slab/task_xstate/alloc_calls', 0o664, b''' 99 arch_dup_task_struct+0x51/0xa0 age=125559/8275901/8376574 pid=71-13212 cpus=0-1 + 51 init_fpu+0xef/0x110 age=4157/7436734/8378165 pid=1-20296 cpus=0-1 +''') +f('sys/kernel/slab/task_xstate/objs_per_slab', 0o664, b'13\n') +f('sys/kernel/slab/task_xstate/shrink', 0o664, b'') +f('sys/kernel/slab/task_xstate/trace', 0o664, b'0\n') +f('sys/kernel/slab/task_xstate/object_size', 0o664, b'512\n') +f('sys/kernel/slab/task_xstate/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/task_xstate/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/task_xstate/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/task_xstate/objects_partial', 0o664, b'57\n') +f('sys/kernel/slab/task_xstate/objects', 0o664, b'161\n') +f('sys/kernel/slab/task_xstate/order', 0o664, b'1\n') +f('sys/kernel/slab/task_xstate/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/task_xstate/store_user', 0o664, b'1\n') +f('sys/kernel/slab/task_xstate/align', 0o664, b'16\n') +f('sys/kernel/slab/task_xstate/partial', 0o664, b'5\n') +f('sys/kernel/slab/task_xstate/validate', 0o664, b'') +f('sys/kernel/slab/task_xstate/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/task_xstate/free_calls', 0o664, b''' 53 <not-available> age=4303047277 pid=0 cpus=0 + 97 free_thread_xstate+0x24/0x40 age=7199/7795238/8375118 pid=0-20296 cpus=0-1 +''') +f('sys/kernel/slab/task_xstate/aliases', 0o664, b'0\n') +d('sys/kernel/slab/scsi_io_context', 0o775) +f('sys/kernel/slab/scsi_io_context/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/ctor', 0o664, b'') +f('sys/kernel/slab/scsi_io_context/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/slab_size', 0o664, b'184\n') +f('sys/kernel/slab/scsi_io_context/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/slabs', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/poison', 0o664, b'1\n') +f('sys/kernel/slab/scsi_io_context/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/scsi_io_context/objs_per_slab', 0o664, b'22\n') +f('sys/kernel/slab/scsi_io_context/shrink', 0o664, b'') +f('sys/kernel/slab/scsi_io_context/trace', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/object_size', 0o664, b'112\n') +f('sys/kernel/slab/scsi_io_context/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/objects', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/order', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/scsi_io_context/store_user', 0o664, b'1\n') +f('sys/kernel/slab/scsi_io_context/align', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/partial', 0o664, b'0\n') +f('sys/kernel/slab/scsi_io_context/validate', 0o664, b'') +f('sys/kernel/slab/scsi_io_context/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/scsi_io_context/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/scsi_io_context/aliases', 0o664, b'0\n') +d('sys/kernel/slab/anon_vma', 0o775) +f('sys/kernel/slab/anon_vma/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/anon_vma/ctor', 0o664, b'anon_vma_ctor+0x0/0x40\n') +f('sys/kernel/slab/anon_vma/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/anon_vma/slab_size', 0o664, b'144\n') +f('sys/kernel/slab/anon_vma/total_objects', 0o664, b'3304\n') +f('sys/kernel/slab/anon_vma/slabs', 0o664, b'118\n') +f('sys/kernel/slab/anon_vma/poison', 0o664, b'1\n') +f('sys/kernel/slab/anon_vma/alloc_calls', 0o664, b' 3234 anon_vma_prepare+0xe0/0x100 age=4177/7981073/8378201 pid=1-20296 cpus=0-1\n') +f('sys/kernel/slab/anon_vma/objs_per_slab', 0o664, b'28\n') +f('sys/kernel/slab/anon_vma/shrink', 0o664, b'') +f('sys/kernel/slab/anon_vma/trace', 0o664, b'0\n') +f('sys/kernel/slab/anon_vma/object_size', 0o664, b'72\n') +f('sys/kernel/slab/anon_vma/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/anon_vma/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/anon_vma/destroy_by_rcu', 0o664, b'1\n') +f('sys/kernel/slab/anon_vma/objects_partial', 0o664, b'185\n') +f('sys/kernel/slab/anon_vma/objects', 0o664, b'3265\n') +f('sys/kernel/slab/anon_vma/order', 0o664, b'0\n') +f('sys/kernel/slab/anon_vma/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/anon_vma/store_user', 0o664, b'1\n') +f('sys/kernel/slab/anon_vma/align', 0o664, b'0\n') +f('sys/kernel/slab/anon_vma/partial', 0o664, b'8\n') +f('sys/kernel/slab/anon_vma/validate', 0o664, b'') +f('sys/kernel/slab/anon_vma/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/anon_vma/free_calls', 0o664, b''' 1575 <not-available> age=4303047296 pid=0 cpus=0 + 1659 anon_vma_unlink+0x5f/0x70 age=7225/7638870/8377152 pid=56-20292 cpus=0-1 +''') +f('sys/kernel/slab/anon_vma/aliases', 0o664, b'0\n') +d('sys/kernel/slab/uhci_urb_priv', 0o775) +f('sys/kernel/slab/uhci_urb_priv/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/uhci_urb_priv/ctor', 0o664, b'') +f('sys/kernel/slab/uhci_urb_priv/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/uhci_urb_priv/slab_size', 0o664, b'128\n') +f('sys/kernel/slab/uhci_urb_priv/total_objects', 0o664, b'32\n') +f('sys/kernel/slab/uhci_urb_priv/slabs', 0o664, b'1\n') +f('sys/kernel/slab/uhci_urb_priv/poison', 0o664, b'1\n') +f('sys/kernel/slab/uhci_urb_priv/alloc_calls', 0o664, b' 1 uhci_urb_enqueue+0xb6/0xa30 [uhci_hcd] age=53794 pid=419 cpus=0\n') +f('sys/kernel/slab/uhci_urb_priv/objs_per_slab', 0o664, b'32\n') +f('sys/kernel/slab/uhci_urb_priv/shrink', 0o664, b'') +f('sys/kernel/slab/uhci_urb_priv/trace', 0o664, b'0\n') +f('sys/kernel/slab/uhci_urb_priv/object_size', 0o664, b'56\n') +f('sys/kernel/slab/uhci_urb_priv/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/uhci_urb_priv/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/uhci_urb_priv/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/uhci_urb_priv/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/uhci_urb_priv/objects', 0o664, b'32\n') +f('sys/kernel/slab/uhci_urb_priv/order', 0o664, b'0\n') +f('sys/kernel/slab/uhci_urb_priv/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/uhci_urb_priv/store_user', 0o664, b'1\n') +f('sys/kernel/slab/uhci_urb_priv/align', 0o664, b'0\n') +f('sys/kernel/slab/uhci_urb_priv/partial', 0o664, b'0\n') +f('sys/kernel/slab/uhci_urb_priv/validate', 0o664, b'') +f('sys/kernel/slab/uhci_urb_priv/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/uhci_urb_priv/free_calls', 0o664, b' 1 uhci_free_urb_priv+0x79/0xd0 [uhci_hcd] age=53806 pid=0 cpus=0\n') +f('sys/kernel/slab/uhci_urb_priv/aliases', 0o664, b'0\n') +d('sys/kernel/slab/shmem_inode_cache', 0o775) +f('sys/kernel/slab/shmem_inode_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/shmem_inode_cache/ctor', 0o664, b'init_once+0x0/0x40\n') +f('sys/kernel/slab/shmem_inode_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/shmem_inode_cache/slab_size', 0o664, b'1400\n') +f('sys/kernel/slab/shmem_inode_cache/total_objects', 0o664, b'1173\n') +f('sys/kernel/slab/shmem_inode_cache/slabs', 0o664, b'51\n') +f('sys/kernel/slab/shmem_inode_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/shmem_inode_cache/alloc_calls', 0o664, b' 1144 shmem_alloc_inode+0x15/0x30 age=21584/7506265/8379043 pid=1-13453 cpus=0-1\n') +f('sys/kernel/slab/shmem_inode_cache/objs_per_slab', 0o664, b'23\n') +f('sys/kernel/slab/shmem_inode_cache/shrink', 0o664, b'') +f('sys/kernel/slab/shmem_inode_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/shmem_inode_cache/object_size', 0o664, b'1328\n') +f('sys/kernel/slab/shmem_inode_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/shmem_inode_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/shmem_inode_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/shmem_inode_cache/objects_partial', 0o664, b'42\n') +f('sys/kernel/slab/shmem_inode_cache/objects', 0o664, b'1169\n') +f('sys/kernel/slab/shmem_inode_cache/order', 0o664, b'3\n') +f('sys/kernel/slab/shmem_inode_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/shmem_inode_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/shmem_inode_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/shmem_inode_cache/partial', 0o664, b'2\n') +f('sys/kernel/slab/shmem_inode_cache/validate', 0o664, b'') +f('sys/kernel/slab/shmem_inode_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/shmem_inode_cache/free_calls', 0o664, b''' 741 <not-available> age=4303046628 pid=0 cpus=0 + 403 shmem_destroy_inode+0x24/0x30 age=21598/7406739/8375758 pid=72-13332 cpus=0-1 +''') +f('sys/kernel/slab/shmem_inode_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/fat_inode_cache', 0o775) +f('sys/kernel/slab/fat_inode_cache/reclaim_account', 0o664, b'1\n') +f('sys/kernel/slab/fat_inode_cache/ctor', 0o664, b'init_once+0x0/0x60\n') +f('sys/kernel/slab/fat_inode_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/fat_inode_cache/slab_size', 0o664, b'1272\n') +f('sys/kernel/slab/fat_inode_cache/total_objects', 0o664, b'100\n') +f('sys/kernel/slab/fat_inode_cache/slabs', 0o664, b'4\n') +f('sys/kernel/slab/fat_inode_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/fat_inode_cache/alloc_calls', 0o664, b' 76 fat_alloc_inode+0x15/0x30 age=61228/61276/61657 pid=13348-13354 cpus=0-1\n') +f('sys/kernel/slab/fat_inode_cache/objs_per_slab', 0o664, b'25\n') +f('sys/kernel/slab/fat_inode_cache/shrink', 0o664, b'') +f('sys/kernel/slab/fat_inode_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/fat_inode_cache/object_size', 0o664, b'1200\n') +f('sys/kernel/slab/fat_inode_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/fat_inode_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/fat_inode_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/fat_inode_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/fat_inode_cache/objects', 0o664, b'100\n') +f('sys/kernel/slab/fat_inode_cache/order', 0o664, b'3\n') +f('sys/kernel/slab/fat_inode_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/fat_inode_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/fat_inode_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/fat_inode_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/fat_inode_cache/validate', 0o664, b'') +f('sys/kernel/slab/fat_inode_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/fat_inode_cache/free_calls', 0o664, b' 76 <not-available> age=4303047594 pid=0 cpus=0\n') +f('sys/kernel/slab/fat_inode_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-256', 0o775) +f('sys/kernel/slab/kmalloc-256/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-256/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-256/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-256/slab_size', 0o664, b'328\n') +f('sys/kernel/slab/kmalloc-256/total_objects', 0o664, b'516\n') +f('sys/kernel/slab/kmalloc-256/slabs', 0o664, b'43\n') +f('sys/kernel/slab/kmalloc-256/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-256/alloc_calls', 0o664, b''' 2 mempool_kmalloc+0x11/0x20 age=8379928/8379928/8379928 pid=1 cpus=0 + 2 __vmalloc_area_node+0xfb/0x140 age=8374585/8375388/8376192 pid=122-126 cpus=0-1 + 32 dma_pool_create+0x90/0x1e0 age=8374074/8374505/8374905 pid=143-147 cpus=0-1 + 28 __percpu_alloc_mask+0xbc/0x140 age=8360136/8365750/8379780 pid=1-1549 cpus=0 + 2 seq_open+0x84/0xa0 age=8355780/8360929/8366079 pid=1371-1738 cpus=0 + 19 inotify_init+0x1b/0x90 age=8333719/8353284/8379778 pid=1-2544 cpus=0-1 + 1 mounts_open_common+0x11e/0x210 age=8365844 pid=1371 cpus=0 + 347 __proc_create+0xa5/0x150 age=8355314/8375854/8380066 pid=0-1813 cpus=0-1 + 6 start_this_handle+0x3f5/0x410 age=4241/38502/142468 pid=21-13466 cpus=0-1 + 3 elevator_alloc+0x1b/0xc0 age=62010/5606790/8379345 pid=1-13295 cpus=0-1 + 2 acpi_ds_build_internal_buffer_obj+0xe1/0x121 age=8379913/8379914/8379915 pid=1 cpus=0 + 1 find_dock+0x414/0x426 age=8379931 pid=1 cpus=0 + 6 con_insert_unipair+0x96/0x110 age=8355034/8367399/8379765 pid=1-1898 cpus=1 + 2 neigh_resolve_output+0x226/0x2e0 age=1134112/4736669/8339226 pid=0-2401 cpus=0-1 + 1 genl_register_family+0x1b6/0x1e0 age=8375014 pid=126 cpus=0 + 5 ip_mc_inc_group+0x6b/0x280 age=8325482/8352347/8367852 pid=1185-1849 cpus=0-1 + 2 cache_add_dev+0x17b/0x546 age=8379779/8379779/8379780 pid=1 cpus=0-1 + 10 audit_register_class+0x1e/0xa1 age=8379779/8379779/8379779 pid=1 cpus=1 + 1 proc_net_ns_init+0x1b/0x81 age=8380066 pid=0 cpus=0 + 3 snd_malloc_sgbuf_pages+0xfa/0x1f0 [snd_page_alloc] age=8374129/8374129/8374129 pid=107 cpus=1 + 1 usb_get_configuration+0x18f/0x1480 [usbcore] age=8372709 pid=419 cpus=0 + 1 acpi_ac_add+0x3a/0x1b1 [ac] age=8375784 pid=392 cpus=0 + 1 acpi_processor_register_performance+0x2a0/0x3a6 [processor] age=8366391 pid=1358 cpus=0 + 3 snd_ctl_open+0x8e/0x180 [snd] age=8333026/8337179/8339273 pid=2400-2425 cpus=0 + 8 ieee80211_rx_bss_add+0x4e/0x140 [mac80211] age=8354793/8355457/8355979 pid=0-1951 cpus=0 + 2 ipv6_add_addr+0x199/0x3c0 [ipv6] age=8329536/8344837/8360138 pid=8-1549 cpus=0-1 + 5 ipv6_dev_mc_inc+0x141/0x3f0 [ipv6] age=8329536/8354016/8360138 pid=8-1549 cpus=0-1 +''') +f('sys/kernel/slab/kmalloc-256/objs_per_slab', 0o664, b'12\n') +f('sys/kernel/slab/kmalloc-256/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-256/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-256/object_size', 0o664, b'256\n') +f('sys/kernel/slab/kmalloc-256/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-256/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-256/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-256/objects_partial', 0o664, b'60\n') +f('sys/kernel/slab/kmalloc-256/objects', 0o664, b'504\n') +f('sys/kernel/slab/kmalloc-256/order', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-256/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-256/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-256/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-256/partial', 0o664, b'6\n') +f('sys/kernel/slab/kmalloc-256/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-256/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-256/free_calls', 0o664, b''' 389 <not-available> age=4303047363 pid=0 cpus=0 + 1 __vunmap+0xe9/0x120 age=8374878 pid=107 cpus=1 + 38 do_execve+0x2b1/0x2d0 age=7303/7294190/8377088 pid=71-13465 cpus=0-1 + 51 seq_release+0x20/0x30 age=23541/7877166/8376202 pid=105-2535 cpus=0-1 + 3 free_proc_entry+0x73/0x90 age=8356279/8369643/8378992 pid=1-1541 cpus=0 + 3 __journal_drop_transaction+0xe6/0x170 age=8360317/8363466/8366128 pid=32 cpus=0 + 1 acpi_pci_irq_add_prt+0xc2/0x324 age=8379845 pid=1 cpus=0 + 2 acpi_pci_bind+0x26b/0x28d age=8379844/8379845/8379846 pid=1 cpus=0 + 1 wireless_send_event+0x172/0x330 age=8329538 pid=742 cpus=1 + 3 usb_string+0x17c/0x1e0 [usbcore] age=8374367/8374614/8374886 pid=143 cpus=0 + 3 snd_ctl_release+0xf9/0x130 [snd] age=8333027/8337180/8339274 pid=2400-2425 cpus=0 + 1 ieee80211_set_associated+0x421/0x520 [mac80211] age=8329538 pid=742 cpus=1 +''') +f('sys/kernel/slab/kmalloc-256/aliases', 0o664, b'0\n') +d('sys/kernel/slab/biovec-64', 0o775) +f('sys/kernel/slab/biovec-64/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/biovec-64/ctor', 0o664, b'') +f('sys/kernel/slab/biovec-64/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/biovec-64/slab_size', 0o664, b'1152\n') +f('sys/kernel/slab/biovec-64/total_objects', 0o664, b'28\n') +f('sys/kernel/slab/biovec-64/slabs', 0o664, b'2\n') +f('sys/kernel/slab/biovec-64/poison', 0o664, b'1\n') +f('sys/kernel/slab/biovec-64/alloc_calls', 0o664, b' 2 mempool_alloc_slab+0x11/0x20 age=8379482/8379482/8379482 pid=1 cpus=0\n') +f('sys/kernel/slab/biovec-64/objs_per_slab', 0o664, b'14\n') +f('sys/kernel/slab/biovec-64/shrink', 0o664, b'') +f('sys/kernel/slab/biovec-64/trace', 0o664, b'0\n') +f('sys/kernel/slab/biovec-64/object_size', 0o664, b'1024\n') +f('sys/kernel/slab/biovec-64/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/biovec-64/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/biovec-64/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/biovec-64/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/biovec-64/objects', 0o664, b'28\n') +f('sys/kernel/slab/biovec-64/order', 0o664, b'2\n') +f('sys/kernel/slab/biovec-64/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/biovec-64/store_user', 0o664, b'1\n') +f('sys/kernel/slab/biovec-64/align', 0o664, b'0\n') +f('sys/kernel/slab/biovec-64/partial', 0o664, b'0\n') +f('sys/kernel/slab/biovec-64/validate', 0o664, b'') +f('sys/kernel/slab/biovec-64/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/biovec-64/free_calls', 0o664, b' 2 <not-available> age=4303046917 pid=0 cpus=0\n') +f('sys/kernel/slab/biovec-64/aliases', 0o664, b'0\n') +d('sys/kernel/slab/sysfs_dir_cache', 0o775) +f('sys/kernel/slab/sysfs_dir_cache/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/sysfs_dir_cache/ctor', 0o664, b'') +f('sys/kernel/slab/sysfs_dir_cache/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/sysfs_dir_cache/slab_size', 0o664, b'152\n') +f('sys/kernel/slab/sysfs_dir_cache/total_objects', 0o664, b'11518\n') +f('sys/kernel/slab/sysfs_dir_cache/slabs', 0o664, b'443\n') +f('sys/kernel/slab/sysfs_dir_cache/poison', 0o664, b'1\n') +f('sys/kernel/slab/sysfs_dir_cache/alloc_calls', 0o664, b' 11488 sysfs_new_dirent+0x38/0x120 age=22320/7764235/8379787 pid=0-13295 cpus=0-1\n') +f('sys/kernel/slab/sysfs_dir_cache/objs_per_slab', 0o664, b'26\n') +f('sys/kernel/slab/sysfs_dir_cache/shrink', 0o664, b'') +f('sys/kernel/slab/sysfs_dir_cache/trace', 0o664, b'0\n') +f('sys/kernel/slab/sysfs_dir_cache/object_size', 0o664, b'80\n') +f('sys/kernel/slab/sysfs_dir_cache/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/sysfs_dir_cache/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/sysfs_dir_cache/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/sysfs_dir_cache/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/sysfs_dir_cache/objects', 0o664, b'11518\n') +f('sys/kernel/slab/sysfs_dir_cache/order', 0o664, b'0\n') +f('sys/kernel/slab/sysfs_dir_cache/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/sysfs_dir_cache/store_user', 0o664, b'1\n') +f('sys/kernel/slab/sysfs_dir_cache/align', 0o664, b'0\n') +f('sys/kernel/slab/sysfs_dir_cache/partial', 0o664, b'0\n') +f('sys/kernel/slab/sysfs_dir_cache/validate', 0o664, b'') +f('sys/kernel/slab/sysfs_dir_cache/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/sysfs_dir_cache/free_calls', 0o664, b''' 11006 <not-available> age=4303047087 pid=0 cpus=0 + 482 release_sysfs_dirent+0x5c/0xd0 age=61294/6319346/8379456 pid=1-2141 cpus=0-1 +''') +f('sys/kernel/slab/sysfs_dir_cache/aliases', 0o664, b'0\n') +d('sys/kernel/slab/request_sock_TCP', 0o775) +f('sys/kernel/slab/request_sock_TCP/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/ctor', 0o664, b'') +f('sys/kernel/slab/request_sock_TCP/hwcache_align', 0o664, b'1\n') +f('sys/kernel/slab/request_sock_TCP/slab_size', 0o664, b'192\n') +f('sys/kernel/slab/request_sock_TCP/total_objects', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/slabs', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/poison', 0o664, b'1\n') +f('sys/kernel/slab/request_sock_TCP/alloc_calls', 0o664, b'No data\n') +f('sys/kernel/slab/request_sock_TCP/objs_per_slab', 0o664, b'21\n') +f('sys/kernel/slab/request_sock_TCP/shrink', 0o664, b'') +f('sys/kernel/slab/request_sock_TCP/trace', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/object_size', 0o664, b'88\n') +f('sys/kernel/slab/request_sock_TCP/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/objects_partial', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/objects', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/order', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/request_sock_TCP/store_user', 0o664, b'1\n') +f('sys/kernel/slab/request_sock_TCP/align', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/partial', 0o664, b'0\n') +f('sys/kernel/slab/request_sock_TCP/validate', 0o664, b'') +f('sys/kernel/slab/request_sock_TCP/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/request_sock_TCP/free_calls', 0o664, b'No data\n') +f('sys/kernel/slab/request_sock_TCP/aliases', 0o664, b'0\n') +d('sys/kernel/slab/kmalloc-4096', 0o775) +f('sys/kernel/slab/kmalloc-4096/reclaim_account', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-4096/ctor', 0o664, b'') +f('sys/kernel/slab/kmalloc-4096/hwcache_align', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-4096/slab_size', 0o664, b'4168\n') +f('sys/kernel/slab/kmalloc-4096/total_objects', 0o664, b'385\n') +f('sys/kernel/slab/kmalloc-4096/slabs', 0o664, b'55\n') +f('sys/kernel/slab/kmalloc-4096/poison', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-4096/alloc_calls', 0o664, b''' 1 load_module+0x18d5/0x1b30 age=8375716 pid=330 cpus=0 + 1 __vmalloc_area_node+0xfb/0x140 age=8371983 pid=867 cpus=0 + 24 __percpu_alloc_mask+0xbc/0x140 age=8360098/8363374/8379742 pid=1-1549 cpus=0 + 1 seq_read+0x2f0/0x360 age=8365263 pid=1371 cpus=0 + 2 ext3_fill_super+0x68/0x1a20 age=8369599/8373987/8378375 pid=1-962 cpus=0 + 4 journal_init_revoke_table+0x4d/0xb0 age=8369583/8373933/8378283 pid=1-962 cpus=0 + 2 journal_init_inode+0x8d/0x130 age=8369583/8373933/8378283 pid=1-962 cpus=0 + 1 fat_fill_super+0x40/0xdd0 age=61388 pid=13348 cpus=1 + 7 scsi_host_alloc+0x35/0x360 age=66976/7192011/8379690 pid=1-419 cpus=0-1 + 3 scsi_alloc_sdev+0x6a/0x270 age=61972/5606752/8379307 pid=1-13295 cpus=0-1 + 8 input_allocate_device+0x1a/0xb0 age=53455/7335718/8378931 pid=17-419 cpus=0-1 + 1 reqsk_queue_alloc+0x112/0x120 age=8354535 pid=1920 cpus=0 + 3 alloc_netdev_mq+0x4f/0x180 age=8373564/8375671/8379766 pid=1-126 cpus=0-1 + 1 pidmap_init+0x15/0x4e age=8380028 pid=0 cpus=0 + 1 netlink_proto_init+0x47/0x16b age=8379894 pid=1 cpus=0 + 2 acpi_processor_add+0x25/0x6d [processor] age=8375653/8375684/8375715 pid=330 cpus=0 + 1 yenta_probe+0x38/0x6cd [yenta_socket] age=8373766 pid=352 cpus=0 + 281 iwl3945_rx_allocate+0xd5/0x160 [iwl3945] age=2011/7577/13684 pid=733 cpus=0 + 1 skcipher_geniv_alloc+0x304/0x3f0 [crypto_blkcipher] age=8374372 pid=215 cpus=1 + 2 bitmap_get_counter+0x153/0x220 [md_mod] age=8370027/8370029/8370031 pid=916 cpus=0 + 1 bitmap_create+0x2bc/0xad0 [md_mod] age=8370031 pid=916 cpus=0 + 6 __addrconf_sysctl_register+0x7b/0x140 [ipv6] age=8360098/8360099/8360101 pid=1549 cpus=0 + 1 acm_probe+0x34c/0xa50 [cdc_acm] age=22641 pid=419 cpus=0 +''') +f('sys/kernel/slab/kmalloc-4096/objs_per_slab', 0o664, b'7\n') +f('sys/kernel/slab/kmalloc-4096/shrink', 0o664, b'') +f('sys/kernel/slab/kmalloc-4096/trace', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-4096/object_size', 0o664, b'4096\n') +f('sys/kernel/slab/kmalloc-4096/cpu_slabs', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-4096/cache_dma', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-4096/destroy_by_rcu', 0o664, b'0\n') +f('sys/kernel/slab/kmalloc-4096/objects_partial', 0o664, b'17\n') +f('sys/kernel/slab/kmalloc-4096/objects', 0o664, b'367\n') +f('sys/kernel/slab/kmalloc-4096/order', 0o664, b'3\n') +f('sys/kernel/slab/kmalloc-4096/sanity_checks', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-4096/store_user', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-4096/align', 0o664, b'8\n') +f('sys/kernel/slab/kmalloc-4096/partial', 0o664, b'5\n') +f('sys/kernel/slab/kmalloc-4096/validate', 0o664, b'') +f('sys/kernel/slab/kmalloc-4096/red_zone', 0o664, b'1\n') +f('sys/kernel/slab/kmalloc-4096/free_calls', 0o664, b''' 187 <not-available> age=4303047324 pid=0 cpus=0 + 5 seq_release+0x18/0x30 age=61430/6709712/8374782 pid=107-1371 cpus=0-1 + 1 cryptomgr_probe+0x81/0xf0 age=8373564 pid=745 cpus=0 + 30 kobject_uevent_env+0x122/0x470 age=22643/7542644/8379894 pid=1-1549 cpus=0-1 + 1 show_uevent+0xee/0x110 age=2013 pid=13466 cpus=0 + 1 input_dev_release+0x23/0x40 age=8378913 pid=17 cpus=0 + 130 skb_release_data+0x85/0xd0 age=2011/73374/8354535 pid=0-13466 cpus=0-1 +''') +f('sys/kernel/slab/kmalloc-4096/aliases', 0o664, b'0\n') +d('sys/kernel/debug', 0o775) +d('sys/kernel/debug/x86', 0o775) +f('sys/kernel/debug/x86/pat_memtype_list', 0o664, b'') +d('sys/kernel/debug/bdi', 0o775) +d('sys/kernel/debug/bdi/7:1', 0o775) +f('sys/kernel/debug/bdi/7:1/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189288 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/7:0', 0o775) +f('sys/kernel/debug/bdi/7:0/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189292 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/7:2', 0o775) +f('sys/kernel/debug/bdi/7:2/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189288 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/7:4', 0o775) +f('sys/kernel/debug/bdi/7:4/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189288 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/7:3', 0o775) +f('sys/kernel/debug/bdi/7:3/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189288 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/11:0', 0o775) +f('sys/kernel/debug/bdi/11:0/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189292 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/7:5', 0o775) +f('sys/kernel/debug/bdi/7:5/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189288 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/8:0', 0o775) +f('sys/kernel/debug/bdi/8:0/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 13696 kB +BdiDirtyThresh: 83368 kB +DirtyThresh: 189292 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/default', 0o775) +f('sys/kernel/debug/bdi/default/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189292 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/0:16', 0o775) +f('sys/kernel/debug/bdi/0:16/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189272 kB +BackgroundThresh: 94636 kB +''') +d('sys/kernel/debug/bdi/8:16', 0o775) +f('sys/kernel/debug/bdi/8:16/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189272 kB +BackgroundThresh: 94636 kB +''') +d('sys/kernel/debug/bdi/9:0', 0o775) +f('sys/kernel/debug/bdi/9:0/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189292 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/7:7', 0o775) +f('sys/kernel/debug/bdi/7:7/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189288 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/debug/bdi/7:6', 0o775) +f('sys/kernel/debug/bdi/7:6/stats', 0o664, b'''BdiWriteback: 0 kB +BdiReclaimable: 0 kB +BdiDirtyThresh: 0 kB +DirtyThresh: 189288 kB +BackgroundThresh: 94644 kB +''') +d('sys/kernel/uids', 0o775) +d('sys/kernel/uids/100', 0o775) +f('sys/kernel/uids/100/cpu_share', 0o664, b'1024\n') +d('sys/kernel/uids/103', 0o775) +f('sys/kernel/uids/103/cpu_share', 0o664, b'1024\n') +d('sys/kernel/uids/51', 0o775) +f('sys/kernel/uids/51/cpu_share', 0o664, b'1024\n') +d('sys/kernel/uids/105', 0o775) +f('sys/kernel/uids/105/cpu_share', 0o664, b'1024\n') +d('sys/kernel/uids/2702', 0o775) +f('sys/kernel/uids/2702/cpu_share', 0o664, b'1024\n') +d('sys/kernel/uids/0', 0o775) +f('sys/kernel/uids/0/cpu_share', 0o664, b'2048\n') +d('sys/power', 0o775) +f('sys/power/state', 0o664, b'mem\n') +d('sys/firmware', 0o775) +d('sys/firmware/memmap', 0o775) +d('sys/firmware/memmap/8', 0o775) +f('sys/firmware/memmap/8/start', 0o664, b'0xfec00000\n') +f('sys/firmware/memmap/8/type', 0o664, b'reserved\n') +f('sys/firmware/memmap/8/end', 0o664, b'0xfec0ffff\n') +d('sys/firmware/memmap/11', 0o775) +f('sys/firmware/memmap/11/start', 0o664, b'0xfed1c000\n') +f('sys/firmware/memmap/11/type', 0o664, b'reserved\n') +f('sys/firmware/memmap/11/end', 0o664, b'0xfed8ffff\n') +d('sys/firmware/memmap/6', 0o775) +f('sys/firmware/memmap/6/start', 0o664, b'0x7ff00000\n') +f('sys/firmware/memmap/6/type', 0o664, b'reserved\n') +f('sys/firmware/memmap/6/end', 0o664, b'0x7fffffff\n') +d('sys/firmware/memmap/5', 0o775) +f('sys/firmware/memmap/5/start', 0o664, b'0x7fedf000\n') +f('sys/firmware/memmap/5/type', 0o664, b'ACPI Non-volatile Storage\n') +f('sys/firmware/memmap/5/end', 0o664, b'0x7fefffff\n') +d('sys/firmware/memmap/9', 0o775) +f('sys/firmware/memmap/9/start', 0o664, b'0xfed00000\n') +f('sys/firmware/memmap/9/type', 0o664, b'reserved\n') +f('sys/firmware/memmap/9/end', 0o664, b'0xfed003ff\n') +d('sys/firmware/memmap/2', 0o775) +f('sys/firmware/memmap/2/start', 0o664, b'0xdc000\n') +f('sys/firmware/memmap/2/type', 0o664, b'reserved\n') +f('sys/firmware/memmap/2/end', 0o664, b'0xfffff\n') +d('sys/firmware/memmap/12', 0o775) +f('sys/firmware/memmap/12/start', 0o664, b'0xfee00000\n') +f('sys/firmware/memmap/12/type', 0o664, b'reserved\n') +f('sys/firmware/memmap/12/end', 0o664, b'0xfee00fff\n') +d('sys/firmware/memmap/4', 0o775) +f('sys/firmware/memmap/4/start', 0o664, b'0x7fed0000\n') +f('sys/firmware/memmap/4/type', 0o664, b'ACPI Tables\n') +f('sys/firmware/memmap/4/end', 0o664, b'0x7fedefff\n') +d('sys/firmware/memmap/3', 0o775) +f('sys/firmware/memmap/3/start', 0o664, b'0x100000\n') +f('sys/firmware/memmap/3/type', 0o664, b'System RAM\n') +f('sys/firmware/memmap/3/end', 0o664, b'0x7fecffff\n') +d('sys/firmware/memmap/10', 0o775) +f('sys/firmware/memmap/10/start', 0o664, b'0xfed14000\n') +f('sys/firmware/memmap/10/type', 0o664, b'reserved\n') +f('sys/firmware/memmap/10/end', 0o664, b'0xfed19fff\n') +d('sys/firmware/memmap/0', 0o775) +f('sys/firmware/memmap/0/start', 0o664, b'0x0\n') +f('sys/firmware/memmap/0/type', 0o664, b'System RAM\n') +f('sys/firmware/memmap/0/end', 0o664, b'0x9efff\n') +d('sys/firmware/memmap/7', 0o775) +f('sys/firmware/memmap/7/start', 0o664, b'0xf0000000\n') +f('sys/firmware/memmap/7/type', 0o664, b'reserved\n') +f('sys/firmware/memmap/7/end', 0o664, b'0xf3ffffff\n') +d('sys/firmware/memmap/1', 0o775) +f('sys/firmware/memmap/1/start', 0o664, b'0x9f000\n') +f('sys/firmware/memmap/1/type', 0o664, b'reserved\n') +f('sys/firmware/memmap/1/end', 0o664, b'0x9ffff\n') +d('sys/firmware/memmap/13', 0o775) +f('sys/firmware/memmap/13/start', 0o664, b'0xff800000\n') +f('sys/firmware/memmap/13/type', 0o664, b'reserved\n') +f('sys/firmware/memmap/13/end', 0o664, b'0xffffffff\n') +d('sys/firmware/edd', 0o775) +d('sys/firmware/edd/int13_dev80', 0o775) +l('sys/firmware/edd/int13_dev80/pci_dev', '../../../devices/pci0000:00/0000:00:1f.2') +f('sys/firmware/edd/int13_dev80/version', 0o664, b'0x30\n') +f('sys/firmware/edd/int13_dev80/raw_data', 0o664, b'J\x00\x01\x00\xff?\x00\x00\x10\x00\x00\x00?\x00\x00\x000"\xa5\x0b\x00\x00\x00\x00\x00\x02\xc6\x00@\x00\xdd\xbe,\x00\x00\x00PCI ATA \x00\x1f\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5') +f('sys/firmware/edd/int13_dev80/sectors', 0o664, b'195371568\n') +f('sys/firmware/edd/int13_dev80/default_sectors_per_track', 0o664, b'63\n') +f('sys/firmware/edd/int13_dev80/legacy_max_cylinder', 0o664, b'1022\n') +f('sys/firmware/edd/int13_dev80/interface', 0o664, b'ATA \tdevice: 0\n') +f('sys/firmware/edd/int13_dev80/host_bus', 0o664, b'PCI \t00:1f.2 channel: 1\n') +f('sys/firmware/edd/int13_dev80/legacy_max_head', 0o664, b'239\n') +f('sys/firmware/edd/int13_dev80/mbr_signature', 0o664, b'0x00087b5f\n') +f('sys/firmware/edd/int13_dev80/info_flags', 0o664, b'DMA boundary error transparent\n') +f('sys/firmware/edd/int13_dev80/default_heads', 0o664, b'16\n') +f('sys/firmware/edd/int13_dev80/default_cylinders', 0o664, b'16383\n') +f('sys/firmware/edd/int13_dev80/legacy_sectors_per_track', 0o664, b'63\n') +f('sys/firmware/edd/int13_dev80/extensions', 0o664, b'''Fixed disk access +Enhanced Disk Drive support +''') +d('sys/firmware/acpi', 0o775) +d('sys/firmware/acpi/tables', 0o775) +f('sys/firmware/acpi/tables/DSDT', 0o664, b'''DSDT4\xd2\x00\x00\x01\x9aLENOVOTP-7I \x11\x00\x00MSFT\x0e\x00\x00\x01\x10 \\_PR_[\x83\x0bCPU0\x00\x10\x10\x00\x00\x06[\x83\x0bCPU1\x01\x10\x10\x00\x00\x06\x10\x83I\x0b\\_SB_\x14C2_INI\x00\xa0(\x93\\SCMP\\_OS_\rMicrosoft Windows\x00\x00p +\x01\\W98F\xa1C\x11\xa0F\t[\x12\\_OSI`\xa0,\\_OSI\rWindows 2001\x00p +\x01\\WNTFp +\x01\\WXPFp +\x00\\WSPV\xa0 \\_OSI\rWindows 2001 SP1\x00p +\x01\\WSPV\xa0 \\_OSI\rWindows 2001 SP2\x00p +\x02\\WSPV\xa0\x1c\\_OSI\rWindows 2006\x00p +\x01\\WVIS\xa1I\x07\xa0+\x93\\SCMP\\_OS_\rMicrosoft Windows NT\x00\x00p +\x01\\WNTF\xa1J\x04\xa0G\x04\x93\\SCMP\\_OS_\rMicrosoft WindowsME: Millennium Edition\x00\x00p +\x01\\WMEFp +\x01\\W98F\xa0\x12\x92\x95\\_REV +\x02p +\x01\\H8DRp +\x01\\OSIF\\/\x05_SB_PCI0LPC_MOU_MHIDp\\SRAH\\/\x03_SB_PCI0RID_\xa0\x1eVIGDp\\SRHE\\/\x04_SB_PCI0VID_RID_\xa1\x1ap\\SRHE\\/\x04_SB_PCI0AGP_RID_p\\SRE0\\/\x04_SB_PCI0EXP0RID_p\\SRE1\\/\x04_SB_PCI0EXP1RID_p\\SRE2\\/\x04_SB_PCI0EXP2RID_p\\SRE3\\/\x04_SB_PCI0EXP3RID_p\\SRU0\\/\x04_SB_PCI0USB0RID_p\\SRU1\\/\x04_SB_PCI0USB1RID_p\\SRU2\\/\x04_SB_PCI0USB2RID_p\\SRU3\\/\x04_SB_PCI0USB3RID_p\\SRU7\\/\x04_SB_PCI0USB7RID_p\\SRPB\\/\x04_SB_PCI0PCI1RID_p\\SRLP\\/\x04_SB_PCI0LPC_RID_p\\SRSA\\/\x04_SB_PCI0IDE0RID_p\\SRSA\\/\x04_SB_PCI0SATARID_p\\SRSM\\/\x04_SB_PCI0SMBURID_[\x82K\x11LNKA\x08_HID\x0cA\xd0\x0c\x0f\x08_UID +\x01\x14(_STA\x00\xa0\x1c\x92VPIR\\/\x04_SB_PCI0LPC_PIRA\xa4 +\t\xa1\x04\xa4 +\x0b\x08_PRS\x11\t +\x06#\xf8\x0e\x18y\x00\x14/_DIS\x00}\\/\x04_SB_PCI0LPC_PIRA +\x80\\/\x04_SB_PCI0LPC_PIRA\x08BUFA\x11\t +\x06#\x00\x00\x18y\x00\x8bBUFA +\x01IRA1\x14:_CRS\x00{\\/\x04_SB_PCI0LPC_PIRA +\x8f`\xa0\x0eVPIR`y +\x01`IRA1\xa1\x08p +\x00IRA1\xa4BUFA\x14F\x04_SRS\x01\x8bh +\x01IRA2\x82IRA2`{\\/\x04_SB_PCI0LPC_PIRA +pa}av`apa\\/\x04_SB_PCI0LPC_PIRA[\x82K\x11LNKB\x08_HID\x0cA\xd0\x0c\x0f\x08_UID +\x02\x14(_STA\x00\xa0\x1c\x92VPIR\\/\x04_SB_PCI0LPC_PIRB\xa4 +\t\xa1\x04\xa4 +\x0b\x08_PRS\x11\t +\x06#\xf8\x0e\x18y\x00\x14/_DIS\x00}\\/\x04_SB_PCI0LPC_PIRB +\x80\\/\x04_SB_PCI0LPC_PIRB\x08BUFB\x11\t +\x06#\x00\x00\x18y\x00\x8bBUFB +\x01IRB1\x14:_CRS\x00{\\/\x04_SB_PCI0LPC_PIRB +\x8f`\xa0\x0eVPIR`y +\x01`IRB1\xa1\x08p +\x00IRB1\xa4BUFB\x14F\x04_SRS\x01\x8bh +\x01IRB2\x82IRB2`{\\/\x04_SB_PCI0LPC_PIRB +pa}av`apa\\/\x04_SB_PCI0LPC_PIRB[\x82K\x11LNKC\x08_HID\x0cA\xd0\x0c\x0f\x08_UID +\x03\x14(_STA\x00\xa0\x1c\x92VPIR\\/\x04_SB_PCI0LPC_PIRC\xa4 +\t\xa1\x04\xa4 +\x0b\x08_PRS\x11\t +\x06#\xf8\x0e\x18y\x00\x14/_DIS\x00}\\/\x04_SB_PCI0LPC_PIRC +\x80\\/\x04_SB_PCI0LPC_PIRC\x08BUFC\x11\t +\x06#\x00\x00\x18y\x00\x8bBUFC +\x01IRC1\x14:_CRS\x00{\\/\x04_SB_PCI0LPC_PIRC +\x8f`\xa0\x0eVPIR`y +\x01`IRC1\xa1\x08p +\x00IRC1\xa4BUFC\x14F\x04_SRS\x01\x8bh +\x01IRC2\x82IRC2`{\\/\x04_SB_PCI0LPC_PIRC +pa}av`apa\\/\x04_SB_PCI0LPC_PIRC[\x82K\x11LNKD\x08_HID\x0cA\xd0\x0c\x0f\x08_UID +\x04\x14(_STA\x00\xa0\x1c\x92VPIR\\/\x04_SB_PCI0LPC_PIRD\xa4 +\t\xa1\x04\xa4 +\x0b\x08_PRS\x11\t +\x06#\xf8\x0e\x18y\x00\x14/_DIS\x00}\\/\x04_SB_PCI0LPC_PIRD +\x80\\/\x04_SB_PCI0LPC_PIRD\x08BUFD\x11\t +\x06#\x00\x00\x18y\x00\x8bBUFD +\x01IRD1\x14:_CRS\x00{\\/\x04_SB_PCI0LPC_PIRD +\x8f`\xa0\x0eVPIR`y +\x01`IRD1\xa1\x08p +\x00IRD1\xa4BUFD\x14F\x04_SRS\x01\x8bh +\x01IRD2\x82IRD2`{\\/\x04_SB_PCI0LPC_PIRD +pa}av`apa\\/\x04_SB_PCI0LPC_PIRD[\x82K\x11LNKE\x08_HID\x0cA\xd0\x0c\x0f\x08_UID +\x05\x14(_STA\x00\xa0\x1c\x92VPIR\\/\x04_SB_PCI0LPC_PIRE\xa4 +\t\xa1\x04\xa4 +\x0b\x08_PRS\x11\t +\x06#\xf8\x0e\x18y\x00\x14/_DIS\x00}\\/\x04_SB_PCI0LPC_PIRE +\x80\\/\x04_SB_PCI0LPC_PIRE\x08BUFE\x11\t +\x06#\x00\x00\x18y\x00\x8bBUFE +\x01IRE1\x14:_CRS\x00{\\/\x04_SB_PCI0LPC_PIRE +\x8f`\xa0\x0eVPIR`y +\x01`IRE1\xa1\x08p +\x00IRE1\xa4BUFE\x14F\x04_SRS\x01\x8bh +\x01IRE2\x82IRE2`{\\/\x04_SB_PCI0LPC_PIRE +pa}av`apa\\/\x04_SB_PCI0LPC_PIRE[\x82K\x11LNKF\x08_HID\x0cA\xd0\x0c\x0f\x08_UID +\x06\x14(_STA\x00\xa0\x1c\x92VPIR\\/\x04_SB_PCI0LPC_PIRF\xa4 +\t\xa1\x04\xa4 +\x0b\x08_PRS\x11\t +\x06#\xf8\x0e\x18y\x00\x14/_DIS\x00}\\/\x04_SB_PCI0LPC_PIRF +\x80\\/\x04_SB_PCI0LPC_PIRF\x08BUFF\x11\t +\x06#\x00\x00\x18y\x00\x8bBUFF +\x01IRF1\x14:_CRS\x00{\\/\x04_SB_PCI0LPC_PIRF +\x8f`\xa0\x0eVPIR`y +\x01`IRF1\xa1\x08p +\x00IRF1\xa4BUFF\x14F\x04_SRS\x01\x8bh +\x01IRF2\x82IRF2`{\\/\x04_SB_PCI0LPC_PIRF +pa}av`apa\\/\x04_SB_PCI0LPC_PIRF[\x82K\x11LNKG\x08_HID\x0cA\xd0\x0c\x0f\x08_UID +\x07\x14(_STA\x00\xa0\x1c\x92VPIR\\/\x04_SB_PCI0LPC_PIRG\xa4 +\t\xa1\x04\xa4 +\x0b\x08_PRS\x11\t +\x06#\xf8\x0e\x18y\x00\x14/_DIS\x00}\\/\x04_SB_PCI0LPC_PIRG +\x80\\/\x04_SB_PCI0LPC_PIRG\x08BUFG\x11\t +\x06#\x00\x00\x18y\x00\x8bBUFG +\x01IRG1\x14:_CRS\x00{\\/\x04_SB_PCI0LPC_PIRG +\x8f`\xa0\x0eVPIR`y +\x01`IRG1\xa1\x08p +\x00IRG1\xa4BUFG\x14F\x04_SRS\x01\x8bh +\x01IRG2\x82IRG2`{\\/\x04_SB_PCI0LPC_PIRG +pa}av`apa\\/\x04_SB_PCI0LPC_PIRG[\x82K\x11LNKH\x08_HID\x0cA\xd0\x0c\x0f\x08_UID +\x08\x14(_STA\x00\xa0\x1c\x92VPIR\\/\x04_SB_PCI0LPC_PIRH\xa4 +\t\xa1\x04\xa4 +\x0b\x08_PRS\x11\t +\x06#\xf8\x0e\x18y\x00\x14/_DIS\x00}\\/\x04_SB_PCI0LPC_PIRH +\x80\\/\x04_SB_PCI0LPC_PIRH\x08BUFH\x11\t +\x06#\x00\x00\x18y\x00\x8bBUFH +\x01IRH1\x14:_CRS\x00{\\/\x04_SB_PCI0LPC_PIRH +\x8f`\xa0\x0eVPIR`y +\x01`IRH1\xa1\x08p +\x00IRH1\xa4BUFH\x14F\x04_SRS\x01\x8bh +\x01IRH2\x82IRH2`{\\/\x04_SB_PCI0LPC_PIRH +pa}av`apa\\/\x04_SB_PCI0LPC_PIRH\x149VPIR\x01p +\x01`\xa0 +{h +\x80\x00p +\x00`\xa1!{h +\x0fa\xa0\t\x95a +\x03p +\x00`\xa1\x10\xa0\x0e\x91\x93a +\x08\x93a +\rp +\x00`\xa4`[\x82HhMEM_\x08_HID\x0cA\xd0\x0c\x01\x08ME98\x11B\x04 +>\x86\t\x00\x01\x00\x00\x00\x00\x00\x00 +\x00\x86\t\x00\x00\x00\x00\x0e\x00\x00\x00\x02\x00\x86\t\x00\x01\x00\x00\x10\x00\x00\x00\xee\x01\x86\t\x00\x00\x00\x00\xc0\xfe\x00\x00\x14\x00\x86\t\x00\x00\x00\x10\xd4\xfe\x00\xf0+\x01y\x00\x8aME98 +\x1cMEB0\x8aME98 + MEL0\x08MGAP\x11\x11 +\x0e\x86\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00y\x00\x8aMGAP +\x04MGPB\x8aMGAP +\x08MGPL\x08MEMS\x11B\r +\xce\x86\t\x00\x01\x00\x00\x00\x00\x00\x00 +\x00\x86\t\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x86\t\x00\x00\x00@\x0c\x00\x00\x00\x00\x00\x86\t\x00\x00\x00\x80\x0c\x00\x00\x00\x00\x00\x86\t\x00\x00\x00\xc0\x0c\x00\x00\x00\x00\x00\x86\t\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x86\t\x00\x00\x00@\r\x00\x00\x00\x00\x00\x86\t\x00\x00\x00\x80\r\x00\x00\x00\x00\x00\x86\t\x00\x00\x00\xc0\r\x00\x00\x00\x00\x00\x86\t\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x86\t\x00\x00\x00@\x0e\x00\x00\x00\x00\x00\x86\t\x00\x00\x00\x80\x0e\x00\x00\x00\x00\x00\x86\t\x00\x00\x00\xc0\x0e\x00\x00\x00\x00\x00\x86\t\x00\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x86\t\x00\x01\x00\x00\x10\x00\x00\x00\xee\x01\x86\t\x00\x00\x00\x00\xc0\xfe\x00\x00\x14\x00\x86\t\x00\x00\x00\x10\xd4\xfe\x00\xf0+\x01y\x00\x8aMEMS +\x14MC0L\x8aMEMS + MC4L\x8aMEMS +,MC8L\x8aMEMS +8MCCL\x8aMEMS +DMD0L\x8aMEMS +PMD4L\x8aMEMS +\\MD8L\x8aMEMS +hMDCL\x8aMEMS +tME0L\x8aMEMS +\x80ME4L\x8aMEMS +\x8cME8L\x8aMEMS +\x98MECL\x8dMEMS +xMC0W\x8dMEMS +\xd8MC4W\x8dMEMS\x0b8\x01MC8W\x8dMEMS\x0b\x98\x01MCCW\x8dMEMS\x0b\xf8\x01MD0W\x8dMEMS\x0bX\x02MD4W\x8dMEMS\x0b\xb8\x02MD8W\x8dMEMS\x0b\x18\x03MDCW\x8dMEMS\x0bx\x03ME0W\x8dMEMS\x0b\xd8\x03ME4W\x8dMEMS\x0b8\x04ME8W\x8dMEMS\x0b\x98\x04MECW\x8aMEMS +\xacMEB1\x8aMEMS +\xb0MEL1\x8aMEMS +\xbcMEL2\x8aMEMS +\xc8MEL3\x14F=_CRS\x00\xa0M\x17\\W98Ft\\MEMXMEB0MEL0p\\GAPAMGPBp\\GAPLMGPL\xa0I\x0c\x90MGPBMGPLt\x87ME98 +\x02`\x08MBF0\x11\x02`r`\x87MGAP`\x08MBF1\x11\x02`pME98MBF0sMBF0MGAPMBF1\xa0O\x07\x92\x93\\/\x05_SB_PCI0LPC_TPM__STA +\x0ft\x87MBF1 +\x02`\x08MBF2\x11\x02`r`\x87\\/\x05_SB_PCI0LPC_TPM__CRS`\x08MBF3\x11\x02`pMBF1MBF2sMBF2\\/\x05_SB_PCI0LPC_TPM__CRSMBF3\xa4MBF3\xa1\x06\xa4MBF1\xa1I\x08\xa0O\x07\x92\x93\\/\x05_SB_PCI0LPC_TPM__STA +\x0ft\x87ME98 +\x02`\x08MBF4\x11\x02`r`\x87\\/\x05_SB_PCI0LPC_TPM__CRS`\x08MBF5\x11\x02`pME98MBF4sMBF4\\/\x05_SB_PCI0LPC_TPM__CRSMBF5\xa4MBF5\xa1\x06\xa4ME98{\\/\x03_SB_PCI0PAM1 +\x03`\xa0\x18`p\x0b\x00@MC0L\xa0\r{` +\x02\x00p +\x01MC0W{\\/\x03_SB_PCI0PAM1 +0`\xa0\x18`p\x0b\x00@MC4L\xa0\r{` + \x00p +\x01MC4W{\\/\x03_SB_PCI0PAM2 +\x03`\xa0\x18`p\x0b\x00@MC8L\xa0\r{` +\x02\x00p +\x01MC8W{\\/\x03_SB_PCI0PAM2 +0`\xa0\x18`p\x0b\x00@MCCL\xa0\r{` + \x00p +\x01MCCW{\\/\x03_SB_PCI0PAM3 +\x03`\xa0\x18`p\x0b\x00@MD0L\xa0\r{` +\x02\x00p +\x01MD0W{\\/\x03_SB_PCI0PAM3 +0`\xa0\x18`p\x0b\x00@MD4L\xa0\r{` + \x00p +\x01MD4W{\\/\x03_SB_PCI0PAM4 +\x03`\xa0\x18`p\x0b\x00@MD8L\xa0\r{` +\x02\x00p +\x01MD8W{\\/\x03_SB_PCI0PAM4 +0`\xa0\x18`p\x0b\x00@MDCL\xa0\r{` + \x00p +\x01MDCW{\\/\x03_SB_PCI0PAM5 +\x03`\xa0\x18`p\x0b\x00@ME0L\xa0\r{` +\x02\x00p +\x01ME0W{\\/\x03_SB_PCI0PAM5 +0`\xa0\x18`p\x0b\x00@ME4L\xa0\r{` + \x00p +\x01ME4W{\\/\x03_SB_PCI0PAM6 +\x03`\xa0\x18`p\x0b\x00@ME8L\xa0\r{` +\x02\x00p +\x01ME8W{\\/\x03_SB_PCI0PAM6 +0`\xa0\x18`p\x0b\x00@MECL\xa0\r{` + \x00p +\x01MECWt\\MEMXMEB1MEL1\xa0-\x92\x93\\/\x05_SB_PCI0LPC_TPM__STA +\x0fp\x0c\x00\x00@\x01MEL2p +\x00MEL3\xa4MEMS[\x82I\rLID_\x08_HID\x0cA\xd0\x0c\r\x14<_LID\x00\xa0\x1e\\H8DR\xa4\\/\x05_SB_PCI0LPC_EC__HPLD\xa1\x16\xa0\x0f{\\RBEC +F +\x04\x00\xa4 +\x01\xa1\x04\xa4 +\x00\x14&_PRW\x00\xa0\x15\x90\\W98F\x92\\WMEF\xa4\x12\x06\x02 +\x18 +\x04\xa1\t\xa4\x12\x06\x02 +\x18 +\x03\x14D\x06_PSW\x01\xa0?\\H8DR\xa0\x1chp +\x01\\/\x05_SB_PCI0LPC_EC__HWLO\xa1\x1bp +\x00\\/\x05_SB_PCI0LPC_EC__HWLO\xa1\x1c\xa0\rh\\MBEC +2 +\xff +\x04\xa1\x0c\\MBEC +2 +\xfb +\x00[\x82L\tSLPB\x08_HID\x0cA\xd0\x0c\x0e\x14&_PRW\x00\xa0\x15\x90\\W98F\x92\\WMEF\xa4\x12\x06\x02 +\x18 +\x04\xa1\t\xa4\x12\x06\x02 +\x18 +\x03\x14D\x06_PSW\x01\xa0?\\H8DR\xa0\x1chp +\x01\\/\x05_SB_PCI0LPC_EC__HWFN\xa1\x1bp +\x00\\/\x05_SB_PCI0LPC_EC__HWFN\xa1\x1c\xa0\rh\\MBEC +2 +\xff +\x10\xa1\x0c\\MBEC +2 +\xef +\x00[\x82\x8fH\x07PCI0[\x82\x8a\x96\x04LPC_\x08_ADR\x0c\x00\x00\x1f\x00\x08_S3D +\x03\x08RID_ +\x00[\x82M\x1aSIO_\x08_HID\x0cA\xd0\x0c\x02\x08_UID +\x00\x08SCRS\x11B\x10 +\xfeG\x01\x10\x00\x10\x00\x01\x10G\x01\x90\x00\x90\x00\x01\x10G\x01$\x00$\x00\x01\x02G\x01(\x00(\x00\x01\x02G\x01,\x00,\x00\x01\x02G\x010\x000\x00\x01\x02G\x014\x004\x00\x01\x02G\x018\x008\x00\x01\x02G\x01<\x00<\x00\x01\x02G\x01\xa4\x00\xa4\x00\x01\x02G\x01\xa8\x00\xa8\x00\x01\x02G\x01\xac\x00\xac\x00\x01\x02G\x01\xb0\x00\xb0\x00\x01\x06G\x01\xb8\x00\xb8\x00\x01\x02G\x01\xbc\x00\xbc\x00\x01\x02G\x01P\x00P\x00\x01\x04G\x01r\x00r\x00\x01\x06G\x01N\x16N\x16\x01\x02G\x01.\x00.\x00\x01\x02G\x01\x00\x10\x00\x10\x01\x80G\x01\x80\x11\x80\x11\x01@G\x01\x00\x08\x00\x08\x01\x10G\x01\xe0\x15\xe0\x15\x01\x10G\x01\x00\x16\x00\x16\x01`\x86\t\x00\x01\x00\x00\x00\xf0\x00\x00\x00\x04\x86\t\x00\x01\x00\xc0\xd1\xfe\x00@\x00\x00\x86\t\x00\x01\x00@\xd1\xfe\x00@\x00\x00\x86\t\x00\x01\x00\x80\xd1\xfe\x00\x10\x00\x00\x86\t\x00\x01\x00\x90\xd1\xfe\x00\x10\x00\x00y\x00\x14M\x08_CRS\x00\xa0 \x93\\/\x05_SB_PCI0LPC_TPM__STA +\x0f\xa4SCRS\xa1D\x06t\x87SCRS +\x02`\x08BUF0\x11\x02`r`\x87\\/\x05_SB_PCI0LPC_TPM__CRS`\x08BUF1\x11\x02`pSCRSBUF0sBUF0\\/\x05_SB_PCI0LPC_TPM__CRSBUF1\xa4BUF1[\x80LPCS\x02 +\x00\x0b\x00\x01[\x81G +LPCS\x00\x00@0PIRA\x08PIRB\x08PIRC\x08PIRD\x08SERQ\x08\x00\x18PIRE\x08PIRF\x08PIRG\x08PIRH\x08\x00@ +XU1A\x03\x00\x01XU2A\x03\x00\x01XPA_\x02\x00\x02XFA_\x01\x00\x03XU1E\x01XU2E\x01XPE_\x01XFE_\x01\x00\x0cXG1E\x01\x00\x06XG1A\t\x00\x10XG2E\x01\x00\x03XG2A\x0c\x00@\x0b\x00\x02CLKR\x01GYEN\x01\x00\x03C4C3\x01\x00\x02EXPE\x01\x00\x05[\x80LPIO\x01\x0b\x80\x11 +@[\x81O +LPIO\x03GU00\x08GU01\x08GU02\x08GU03\x08GI00\x08GI01\x08GI02\x08GI03\x08\x00 GL00\x08GL01\x08GL02\x08GL03\x08\x00@\x04GB00\x08GB01\x08GB02\x08GB03\x08\x00@\x08GV00\x08GV01\x08GV02\x08GV03\x08GU04\x08GU05\x08GU06\x08GU07\x08GI04\x08GI05\x08GI06\x08GI07\x08GL04\x08GL05\x08GL06\x08GL07\x08[\x80PMIO\x01\x0b\x00\x10 +\x80[\x81\x10PMIO\x00\x00@!\x00\x01SWGE\x01[\x823PIC_\x08_HID\x0bA\xd0\x08_CRS\x11 +\x1dG\x01 \x00 \x00\x01\x02G\x01\xa0\x00\xa0\x00\x01\x02G\x01\xd0\x04\xd0\x04\x01\x02"\x04\x00y\x00[\x82%TIMR\x08_HID\x0cA\xd0\x01\x00\x08_CRS\x11\x10 +\rG\x01@\x00@\x00\x01\x04"\x01\x00y\x00[\x82B\x05HPET\x08_HID\x0cA\xd0\x01\x03\x14*_STA\x00\xa0\x08W98F\xa4 +\x00\xa1\x17\xa0\x10\x90\\WNTF\x92\\WXPF\xa4 +\x00\xa1\x04\xa4 +\x0f\xa4 +\x00\x08_CRS\x11\x11 +\x0e\x86\t\x00\x00\x00\x00\xd0\xfe\x00\x04\x00\x00y\x00[\x825DMAC\x08_HID\x0cA\xd0\x02\x00\x08_CRS\x11 +\x1dG\x01\x00\x00\x00\x00\x01\x10G\x01\x80\x00\x80\x00\x01\x10G\x01\xc0\x00\xc0\x00\x01 *\x10\x05y\x00[\x82"SPKR\x08_HID\x0cA\xd0\x08\x00\x08_CRS\x11\r + +G\x01a\x00a\x00\x01\x01y\x00[\x82%FPU_\x08_HID\x0cA\xd0\x0c\x04\x08_CRS\x11\x10 +\rG\x01\xf0\x00\xf0\x00\x01\x01"\x00 y\x00[\x82%RTC_\x08_HID\x0cA\xd0\x0b\x00\x08_CRS\x11\x10 +\rG\x01p\x00p\x00\x01\x02"\x00\x01y\x00[\x82-KBD_\x08_HID\x0cA\xd0\x03\x03\x08_CRS\x11\x18 +\x15G\x01`\x00`\x00\x01\x01G\x01d\x00d\x00\x01\x01"\x02\x00y\x00[\x82J\x05MOU_\x08_HID\x0c$M7\x80\x08_CID\x0cA\xd0\x0f\x13\x08_CRS\x11\x08 +\x05"\x00\x10y\x00\x141MHID\x00\xa0\x1e\\/\x04_SB_PCI0LPC_PADDp\x0c$M7\x80_HID\xa1\x0bp\x0c$M\x00W_HID[\x80IMGA\x01\x0b\xe0\x15 +\x10[\x81!IMGA\x01\x00\x08\x00\x08\x00\x08WAKR\x10\x008GAIX\x08\x00\x08GADT\x08\x00\x08[\x86I\x0bGAIXGADT\x01\x00H VAUX\x02\x00\x01WOLE\x01\x00\x04\x00@\x07\x00\x01CBPW\x01CBSL\x01VDPW\x01PDNE\x01BLPL\x01\x00\x01LEDS\x01TP4R\x01PADR\x01BPAD\x01\x00\x01\x00\x01PADD\x01\x00 +DLAN\x01\x00G\x06BUSC\x01BUSD\x01\x00\x01DSCI\x01\x00\x04EPWG\x01\x00\x02DSCS\x01\x00\x04CSON\x01URST\x01\x00N\x06GDR0\x01GDR1\x01GDR2\x01\x00\x05GDT0\x01GDT1\x01GDT2\x01\x00E(GAID\x08[\x80NCFG\x01 +. +\x02[\x81\x10NCFG\x01INDX\x08DATA\x08[\x86B +INDXDATA\x01\x008LDN_\x08\x00@\x0cSIOD\x08\x00\x08SCF2\x08\x00\x08SCF4\x08\x00\x02PPSE\x01\x00\x04PNF_\x01FDCD\x01PPD_\x01SP2D\x01SP1D\x01\x00\x01GPSR\x02\x00\x01SRID\x08\x00\x08SCF9\x08\x00\x08\x00(LDA_\x01\x00\x07\x00H\x17IOHI\x08IOLW\x08\x00@\x07IRQN\x04IRQW\x01\x00\x03IRQT\x01IRQL\x01\x00\x06\x00\x10DMA0\x03\x00\x05DMA1\x03\x00\x05[\x86#INDXDATA\x01\x00@xPTRS\x01PPMC\x01\x00\x02PERA\x01PMDS\x03[\x86#INDXDATA\x01\x00@xSTRS\x01SPMC\x01SBSY\x01\x00\x04SBSE\x01[\x86\x1cINDXDATA\x01\x00@xGPPS\x08GPPC\x08GPER\x08[\x80CFGS\x01\x0bN\x16 +\x02[\x81\x10CFGS\x01NDXS\x08ATAS\x08[\x86J +NDXSATAS\x01\x008LDNS\x08\x00@\x0c\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x02PSES\x01\x00\x04PNFS\x01DCDS\x01PPDS\x01SP2S\x01SP1S\x01\x00\x01PSRS\x02\x00\x01RIDS\x08\x00\x08CCSS\x02CCES\x01MCSS\x01MESS\x01\x00\x03\x00\x08\x00(LDAS\x01\x00\x07\x00H\x17OHIS\x08OLWS\x08\x00@\x07RQNS\x04RQWS\x01\x00\x03RQTS\x01RQLS\x01\x00\x06\x00\x10MA0S\x03\x00\x05MA1S\x03\x00\x05[\x86#NDXSATAS\x01\x00@xTRSS\x01PMCS\x01BSYS\x01\x00\x04SESS\x01[\x80NSDL\x01\x0bL\x16 +\x01[\x81\x0bNSDL\x01DLPC\x08[\x80NSIO\x01\x0b\x80\x16 +\x0c[\x81\'NSIO\x01DRST\x01DLPD\x01\x00\x06\x00\x04DKI0\x01\x00\x03\x008DKI1\x01DKI2\x01[\x80DSIO\x01\x0b \x16 +\x0c[\x81\x0fDSIO\x01\x00\x01DUSB\x01\x00\x06[\x82K\x18FDC_\x08_HID\x0cA\xd0\x07\x00\x14 _STA\x00\xa0\x14\\LFDC\xa0\x08XFE_\xa4 +\x0f\xa1\x04\xa4 +\r\xa1\x04\xa4 +\x00\x14)_DIS\x00p +\x00XFE_p +\x00LDN_p +\x00IRQNp +\x00LDA_p +\x01FDCD\x08_CRS\x11\x1b +\x18G\x01\xf0\x03\xf0\x03\x01\x06G\x01\xf7\x03\xf7\x03\x01\x01"@\x00*\x04\x00y\x00\x08_PRS\x11\x1b +\x18G\x01\xf0\x03\xf0\x03\x01\x06G\x01\xf7\x03\xf7\x03\x01\x01"@\x00*\x04\x00y\x00\x14M\x04_SRS\x01p +\x00LDN_p +\x00LDA_p +\x03IOHIp +\xf0IOLWp +\x06IRQNp +\x02DMA0p +\x00FDCDp +\x01LDA_p +\x00XFA_p +\x01XFE_\x14\x1b_PSC\x00p +\x00LDN_\xa0\x08LDA_\xa4 +\x00\xa1\x04\xa4 +\x03\x14\x14_PS0\x00p +\x00LDN_p +\x01LDA_\x14\x14_PS3\x00p +\x00LDN_p +\x00LDA_\x14#SLFD\x01\xa0\x0eh\\MISA\x0b\xf3\x03 +\xf3 +\x04\xa1\r\\MISA\x0b\xf3\x03 +\xf3 +\x00[\x824FDD0\x08_ADR +\x00\x08_FDI\x12"\x10 +\x00 +\x04 +O +\x12 +\x01 +\xdf +\x02 +% +\x02 +\x12 +\x1b +\xff +l +\xf6 +\x0f +\x05\x10\x86/\x01\\/\x03_SB_PCI0LPC_[\x82A-LURT\x08_UID +\x00\x14-_STA\x00\xa0\x16\x93\\/\x03_SB_LCIO_STA +\x00\xa4 +\x00\xa1\x0f\xa0\x08XU1E\xa4 +\x0f\xa1\x04\xa4 +\r\x08_HID\x0cA\xd0\x05\x01\x08_PRW\x12\x06\x02 +\x18 +\x03\x14D\x06_PSW\x01\xa0?\\H8DR\xa0\x1chp +\x01\\/\x05_SB_PCI0LPC_EC__HWRI\xa1\x1bp +\x00\\/\x05_SB_PCI0LPC_EC__HWRI\xa1\x1c\xa0\rh\\MBEC +2 +\xff +@\xa1\x0c\\MBEC +2 +\xbf +\x00\x14)_DIS\x00p +\x00XU1Ep +\x03LDN_p +\x00IRQNp +\x00LDA_p +\x01SP1D\x08U1BF\x11\x10 +\rG\x01\x00\x00\x00\x00\x01\x08"\x00\x00y\x00\x8bU1BF +\x02U1MN\x8bU1BF +\x04U1MX\x8bU1BF +\tU1IQ\x14J\x04_CRS\x00p +\x03LDN_}yIOHI +\x08\x00IOLW`p`U1MNp`U1MXpIRQN`\xa0\r`y +\x01IRQNU1IQ\xa1\x08p +\x00U1IQ\xa4U1BF\x08_PRS\x11O\x06 +k1\x00G\x01\xf8\x03\xf8\x03\x01\x08"\x10\x001\x01G\x01\xf8\x02\xf8\x02\x01\x08"\x08\x001\x01G\x01\xe8\x03\xe8\x03\x01\x08"\x10\x001\x01G\x01\xe8\x02\xe8\x02\x01\x08"\x08\x001\x02G\x01\xf8\x03\xf8\x03\x01\x08"\xa8\x001\x02G\x01\xf8\x02\xf8\x02\x01\x08"\xb0\x001\x02G\x01\xe8\x03\xe8\x03\x01\x08"\xa8\x001\x02G\x01\xe8\x02\xe8\x02\x01\x08"\xb0\x008y\x00\x14O\x0c_SRS\x01\x8ch +\x02RUIL\x8ch +\x03RUIH\x8bh +\x02RUIO\x8bh +\tRUIQp +\x03LDN_p +\x00LDA_pRUILIOLWpRUIHIOHI\xa0\x12RUIQ\x82RUIQ`pv`IRQN\xa1\x08p +\x00IRQNp +\x00SP1Dp +\x01LDA_\xa0\x10\x93RUIO\x0b\xf8\x03p +\x00XU1A\xa1E\x04\xa0\x10\x93RUIO\x0b\xf8\x02p +\x01XU1A\xa11\xa0\x10\x93RUIO\x0b\xe8\x03p +\x07XU1A\xa1\x1e\xa0\x10\x93RUIO\x0b\xe8\x02p +\x05XU1A\xa1\x0b[2\x02\x00\x00\x02\x90\x0b\xb5\x01p +\x01XU1E\x14\x1b_PSC\x00p +\x03LDN_\xa0\x08LDA_\xa4 +\x00\xa1\x04\xa4 +\x03\x14\x06_PS0\x00\x14\x06_PS3\x00[\x82G-DURT\x08_UID +\x01\x143_STA\x00\xa0\x1c\x92{ +\x08\\/\x04_SB_PCI0LPC_DLPC\x00\xa4 +\x00\xa1\x0f\xa0\x08XU1E\xa4 +\x0f\xa1\x04\xa4 +\r\x08_HID\x0cA\xd0\x05\x01\x08_PRW\x12\x06\x02 +\x18 +\x03\x14D\x06_PSW\x01\xa0?\\H8DR\xa0\x1chp +\x01\\/\x05_SB_PCI0LPC_EC__HWRI\xa1\x1bp +\x00\\/\x05_SB_PCI0LPC_EC__HWRI\xa1\x1c\xa0\rh\\MBEC +2 +\xff +@\xa1\x0c\\MBEC +2 +\xbf +\x00\x14)_DIS\x00p +\x00XU1Ep +\x03LDN_p +\x00IRQNp +\x00LDA_p +\x01SP1D\x08U1BF\x11\x10 +\rG\x01\x00\x00\x00\x00\x01\x08"\x00\x00y\x00\x8bU1BF +\x02U1MN\x8bU1BF +\x04U1MX\x8bU1BF +\tU1IQ\x14J\x04_CRS\x00p +\x03LDN_}yIOHI +\x08\x00IOLW`p`U1MNp`U1MXpIRQN`\xa0\r`y +\x01IRQNU1IQ\xa1\x08p +\x00U1IQ\xa4U1BF\x08_PRS\x11O\x06 +k1\x00G\x01\xf8\x03\xf8\x03\x01\x08"\x10\x001\x01G\x01\xf8\x02\xf8\x02\x01\x08"\x08\x001\x01G\x01\xe8\x03\xe8\x03\x01\x08"\x10\x001\x01G\x01\xe8\x02\xe8\x02\x01\x08"\x08\x001\x02G\x01\xf8\x03\xf8\x03\x01\x08"\xa8\x001\x02G\x01\xf8\x02\xf8\x02\x01\x08"\xb0\x001\x02G\x01\xe8\x03\xe8\x03\x01\x08"\xa8\x001\x02G\x01\xe8\x02\xe8\x02\x01\x08"\xb0\x008y\x00\x14O\x0c_SRS\x01\x8ch +\x02RUIL\x8ch +\x03RUIH\x8bh +\x02RUIO\x8bh +\tRUIQp +\x03LDN_p +\x00LDA_pRUILIOLWpRUIHIOHI\xa0\x12RUIQ\x82RUIQ`pv`IRQN\xa1\x08p +\x00IRQNp +\x00SP1Dp +\x01LDA_\xa0\x10\x93RUIO\x0b\xf8\x03p +\x00XU1A\xa1E\x04\xa0\x10\x93RUIO\x0b\xf8\x02p +\x01XU1A\xa11\xa0\x10\x93RUIO\x0b\xe8\x03p +\x07XU1A\xa1\x1e\xa0\x10\x93RUIO\x0b\xe8\x02p +\x05XU1A\xa1\x0b[2\x02\x00\x00\x02\x90\x0b\xb5\x01p +\x01XU1E\x14\x1b_PSC\x00p +\x03LDN_\xa0\x08LDA_\xa4 +\x00\xa1\x04\xa4 +\x03\x14\x06_PS0\x00\x14\x06_PS3\x00[\x82L1LLPT\x08_UID +\x00\x14=_STA\x00\xa0\x16\x93\\/\x03_SB_LCIO_STA +\x00\xa4 +\x00\xa1\x1f\xa0\x18\x92\x93\\PMOD +\x03\xa0\x08XPE_\xa4 +\x0f\xa1\x04\xa4 +\r\xa1\x04\xa4 +\x00\x08_HID\x0cA\xd0\x04\x00\x14)_DIS\x00p +\x00XPE_p +\x01LDN_p +\x00IRQNp +\x00LDA_p +\x01PPD_\x08PPBF\x11\x10 +\rG\x01\x00\x00\x00\x00\x01\x00"\x00\x00y\x00\x8bPPBF +\x02LPN0\x8bPPBF +\x04LPX0\x8cPPBF +\x07LPL0\x8bPPBF +\tLPIQ\x14@\x07_CRS\x00\xa0\x0e\x93\\PMOD +\x03\xa4PPBFp +\x01LDN_}yIOHI +\x08\x00IOLW`p`LPN0p`LPX0\xa0\r\x93`\x0b\xbc\x03p +\x03LPL0\xa1\x08p +\x08LPL0pIRQN`\xa0\r`y +\x01IRQNLPIQ\xa1\x08p +\x00LPIQ\xa4PPBF\x14\x19_PRS\x00\xa0\x0b\\PMOD\xa4PEPP\xa1\x06\xa4PLPT\x08PLPT\x11O\x04 +K0G\x01\xbc\x03\xbc\x03\x01\x03"\x80\x000G\x01x\x03x\x03\x01\x08"\x80\x000G\x01x\x02x\x02\x01\x08" \x000G\x01\xbc\x03\xbc\x03\x01\x03" \x000G\x01x\x03x\x03\x01\x08" \x000G\x01x\x02x\x02\x01\x08"\x80\x008y\x00\x08PEPP\x116 +30G\x01x\x03x\x03\x01\x08"\x80\x000G\x01x\x02x\x02\x01\x08" \x000G\x01x\x03x\x03\x01\x08" \x000G\x01x\x02x\x02\x01\x08"\x80\x008y\x00\x14H\x0f_SRS\x01\x8ch +\x02RLIL\x8ch +\x03RLIH\x8bh +\x02RLIO\x8bh +\tRLIQp +\x01LDN_p +\x00LDA_pRLILIOLWpRLIHIOHI\xa0\x12RLIQ\x82RLIQ`pv`IRQN\xa1\x08p +\x00IRQN\xa0 \x93\\PMOD +\x00\xa0\r\\PDIRp +\x01PMDS\xa1\x08p +\x00PMDS\xa1\x1b\xa0\x10\x93\\PMOD +\x01p +\x02PMDS\xa1\x08p +\x03PMDSp +\x00PPD_p +\x01LDA_\xa0\x10\x93RLIO\x0bx\x03p +\x00XPA_\xa11\xa0\x10\x93RLIO\x0bx\x02p +\x01XPA_\xa1\x1e\xa0\x10\x93RLIO\x0b\xbc\x03p +\x02XPA_\xa1\x0b[2\x02\x00\x00\x02\x90\x0b\xce\x01p +\x01XPE_\x14\x1b_PSC\x00p +\x01LDN_\xa0\x08LDA_\xa4 +\x00\xa1\x04\xa4 +\x03\x14\x14_PS0\x00p +\x01LDN_p +\x01LDA_\x14\x14_PS3\x00p +\x01LDN_p +\x00LDA_[\x82C2DLPT\x08_UID +\x01\x14D\x04_STA\x00\xa0\x1c\x92{ +\x08\\/\x04_SB_PCI0LPC_DLPC\x00\xa4 +\x00\xa1\x1f\xa0\x18\x92\x93\\PMOD +\x03\xa0\x08XPE_\xa4 +\x0f\xa1\x04\xa4 +\r\xa1\x04\xa4 +\x00\x08_HID\x0cA\xd0\x04\x00\x14)_DIS\x00p +\x00XPE_p +\x01LDN_p +\x00IRQNp +\x00LDA_p +\x01PPD_\x08PPBF\x11\x10 +\rG\x01\x00\x00\x00\x00\x01\x00"\x00\x00y\x00\x8bPPBF +\x02LPN0\x8bPPBF +\x04LPX0\x8cPPBF +\x07LPL0\x8bPPBF +\tLPIQ\x14@\x07_CRS\x00\xa0\x0e\x93\\PMOD +\x03\xa4PPBFp +\x01LDN_}yIOHI +\x08\x00IOLW`p`LPN0p`LPX0\xa0\r\x93`\x0b\xbc\x03p +\x03LPL0\xa1\x08p +\x08LPL0pIRQN`\xa0\r`y +\x01IRQNLPIQ\xa1\x08p +\x00LPIQ\xa4PPBF\x14\x19_PRS\x00\xa0\x0b\\PMOD\xa4PEPP\xa1\x06\xa4PLPT\x08PLPT\x11O\x04 +K0G\x01\xbc\x03\xbc\x03\x01\x03"\x80\x000G\x01x\x03x\x03\x01\x08"\x80\x000G\x01x\x02x\x02\x01\x08" \x000G\x01\xbc\x03\xbc\x03\x01\x03" \x000G\x01x\x03x\x03\x01\x08" \x000G\x01x\x02x\x02\x01\x08"\x80\x008y\x00\x08PEPP\x116 +30G\x01x\x03x\x03\x01\x08"\x80\x000G\x01x\x02x\x02\x01\x08" \x000G\x01x\x03x\x03\x01\x08" \x000G\x01x\x02x\x02\x01\x08"\x80\x008y\x00\x14H\x0f_SRS\x01\x8ch +\x02RLIL\x8ch +\x03RLIH\x8bh +\x02RLIO\x8bh +\tRLIQp +\x01LDN_p +\x00LDA_pRLILIOLWpRLIHIOHI\xa0\x12RLIQ\x82RLIQ`pv`IRQN\xa1\x08p +\x00IRQN\xa0 \x93\\PMOD +\x00\xa0\r\\PDIRp +\x01PMDS\xa1\x08p +\x00PMDS\xa1\x1b\xa0\x10\x93\\PMOD +\x01p +\x02PMDS\xa1\x08p +\x03PMDSp +\x00PPD_p +\x01LDA_\xa0\x10\x93RLIO\x0bx\x03p +\x00XPA_\xa11\xa0\x10\x93RLIO\x0bx\x02p +\x01XPA_\xa1\x1e\xa0\x10\x93RLIO\x0b\xbc\x03p +\x02XPA_\xa1\x0b[2\x02\x00\x00\x02\x90\x0b\xce\x01p +\x01XPE_\x14\x1b_PSC\x00p +\x01LDN_\xa0\x08LDA_\xa4 +\x00\xa1\x04\xa4 +\x03\x14\x14_PS0\x00p +\x01LDN_p +\x01LDA_\x14\x14_PS3\x00p +\x01LDN_p +\x00LDA_[\x82E7LECP\x08_UID +\x00\x14<_STA\x00\xa0\x16\x93\\/\x03_SB_LCIO_STA +\x00\xa4 +\x00\xa1\x1e\xa0\x17\x93\\PMOD +\x03\xa0\x08XPE_\xa4 +\x0f\xa1\x04\xa4 +\r\xa1\x04\xa4 +\x00\x08_HID\x0cA\xd0\x04\x01\x14)_DIS\x00p +\x00XPE_p +\x01LDN_p +\x00IRQNp +\x00LDA_p +\x01PPD_\x08EPBF\x11\x1b +\x18G\x01\x00\x00\x00\x00\x01\x00G\x01\x00\x00\x00\x00\x01\x00"\x00\x00*\x00\x00y\x00\x8bEPBF +\x02ECN0\x8bEPBF +\x04ECX0\x8cEPBF +\x07ECL0\x8bEPBF + +ECN1\x8bEPBF +\x0cECX1\x8cEPBF +\x0fECL1\x8bEPBF +\x11ECIQ\x8bEPBF +\x14ECDQ\x14N +_CRS\x00\xa0\x0f\x92\x93\\PMOD +\x03\xa4EPBFp +\x01LDN_}yIOHI +\x08\x00IOLW`p`ECN0p`ECX0r`\x0b\x00\x04ECN1r`\x0b\x00\x04ECX1\xa0\x14\x93`\x0b\xbc\x03p +\x03ECL0p +\x03ECL1\xa1\x0fp +\x08ECL0p +\x08ECL1pIRQN`\xa0\r`y +\x01IRQNECIQ\xa1\x08p +\x00ECIQpDMA0`\xa0\r\x95` +\x04y +\x01`ECDQ\xa1\x08p +\x00ECDQ\xa4EPBF\x08_PRS\x11A\t +\x8d0G\x01x\x03x\x03\x01\x08G\x01x\x07x\x07\x01\x08"\x80\x00*\x0b\x000G\x01x\x02x\x02\x01\x08G\x01x\x06x\x06\x01\x08" \x00*\x0b\x000G\x01\xbc\x03\xbc\x03\x01\x03G\x01\xbc\x07\xbc\x07\x01\x03"\x80\x00*\x0b\x000G\x01x\x03x\x03\x01\x08G\x01x\x07x\x07\x01\x08" \x00*\x0b\x000G\x01x\x02x\x02\x01\x08G\x01x\x06x\x06\x01\x08"\x80\x00*\x0b\x000G\x01\xbc\x03\xbc\x03\x01\x03G\x01\xbc\x07\xbc\x07\x01\x03" \x00*\x0b\x008y\x00\x14A\x0f_SRS\x01\x8ch +\x02RLIL\x8ch +\x03RLIH\x8bh +\x02RLIO\x8bh +\x11RLIQ\x8ch +\x14RLDQp +\x01LDN_p +\x00LDA_p +\x07PMDSp +\x01PERApRLILIOLWpRLIHIOHI\xa0\x12RLIQ\x82RLIQ`pv`IRQN\xa1\x08p +\x00IRQN\xa0\x16{RLDQ +\x0f\x00\x82RLDQ`pv`DMA0\xa1\x08p +\x04DMA0p +\x00PPD_p +\x01LDA_\xa0\x10\x93RLIO\x0bx\x03p +\x00XPA_\xa11\xa0\x10\x93RLIO\x0bx\x02p +\x01XPA_\xa1\x1e\xa0\x10\x93RLIO\x0b\xbc\x03p +\x02XPA_\xa1\x0b[2\x02\x00\x00\x02\x90\x0b\x9f\x01p +\x01XPE_\x14\x1b_PSC\x00p +\x01LDN_\xa0\x08LDA_\xa4 +\x00\xa1\x04\xa4 +\x03\x14\x14_PS0\x00p +\x01LDN_p +\x01LDA_\x14\x14_PS3\x00p +\x01LDN_p +\x00LDA_[\x82L7DECP\x08_UID +\x01\x14C\x04_STA\x00\xa0\x1c\x92{ +\x08\\/\x04_SB_PCI0LPC_DLPC\x00\xa4 +\x00\xa1\x1e\xa0\x17\x93\\PMOD +\x03\xa0\x08XPE_\xa4 +\x0f\xa1\x04\xa4 +\r\xa1\x04\xa4 +\x00\x08_HID\x0cA\xd0\x04\x01\x14)_DIS\x00p +\x00XPE_p +\x01LDN_p +\x00IRQNp +\x00LDA_p +\x01PPD_\x08EPBF\x11\x1b +\x18G\x01\x00\x00\x00\x00\x01\x00G\x01\x00\x00\x00\x00\x01\x00"\x00\x00*\x00\x00y\x00\x8bEPBF +\x02ECN0\x8bEPBF +\x04ECX0\x8cEPBF +\x07ECL0\x8bEPBF + +ECN1\x8bEPBF +\x0cECX1\x8cEPBF +\x0fECL1\x8bEPBF +\x11ECIQ\x8bEPBF +\x14ECDQ\x14N +_CRS\x00\xa0\x0f\x92\x93\\PMOD +\x03\xa4EPBFp +\x01LDN_}yIOHI +\x08\x00IOLW`p`ECN0p`ECX0r`\x0b\x00\x04ECN1r`\x0b\x00\x04ECX1\xa0\x14\x93`\x0b\xbc\x03p +\x03ECL0p +\x03ECL1\xa1\x0fp +\x08ECL0p +\x08ECL1pIRQN`\xa0\r`y +\x01IRQNECIQ\xa1\x08p +\x00ECIQpDMA0`\xa0\r\x95` +\x04y +\x01`ECDQ\xa1\x08p +\x00ECDQ\xa4EPBF\x08_PRS\x11A\t +\x8d0G\x01x\x03x\x03\x01\x08G\x01x\x07x\x07\x01\x08"\x80\x00*\x0b\x000G\x01x\x02x\x02\x01\x08G\x01x\x06x\x06\x01\x08" \x00*\x0b\x000G\x01\xbc\x03\xbc\x03\x01\x03G\x01\xbc\x07\xbc\x07\x01\x03"\x80\x00*\x0b\x000G\x01x\x03x\x03\x01\x08G\x01x\x07x\x07\x01\x08" \x00*\x0b\x000G\x01x\x02x\x02\x01\x08G\x01x\x06x\x06\x01\x08"\x80\x00*\x0b\x000G\x01\xbc\x03\xbc\x03\x01\x03G\x01\xbc\x07\xbc\x07\x01\x03" \x00*\x0b\x008y\x00\x14A\x0f_SRS\x01\x8ch +\x02RLIL\x8ch +\x03RLIH\x8bh +\x02RLIO\x8bh +\x11RLIQ\x8ch +\x14RLDQp +\x01LDN_p +\x00LDA_p +\x07PMDSp +\x01PERApRLILIOLWpRLIHIOHI\xa0\x12RLIQ\x82RLIQ`pv`IRQN\xa1\x08p +\x00IRQN\xa0\x16{RLDQ +\x0f\x00\x82RLDQ`pv`DMA0\xa1\x08p +\x04DMA0p +\x00PPD_p +\x01LDA_\xa0\x10\x93RLIO\x0bx\x03p +\x00XPA_\xa11\xa0\x10\x93RLIO\x0bx\x02p +\x01XPA_\xa1\x1e\xa0\x10\x93RLIO\x0b\xbc\x03p +\x02XPA_\xa1\x0b[2\x02\x00\x00\x02\x90\x0b\x9f\x01p +\x01XPE_\x14\x1b_PSC\x00p +\x01LDN_\xa0\x08LDA_\xa4 +\x00\xa1\x04\xa4 +\x03\x14\x14_PS0\x00p +\x01LDN_p +\x01LDA_\x14\x14_PS3\x00p +\x01LDN_p +\x00LDA_\x10#\\/\x04_SB_PCI0LPC_LURT\x08_EJD\r_SB.LCIO\x00\x10#\\/\x04_SB_PCI0LPC_DURT\x08_EJD\r_SB.GDCK\x00\x10#\\/\x04_SB_PCI0LPC_LLPT\x08_EJD\r_SB.LCIO\x00\x10#\\/\x04_SB_PCI0LPC_DLPT\x08_EJD\r_SB.GDCK\x00\x10#\\/\x04_SB_PCI0LPC_LECP\x08_EJD\r_SB.LCIO\x00\x10#\\/\x04_SB_PCI0LPC_DECP\x08_EJD\r_SB.GDCK\x00[\x82H.FIR_\x08_HID\x0c$M\x00q\x08_CID\x0cA\xd0\x05\x11\x14\x1d_STA\x00\xa0\x08HDIR\xa4 +\x00\xa0\x08XU2E\xa4 +\x0f\xa1\x04\xa4 +\r\x14)_DIS\x00p +\x00XU2Ep +\x02LDNSp +\x00RQNSp +\x00LDASp +\x01SP2S\x08U2BF\x11\x13 +\x10G\x01\x00\x00\x00\x00\x01\x08"\x00\x00*\x00\x00y\x00\x8bU2BF +\x02IRMN\x8bU2BF +\x04IRMX\x8bU2BF +\tIRIQ\x8cU2BF +\x0cIRDQ\x14G\x06_CRS\x00p +\x02LDNS}yOHIS +\x08\x00OLWS`p`IRMNp`IRMXpRQNS`\xa0\r`y +\x01RQNSIRIQ\xa1\x08p +\x00IRIQpMA0S`\xa0\r\x95` +\x04y +\x01`IRDQ\xa1\x08p +\x00IRDQ\xa4U2BF\x08_PRS\x11G\x08 +\x831\x00G\x01\xf8\x02\xf8\x02\x01\x08"\x08\x00*\x0b\x001\x01G\x01\xf8\x03\xf8\x03\x01\x08"\x10\x00*\x0b\x001\x01G\x01\xe8\x02\xe8\x02\x01\x08"\x08\x00*\x0b\x001\x01G\x01\xe8\x03\xe8\x03\x01\x08"\x10\x00*\x0b\x001\x02G\x01\xf8\x02\xf8\x02\x01\x08"\xb0\x00*\x0b\x001\x02G\x01\xf8\x03\xf8\x03\x01\x08"\xa8\x00*\x0b\x001\x02G\x01\xe8\x02\xe8\x02\x01\x08"\xb0\x00*\x0b\x001\x02G\x01\xe8\x03\xe8\x03\x01\x08"\xa8\x00*\x0b\x008y\x00\x14E\x10_SRS\x01\x8ch +\x02RIIL\x8ch +\x03RIIH\x8bh +\x02RIIO\x8bh +\tRIIQ\x8ch +\x0cRIDQp +\x02LDNSp +\x00LDASpRIILOLWSpRIIHOHIS\xa0\x12RIIQ\x82RIIQ`pv`RQNS\xa1\x08p +\x00RQNS\xa0\x16{RIDQ +\x0f\x00\x82RIDQ`pv`MA0S\xa1\x08p +\x04MA0Sp +\x04MA1Sp +\x01SESSp +\x00SP2Sp +\x01LDAS\xa0\x10\x93RIIO\x0b\xf8\x03p +\x00XU2A\xa1E\x04\xa0\x10\x93RIIO\x0b\xf8\x02p +\x01XU2A\xa11\xa0\x10\x93RIIO\x0b\xe8\x03p +\x07XU2A\xa1\x1e\xa0\x10\x93RIIO\x0b\xe8\x02p +\x05XU2A\xa1\x0b[2\x02\x00\x00\x02\x90\x0b\xa4\x01p +\x01XU2E\x14\x1b_PSC\x00p +\x02LDNS\xa0\x08LDAS\xa4 +\x00\xa1\x04\xa4 +\x03\x14\x14_PS0\x00p +\x02LDNSp +\x01LDAS\x14\x14_PS3\x00p +\x02LDNSp +\x00LDAS\x10C\x0e\\/\x03_SB_PCI0LPC_\x14A\rLCON\x01\xa0K +h\xa0G +EPWGp +\x01DLPDp +\x07DLPC\xa2\x0e\x92{ +\x08DLPC\x00[" +\x01p +\x01DRST\xa0L\x07\x92\x93SIOD +\xff}SCF9 +\xa0SCF9\xa2\x0e\x92{ +\x10SCF9\x00[" +\x01}SCF2 +\xebSCF2p +\x07LDN_{\x0b \x16 +\xff`p`IOLWz\x0b \x16 +\x08`{` +\xffIOHIp +\x01LDA_p +\x01GPPSp +\x03GPPCp +\x02GPPSp +\x03GPPCp +\x00DUSB\xa1\x1dp +\x01DUSBp +\x00DRSTp +\x00DLPDp +\x00DLPC[\x82GKTPM_\x08_HID\x0c\x06\x8d\x12\x00\x08_CID\x0cA\xd0\x0c1\x14\x1d_STA\x00\xa0\x0e{\\TPMP +\x01\x00p +\x0f`\xa1\x05p +\x00`\xa4`\x08_CRS\x11\x11 +\x0e\x86\t\x00\x01\x00\x00\xd4\xfe\x00\x10\x00\x00y\x00\x14GF_DSM\x0c\x08TMPB\x11\x05 +\x02\x00\x00\x8cTMPB +\x00LPCT\x8cTMPB +\x01SSUM\x08LRSP +\x00\x08PPRC +\x00\x08RQS1\x12\x06\x02 +\x0c +\r\x08PTOP\x12\x06\x02 +\x00 +\x00\x08RTOP\x12\x08\x03 +\x00 +\x00 +\x00\x8ah +\x00IID0\x8ah +\x04IID1\x8ah +\x08IID2\x8ah +\x0cIID3\x08UID0\x11\x13 +\x10\xa6\xfa\xdd=\x1b6\xb4N\xa4$\x8d\x10\x08\x9d\x16S\x8aUID0 +\x00EID0\x8aUID0 +\x04EID1\x8aUID0 +\x08EID2\x8aUID0 +\x0cEID3\xa0I,\x90\x90\x93IID0EID0\x93IID1EID1\x90\x93IID2EID2\x93IID3EID3\xa0\x0b\x93j +\x00\xa4\x11\x04 +\x01?\xa0\x0b\x93j +\x01\xa4\r1.0\x00\xa0L\x1c\x93j +\x02p +\x00PPRCTPHY +\x00p\\PH02LPCT\xa0@\x1aLPCTp +\x00SSUMrSSUM\\PH01SSUMrSSUM\\PH02SSUMrSSUM\\PH03SSUMrSSUM\\PH04SSUMrSSUM\\PH05SSUMrSSUM\\PH06SSUMrSSUM\\PH07SSUMrSSUM\\PH08SSUMrSSUM\\PH09SSUMrSSUM\\PH0ASSUMrSSUM\\PH0BSSUM\xa0\x0cSSUMp +\x02PPRC\xa1K\x0ep\x83\x88k +\x00\x00\\PH04p\x89RQS1\x01\\PH04\x00 +\x00 +\x00`\xa0\x0c\x92\x93`\xffp +\x01PPRC\xa1M\x0bp +\x00\\PH03p +\x00SSUMrSSUM\\PH01SSUMrSSUM\\PH02SSUMrSSUM\\PH03SSUMrSSUM\\PH04SSUMrSSUM\\PH05SSUMrSSUM\\PH06SSUMrSSUM\\PH07SSUMrSSUM\\PH08SSUMrSSUM\\PH09SSUMrSSUM\\PH0ASSUMrSSUM\\PH0BSSUMt +\x00SSUM\\PH03TPHY +\x01\xa1\x08p +\x02PPRC\xa4PPRC\xa0\x1e\x93j +\x03TPHY +\x00p\\PH04\x88PTOP +\x01\x00\xa4PTOP\xa0\x08\x93j +\x04\xa4 +\x01\xa0I\x08\x93j +\x05TPHY +\x00p\\PH07`p\\PH06LRSPp}y` +\x08`LRSP\x00LRSP\xa0\x1c\x90\x93\\PH06 +\xf0\x93\\PH07 +\xffp\x0c\xf0\xff\xff\xffLRSP\xa1\x1e\xa0\x1c\x90\x93\\PH06 +\xf1\x93\\PH07 +\xffp\x0c\xf1\xff\xff\xffLRSPpLRSP\x88RTOP +\x02\x00p\\PH05\x88RTOP +\x01\x00\xa4RTOP\xa0\x08\x93j +\x06\xa4 +\x02\x08UID1\x11\x13 +\x10\xedT`7\x13\xccuF\x90\x1cGV\xd7\xf2\xd4]\x8aUID1 +\x00EID4\x8aUID1 +\x04EID5\x8aUID1 +\x08EID6\x8aUID1 +\x0cEID7\xa0@\t\x90\x90\x93IID0EID4\x93IID1EID5\x90\x93IID2EID6\x93IID3EID7pj[1pk[1\xa0\x0b\x93j +\x00\xa4\x11\x04 +\x01\x01\xa0O\x04\x93j +\x01\xa0\x12\x93\x83\x88k +\x00\x00 +\x00p +\x00\\TCG0\xa0\x12\x93\x83\x88k +\x00\x00 +\x01p +\x01\\TCG0\xa0\x0f\x93\\TCG0 +\x00TMOR +\x00\xa0\x0f\x93\\TCG0 +\x01TMOR +\x01\xa4 +\x00\xa4 +\x01\xa4\x11\x04 +\x01\x00[\x80TSES\x00\x0c\x00\x00\xe8\xff\x0b\x00\x02[\x81F\x08TSES\x01\x00@\x06TSCM\x08\x00@(TCT0\x08TCT1\x08TCT2\x08\x00@\x05TMT0\x08\x00H\x04TMT1\x08\x00H\x04TMT2\x08\x00HzTLD0\x08TLD1\x08TLD2\x08TLDL\x18TLDB\x18TLDS\x10TSB0\x08TSB1\x08TSB2\x08TSBL\x08TSBBH\x04TSBF\x10TSBC\x10\x00@\x1aTSIM\x08[\x81\x0fTSES\x01\x00H.TCTAH\x11[\x81\x0fTSES\x01\x00@\xbaTCTLH\x05[\x81\x0fTSES\x01\x00H\xbfTCTBH\x08\x148TCSZ\x02\xa01\x92\x93TSCM +\x12\xa0\x0b\x93 +\x01hpiTCZ1\xa1\x1b\xa0\x0b\x93 +\x02hpiTCZ2\xa1\r\xa0\x0b\x93 +\x03hpiTCZ3\x14I\x0cTCST\x02\xa0A\x0c\x92\x93TSCM +\x12p +\x00`\xa0\x1e\x93 +\x01h\xa0\x18\x94iTMT0p +\x04TSIMpiTMT0p +\x01`\xa1B\x04\xa0\x1e\x93 +\x02h\xa0\x18\x94iTMT1p +\x04TSIMpiTMT1p +\x01`\xa1 \xa0\x1e\x93 +\x03h\xa0\x18\x94iTMT2p +\x04TSIMpiTMT2p +\x01`\xa0@\x05`p +\x00TCT2\x08TCTC\x11\x03 +#pTCTATCTCp +"cp +\x00a\xa2\x12cp\x83\x88TCTCc\x00brabavcp\x80a\x00bub{b +\xffapaTCT2p +\xfeTSIM\x14I\x08TCBS\x04\xa0A\x08\x92\x93TSCM +\x12\xa0F\x07\x93{h +\x07\x00 +\x00p +\x12TSIMphTSBLpiTSBBpjTSBFpkTSBCp +\x00TSB2\x08TCTD\x11\x03 +#pTCTBTCTDp +\x10`p +\x00a\xa2\x12`p\x83\x88TCTD`\x00brabav`p\x80a\x00bub{b +\xffapaTSB2p +\xfeTSIM\x14@\x07TSCL\x02\xa0H\x06\x92\x93TSCM +\x12p +\x15TSIMrTLDSiTLDSp +\x00TLD2\x08TLDD\x11\x03 +\x0bpTCTLTLDDp + +`p +\x00a\xa2\x12`p\x83\x88TLDD`\x00brabav`p\x80a\x00bub{b +\xffapaTLD2p +\xfeTSIM[\x82\x8e\x00\x02EC__\x08_HID\x0cA\xd0\x0c\t\x08_UID +\x00\x08_GPE +\x1c\x14\x13_REG\x02\xa0\x0c\x93h +\x03pi\\H8DR[\x80ECOR\x03 +\x00\x0b\x00\x01[\x81J+ECOR\x01HDBM\x01\x00\x01\x00\x01HFNE\x01\x00\x01\x00\x01HLDM\x01\x00\x01\x00\x01BTCM\x01\x00\x01\x00\x01\x00\x01HBPR\x01BTPC\x01\x00\x01HDUE\x01\x00\x07\x00\x01HETE\x01\x00\x0eHSPA\x01\x00\x07HSUN\x08HSRP\x08\x00 HLCL\x08\x00\x08HFNS\x02\x00\x06\x00\x04HAAA\x03\x00\x01HAM0\x08HAM1\x08HAM2\x08HAM3\x08HAM4\x08HAM5\x08HAM6\x08HAM7\x08HAM8\x08HAM9\x08HAMA\x08HAMB\x08HAMC\x08HAMD\x08HAME\x08HAMF\x08HT00\x01HT01\x01HT02\x01HT03\x01HT10\x01HT11\x01HT12\x01HT13\x01\x00\x10HANT\x08\x00\x10\x00\x01\x00\x01HANA\x02\x00\x01\x00\x01\x00\x1aHATR\x08HT0H\x08HT0L\x08HT1H\x08HT1L\x08HFSP\x08\x00\x06HMUT\x01\x00\x01HBRV\x08HWPM\x01HWLB\x01HWLO\x01HWDK\x01HWFN\x01HWBT\x01HWRI\x01HWBU\x01HWLU\x01\x00\x07\x00\x07HPLO\x01\x00\x08\x00\x10HB0S\x07HB0A\x01HB1S\x07HB1A\x01HCMU\x01\x00\x02OVRQ\x01DCBD\x01DCWL\x01DCWW\x01HB1I\x01\x00\x01KBLT\x01BTPW\x01BTDT\x01HUBS\x01BDPW\x01BDDT\x01HUBB\x01\x00@\x05\x00\x01BTWK\x01HPLD\x01\x00\x01HPAC\x01BTST\x01\x00\x02HPBU\x01\x00\x01HBID\x04HBCS\x01HPNF\x01\x00\x01GSTS\x01\x00\x02HLBU\x01BDST\x01HCBL\x01\x00)HWAK\x10HMPR\x08HMST\x05\x00\x02HMDN\x01HMAD\x08HMCM\x08\x00@\x10HMBC\x08\x00\x18TMP0\x08TMP1\x08TMP2\x08TMP3\x08TMP4\x08TMP5\x08TMP6\x08TMP7\x08\x00\x08HIID\x08\x00\x08HFNI\x08\x00 HDEC\x08HDEO\x08\x00\x18HDAA\x03HDAB\x03HDAC\x02\x00@\x11HDEN HDEP HDEM\x08HDES\x08\x00@\x07ATMX\x08HWAT\x08\x00H\x11\x00\x04HDDD\x01\x14A\x04_INI\x00\xa0\r\\H8DRp +\x00HSPA\xa1\x0c\\MBEC +\x05 +\xfe +\x00BINI\\/\x06_SB_PCI0LPC_EC__HKEYWGIN\x08_CRS\x11\x15 +\x12G\x01b\x00b\x00\x01\x01G\x01f\x00f\x00\x01\x01y\x00\x14!LED_\x02}hi`\xa0\x0c\\H8DRp`HLCL\xa1\t\\WBEC +\x0c`\x08BAON +\x00\x08WBON +\x00\x14N\x18BEEP\x01\xa0\x0c\x93h +\x05p +\x00WBONpWBONb\xa0O\x04BAON\xa0$\x93h +\x00p +\x00BAON\xa0\rWBONp +\x03`p +\x08a\xa1\tp +\x00`p +\x00a\xa1#p +\xff`p +\xffa\xa0\x0c\x93h +\x11p +\x00WBON\xa0\x0c\x93h +\x10p +\x01WBON\xa1G\x04ph`p +\xffa\xa0\x13\x93h +\x0fph`p +\x08ap +\x01BAON\xa0\x14\x93h +\x11p +\x00`p +\x00ap +\x00WBON\xa0\x14\x93h +\x10p +\x03`p +\x08ap +\x01WBON\xa02\x93h +\x03p +\x00WBON\xa0%bp +\x07`\xa0\x1e\x91\x93\\SPS_ +\x03\x93\\SPS_ +\x04p +\x00bp +\xff`p +\xffa\xa0\x14\x93h +\x07\xa0\x0ebp +\x00bp +\xff`p +\xffa\xa0C\x04\x90\\H8DR\x92\\W98F\xa0\x1a\x90b\x92WBONp +\x00HSRPp +\x00HSUN[" +d\xa0\x0c\x92\x93a +\xffpaHSRP\xa0\x0c\x92\x93` +\xffp`HSUN\xa1>\xa0\x1e\x90b\x92WBON\\WBEC +\x07 +\x00\\WBEC +\x06 +\x00[" +d\xa0\x0e\x92\x93a +\xff\\WBEC +\x07a\xa0\x0e\x92\x93` +\xff\\WBEC +\x06`\xa0\x05\x93h +\x03\xa0 +\x93h +\x07["\x0b\xf4\x01\x14C\tEVNT\x01\xa07\\H8DR\xa0\x18h}HAM7 +\x01HAM7}HAM5 +\x04HAM5\xa1\x17{HAM7 +\xfeHAM7{HAM5 +\xfbHAM5\xa1C\x05\xa0(h\\MBEC +\x17 +\xff +\x01\\MBEC +\x15 +\xff +\x04\xa0\x0f\\W98F\\WBEC +\x18 +\xff\xa1\'\\MBEC +\x17 +\xfe +\x00\\MBEC +\x15 +\xfb +\x00\xa0\x0f\\W98F\\WBEC +\x18 +\x00\x14K\x07PNST\x01\xa0=\x90hBSTA +\x02\xa0\x1b\x90\\H8DR\x92\\W98Fp +\x01HBPRp +\x01HUBB\xa1\x17\\MBEC +\x01 +\xff + \\MBEC +; +\xff +\x80\xa15\xa0\x1b\x90\\H8DR\x92\\W98Fp +\x00HBPRp +\x00HUBB\xa1\x17\\MBEC +\x01 +\xdf +\x00\\MBEC +; +\x7f +\x00[\x84I\x07PUBS\x03\x00\x00\x14+_STA\x00\xa0\x0c\\H8DRpHUBS`\xa1\x0c{\\RBEC +; +\x10`\xa0\x05`\xa4 +\x01\xa1\x04\xa4 +\x00\x14!_ON_\x00\xa0\r\\H8DRp +\x01HUBS\xa1\x0c\\MBEC +; +\xff +\x10\x14!_OFF\x00\xa0\r\\H8DRp +\x00HUBS\xa1\x0c\\MBEC +; +\xef +\x00\x14E\x0fLPMD\x00p +\x00`p +\x00ap +\x00b\xa0B\x06\\H8DR\xa0J\x05HPLO\xa0J\x04HPAC\xa0C\x04\x95HWAT +Z\xa0\x16\x91\x92HB0A\x95{HB0S +\x0f\x00 +\x03p +\x01a\xa0\x16\x91\x92HB1A\x95{HB1S +\x0f\x00 +\x03p +\x01b\xa0\x0b\x90abp\\LPST`\xa1\x08p\\LPST`\xa1L\x07\xa0I\x07{\\RBEC +4 +\x80\x00\xa0B\x06{\\RBEC +F +\x10\x00\xa0D\x05\x95\\RBEC +\xc9 +Zp\\RBEC +8c\xa0\x14\x91\x92{c +\x80\x00\x95{c +\x0f\x00 +\x03p +\x01ap\\RBEC +9c\xa0\x14\x91\x92{c +\x80\x00\x95{c +\x0f\x00 +\x03p +\x01b\xa0\x0b\x90abp\\LPST`\xa1\x08p\\LPST`\xa4`[\x01MCPU\x07\x14D\x04_Q10\x00\xa0<\\/\x06_SB_PCI0LPC_EC__HKEYMHKK +\x01\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x01\x10\x14G\x04_Q11\x00\xa0<\\/\x06_SB_PCI0LPC_EC__HKEYMHKK +\x02\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x02\x10\xa1\x02\xa3\x14$_Q12\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x03\x10\x14A\x05_Q13\x00\xa0:\\/\x06_SB_PCI0LPC_EC__HKEYDHKC\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x04\x10\xa1\x0e\x86\\._SB_SLPB +\x80\x14M\x10_Q64\x00\xa0<\\/\x06_SB_PCI0LPC_EC__HKEYMHKK +\x10\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x05\x10\xa1H\x0c\xa0>\x92{\\/\x06_SB_PCI0LPC_EC__HKEYWGFL + \x00\\/\x06_SB_PCI0LPC_EC__HKEYBPWC +\x01\xa1F\x08\\/\x06_SB_PCI0LPC_EC__HKEYBPWC +\x00\xa0F\x06\x92\\WVIS\xa0>\x92{\\/\x06_SB_PCI0LPC_EC__HKEYWGFL +\x02\x00\\/\x06_SB_PCI0LPC_EC__HKEYWPWC +\x01\xa1\x1e\\/\x06_SB_PCI0LPC_EC__HKEYWPWC +\x00\x14D\x04_Q65\x00\xa0<\\/\x06_SB_PCI0LPC_EC__HKEYMHKK + \\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x06\x10\x14C +_Q16\x00\xa0\'\\VPDFp +\x00\\VPDF\xa0\x18VIGD\\/\x04_SB_PCI0VID_VSPD\xa1C\x07\xa0<\\/\x06_SB_PCI0LPC_EC__HKEYMHKK +@\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x07\x10\xa13\xa0\x18VIGD\\/\x04_SB_PCI0VID_VSWT\xa1\x18\\/\x05_SB_PCI0AGP_VID_VSWT\x14B\x05_Q17\x00\xa0<\\/\x06_SB_PCI0LPC_EC__HKEYMHKK +\x80\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x08\x10\xa1\r\xa0\x0b\x92\\WNTFVEXP\x14F\x04_Q18\x00\xa0=\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0b\x00\x01\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\t\x10\xa3\x14E\x04_Q66\x00\xa0=\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0b\x00\x02\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b +\x10\x14E\x04_Q1A\x00\xa0=\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0b\x00\x04\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x0b\x10\x14$_Q1B\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x0c\x10\x14E\x04_Q62\x00\xa0=\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0b\x00\x10\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\r\x10\x14E\x04_Q60\x00\xa0=\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0b\x00 \\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x0e\x10\x14E\x04_Q61\x00\xa0=\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0b\x00@\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x0f\x10\x14N\x04_Q1F\x00\xa0?\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0c\x00\x00\x02\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x12\x10\\UCMS +\x0e\x14G\x04_Q67\x00\xa0?\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0c\x00\x00\x04\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x13\x10\x14O\x0e_Q26\x00\\UCMS +\x12DSPD +\x00["\x0b\xf4\x01\x86AC__ +\x80\x86\\._TZ_THM0 +\x80\x86\\._TZ_THM1 +\x80\xa0\x0e\\WXPF[#MCPU\xff\xff\xa07\\SPEN\xa0\'\\OSPX\x86\\._PR_CPU0 +\x80\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x80\xa1\x08\\STEP +\x00\xa0 +\\WXPF[" +d\xa0\'\\OSC4\x86\\._PR_CPU0 +\x81\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x81\xa0\x0c\\WXPF[\'MCPU\xa0#\x90\x92\\WXPF\\WNTFp +\x00\\/\x04_SB_PCI0LPC_C4C3ATMCDSPD +\x01\x14K\x12_Q27\x00\\UCMS +\x12["\x0b\xf4\x01\x86AC__ +\x80\x86\\._TZ_THM0 +\x80\x86\\._TZ_THM1 +\x80\xa0\x0e\\WXPF[#MCPU\xff\xff\xa07\\SPEN\xa0\'\\OSPX\x86\\._PR_CPU0 +\x80\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x80\xa1\x08\\STEP +\x01\xa0 +\\WXPF[" +d\xa0\'\\OSC4\x86\\._PR_CPU0 +\x81\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x81\xa0\x0c\\WXPF[\'MCPU\xa01\x90\\CWAC\x92\\CWAS\xa0#\x90\x92\\WXPF\\WNTFp +\x01\\/\x04_SB_PCI0LPC_C4C3ATMC\xa09\x91\x93\\/\x03_SB_GDCKGDID\x0c$M\x00L\x93\\/\x03_SB_GDCKGDID\x0c$M\x00D\x86\\._SB_GDCK +\x01\x14H\x06_Q2A\x00\xa0\x1aVIGD\\/\x04_SB_PCI0VID_VLOC +\x01\xa1\x1a\\/\x05_SB_PCI0AGP_VID_VLOC +\x01\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x02P\x86\\._SB_LID_ +\x80\x148_Q2B\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x01P\\UCMS +\r\x86\\._SB_LID_ +\x80\x14\x06_Q3D\x00\x14>_Q48\x00\xa07\\SPEN\xa0\'\\OSPX\x86\\._PR_CPU0 +\x80\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x80\xa1\x08\\STEP +\x04\x14>_Q49\x00\xa07\\SPEN\xa0\'\\OSPX\x86\\._PR_CPU0 +\x80\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x80\xa1\x08\\STEP +\x05\x14\x10_Q7F\x00[2\x01\x00\x00\x01\x80\x0b+\x03\x14$_Q4E\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x11`\x14$_Q4F\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x12`\x14\x1d_Q75\x00\\/\x05_SB_PCI0LPC_EC__TATR\x14$_Q46\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x12`\x14 _Q22\x00\xa0\x0cHB0A\x86BAT0 +\x80\xa0\x0cHB1A\x86BAT1 +\x80\x14\r_Q4A\x00\x86BAT0 +\x81\x14\r_Q4B\x00\x86BAT0 +\x80\x14 +_Q4C\x00_Q38\x14%_Q4D\x00\xa0\x1e{^.BAT1B1ST^.BAT1XB1S\x00\x86BAT1 +\x80\x14\r_Q24\x00\x86BAT0 +\x80\x14%_Q25\x00\xa0\x1e{^.BAT1B1ST^.BAT1XB1S\x00\x86BAT1 +\x80[\x811ECOR\x01\x00@PSBRC\x10SBFC\x10SBAE\x10SBRS\x10SBAC\x10SBVO\x10SBAF\x10SBBS\x10[\x81\x1aECOR\x01\x00@P\x00\x0fSBCM\x01SBMD\x10SBCC\x10[\x81\'ECOR\x01\x00@PSBDC\x10SBDV\x10SBOM\x10SBSI\x10SBDT\x10SBSN\x10[\x81\x0eECOR\x01\x00@PSBCH [\x81\x0fECOR\x01\x00@PSBMN@\x08[\x81\x0fECOR\x01\x00@PSBDN@\x08[\x01BATM\x07\x14C\x16GBIF\x03[#BATM\xff\xff\xa0C\x12j}h +\x01HIIDpSBCMg\x7fg +\x01\x88i +\x00\x00phHIID\xa0 +gwSBFC + +a\xa1\x07pSBFCapa\x88i +\x02\x00}h +\x02HIID\xa0 +gwSBDC + +`\xa1\x07pSBDC`p`\x88i +\x01\x00xa +\x14b\x88i +\x05\x00\xa0 +gp +\xc8\x88i +\x06\x00\xa1!\xa0\x15SBDVx\x0c@\r\x03\x00SBDVb\x88i +\x06\x00\xa1\tp +\x00\x88i +\x06\x00pSBDV\x88i +\x04\x00pSBSN`\x08SERN\x11\t +\x06 \x00p +\x04b\xa2\x15`x` + +a`ra +0\x88SERNb\x00vbpSERN\x88i + +\x00}h +\x06HIIDpSBDN\x88i +\t\x00}h +\x04HIID\x08BTYP\x11\x08 +\x05\x00\x00\x00\x00\x00pSBCHBTYPpBTYP\x88i +\x0b\x00}h +\x05HIIDpSBMN\x88i +\x0c\x00\xa1\'p\x0c\xff\xff\xff\xff\x88i +\x01\x00p +\x00\x88i +\x05\x00p +\x00\x88i +\x06\x00p\x0c\xff\xff\xff\xff\x88i +\x02\x00[\'BATM\xa4i\x14J\rGBST\x04[#BATM\xff\xff\xa0 +{i + \x00p +\x02`\xa1\x12\xa0 +{i +@\x00p +\x01`\xa1\x05p +\x00`\xa0\x06{i +\x0f\x00\xa1\x06}` +\x04`\xa0\x19\x93{i +\x0f\x00 +\x0fp +\x04`p +\x00ap +\x00bp +\x00c\xa1@\x06phHIIDpSBVOc\xa0 +jwSBRC + +b\xa1\x07pSBRCbpSBACa\xa0\x1c\x92\x95a\x0b\x00\x80\xa0\x0e{` +\x01\x00t\x0c\x00\x00\x01\x00aa\xa1\x05p +\x00a\xa1\r\xa0\x0b\x92{` +\x02\x00p +\x00a\xa0\rjwcaaxa\x0b\xe8\x03gap`\x88k +\x00\x00pa\x88k +\x01\x00pb\x88k +\x02\x00pc\x88k +\x03\x00[\'BATM\xa4k[\x82G\x15BAT0\x08_HID\x0cA\xd0\x0c +\x08_UID +\x00\x08_PCL\x12\x07\x01\\_SB_\x08B0ST +\x00\x08BT0I\x12#\r +\x00\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff +\x01\x0b0* +\x00 +\x00 +\x01 +\x01\r\x00\r\x00\r\x00\r\x00\x08BT0P\x12\x02\x04\x14D\x04_STA\x00\xa0\x0f\\H8DRpHB0AB0ST\xa1\x1e\xa0\x13{\\RBEC +8 +\x80\x00p +\x01B0ST\xa1\x08p +\x00B0ST\xa0\x08B0ST\xa4 +\x1f\xa1\x04\xa4 +\x0f\x14G\x04_BIF\x00p +\x00gp + +f\xa2+\x90\x92gf\xa0\x1fHB0A\xa0\x13\x93{HB0S +\x0f\x00 +\x0f["\x0b\xe8\x03vf\xa1\x05p +\x01g\xa1\x05p +\x00f\xa4GBIF +\x00BT0Ig\x14#_BST\x00\x7f\x83\x88BT0I +\x00\x00 +\x01`\xa4GBST +\x00HB0S`BT0P\x14I\x04_BTP\x01{HAM4 +\xefHAM4\xa06hpha\xa0\x11\x92\x83\x88BT0I +\x00\x00xa + +`a{a +\xffHT0L{za +\x08\x00 +\xffHT0H}HAM4 +\x10HAM4[\x82A\x18BAT1\x08_HID\x0cA\xd0\x0c +\x08_UID +\x01\x08_PCL\x12\x07\x01\\_SB_\x08B1ST +\x00\x08XB1S +\x01\x08BT1I\x12#\r +\x00\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff +\x01\x0b0* +\x00 +\x00 +\x01 +\x01\r\x00\r\x00\r\x00\r\x00\x08BT1P\x12\x02\x04\x14G\x06_STA\x00\xa0\x0f\\H8DRpHB1AB1ST\xa1\x1e\xa0\x13{\\RBEC +9 +\x80\x00p +\x01B1ST\xa1\x08p +\x00B1ST\xa0\x1fB1ST\xa0\x08XB1S\xa4 +\x1f\xa1\x10\xa0\t\\WNTF\xa4 +\x00\xa1\x04\xa4 +\x1f\xa1\x10\xa0\t\\WNTF\xa4 +\x00\xa1\x04\xa4 +\x0f\x14G\x04_BIF\x00p +\x00gp + +f\xa2+\x90\x92gf\xa0\x1fHB1A\xa0\x13\x93{HB1S +\x0f\x00 +\x0f["\x0b\xe8\x03vf\xa1\x05p +\x01g\xa1\x05p +\x00f\xa4GBIF +\x10BT1Ig\x14#_BST\x00\x7f\x83\x88BT1I +\x00\x00 +\x01`\xa4GBST +\x10HB1S`BT1P\x14I\x04_BTP\x01{HAM4 +\xdfHAM4\xa06hpha\xa0\x11\x92\x83\x88BT1I +\x00\x00xa + +`a{a +\xffHT1L{za +\x08\x00 +\xffHT1H}HAM4 + HAM4[\x82>AC__\x08_HID\rACPI0003\x00\x08_UID +\x00\x08_PCL\x12\x07\x01\\_SB_\x14\x0b_PSR\x00\xa4HPAC\x14\t_STA\x00\xa4 +\x0f[\x82IQHKEY\x08_HID\x0c$M\x00h\x14\t_STA\x00\xa4 +\x0f\x14 +MHKV\x00\xa4\x0b\x00\x01\x08DHKC +\x00\x08DHKB +\x01[\x01XDHK\x07\x08DHKH +\x00\x08DHKW +\x00\x08DHKS +\x00\x08DHKD +\x00\x08DHKN\x0b\x0c\x08\x08DHKT +\x00\x08DHWW +\x00\x14\x0cMHKA\x00\xa4\x0c\xff\xff\xff\x00\x14\x0bMHKN\x00\xa4DHKN\x14\x18MHKK\x01\xa0\rDHKC\xa4{DHKNh\x00\xa1\x03\xa4\x00\x14@\x05MHKM\x02[#XDHK\xff\xff\xa0\x06\x94h + \xa3\xa13y\x01vh`\xa0){`\x0c\xff\xff\xff\x00\x00\xa0\x0ci}`DHKNDHKN\xa1\x12{DHKN\x7f`\x0c\xff\xff\xff\xff\x00DHKN\xa1\x02\xa3[\'XDHK\x14\x13MHKS\x00\x86\\._SB_SLPB +\x80\x14\x0cMHKC\x01phDHKC\x14I\x08MHKP\x00[#XDHK\xff\xff\xa0\x11DHWWpDHWWap\x00DHWW\xa1O\x05\xa0\x11DHKWpDHKWap\x00DHKW\xa1J\x04\xa0\x11DHKDpDHKDap\x00DHKD\xa15\xa0\x11DHKSpDHKSap\x00DHKS\xa1!\xa0\x11DHKTpDHKTap\x00DHKT\xa1\rpDHKHap\x00DHKH[\'XDHK\xa4a\x14>MHKE\x01phDHKB[#XDHK\xff\xffp\x00DHKHp\x00DHKWp\x00DHKSp\x00DHKDp\x00DHKTp\x00DHWW[\'XDHK\x14E\x0bMHKQ\x01\xa0M +DHKB\xa0@\tDHKC[#XDHK\xff\xff\xa0\x06\x95h\x0b\x00\x10\xa1M\x06\xa0\x0c\x95h\x0b\x00 phDHKH\xa1M\x05\xa0\x0c\x95h\x0b\x000phDHKW\xa1M\x04\xa0\x0c\x95h\x0b\x00@phDHKS\xa1=\xa0\x0c\x95h\x0b\x00PphDHKD\xa1.\xa0\x0c\x95h\x0b\x00`phDHKH\xa1\x1f\xa0\x0c\x95h\x0b\x00pphDHKT\xa1\x10\xa0\x0c\x95h\x0b\x00\x80phDHWW\xa1\x01[\'XDHK\x86HKEY +\x80\xa1\x15\xa0\x13\x93h\x0b\x04\x10\x86\\._SB_SLPB +\x80\x14I\x05MHKB\x01\xa0&\x93h +\x00\\/\x05_SB_PCI0LPC_EC__BEEP +\x11p +\x00\\LIDB\xa1*\xa0&\x93h +\x01\\/\x05_SB_PCI0LPC_EC__BEEP +\x10p +\x01\\LIDB\xa1\x01\x14<MHKD\x00\xa0\x1aVIGD\\/\x04_SB_PCI0VID_VLOC +\x00\xa1\x1a\\/\x05_SB_PCI0AGP_VID_VLOC +\x00\x14>MHQC\x01\xa01\\WNTF\xa0\x0b\x93h +\x00\xa4\\CWAC\xa1\x1e\xa0\x0b\x93h +\x01\xa4\\CWAP\xa1\x10\xa0\x0b\x93h +\x02\xa4\\CWAT\xa1\x02\xa3\xa1\x02\xa3\xa4 +\x00\x14A\x08MHGC\x00\xa0C\x07\\WNTF[#XDHK\xff\xff\xa0:\\OSC4\xa0 \\/\x06_SB_PCI0LPC_EC__AC___PSRp +\x03`\xa1\x12\xa0 +\\C4NAp +\x03`\xa1\x05p +\x04`\xa1 \xa0\x18\\/\x04_SB_PCI0LPC_C4C3p +\x04`\xa1\x05p +\x03`[\'XDHK\xa4`\xa1\x02\xa3\xa4 +\x00\x14A\x13MHSC\x01\xa0F\x12\x90\\CWAC\\WNTF[#XDHK\xff\xff\xa0J\x08\\OSC4\xa0>\x93h +\x03\xa08\x92\\CWAS\x86\\._PR_CPU0 +\x81\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x81p +\x01\\CWASp +\x01\\C4NA\xa1C\x04\xa0=\x93h +\x04\xa07\\CWAS\x86\\._PR_CPU0 +\x81\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x81p +\x00\\CWASp +\x00\\C4NA\xa1\x02\xa3\xa1O\x07\xa0+\x93h +\x03\xa0%\x92\\CWASp +\x00\\/\x04_SB_PCI0LPC_C4C3p +\x01\\CWAS\xa1@\x05\xa0J\x04\x93h +\x04\xa0C\x04\\CWAS\xa03\x92\\/\x06_SB_PCI0LPC_EC__AC___PSRp +\x01\\/\x04_SB_PCI0LPC_C4C3p +\x00\\CWAS\xa1\x02\xa3[\'XDHK\xa1\x02\xa3\x10G\x14\\/\x05_SB_PCI0LPC_EC__HKEY\x14M\x04TDSC\x01p +\x01`\xa2\x1b`p\\/\x05_SB_PCI0LPC_EC__HANT`ph\\/\x05_SB_PCI0LPC_EC__HANT\xa0\x0c\x93h +!\\ATCC +\x00\x14\x0cTDSS\x01\\ATCCh\x14N\x08TDSG\x01{h +\xff`p`\\/\x05_SB_PCI0LPC_EC__HDAAzh +\x08`{` +\xffapa\\/\x05_SB_PCI0LPC_EC__HDABzh +\x10`{` +\xffapa\\/\x05_SB_PCI0LPC_EC__HDACzh +\x18`{` +\xffapa\\/\x05_SB_PCI0LPC_EC__HANA\x14!TDGC\x00p\\/\x05_SB_PCI0LPC_EC__HDDD`\xa4`\x14!TDGS\x00p\\/\x05_SB_PCI0LPC_EC__HAAA`\xa4`[\x81\x18ECOR\x11\x00@*HSD0\x08HSD1\x08HSD2\x08[\x81\x0eECOR\x11\x00@+HSDL\x10[\x81\x19ECOR\x11\x00@+HSDBH\x04HSDF\x10HSDC\x10[\x01I2CM\x07\x14?CHKS\x00p\x0b\xe8\x03`\xa2\x13HMPR[" +\x01v`\xa0\x07\x92`\xa4\x0b\x80\x80\xa0\x19HMDN\xa0\x0fHMST\xa4}\x0b\x00\x80HMST\x00\xa1\x03\xa4\x00\xa1\x05\xa4\x0b\x81\x80\x14 I2RT\x00p +\x02HMADp +!HMCMp +\x0bHMPR\xa4CHKS\x14&I2NT\x01p +\x02HMADp +"HMCMphHSD0p +\x06HMPR\xa4CHKS\x14K\x0eTATR\x00\xa0C\x0e\\H8DR[#I2CM\xff\xffI2RTpHSD0`\xa0%\x93` + \\/\x04_SB_PCI0LPC_TCSZHSD1HSD2I2NT`\xa1M\t\xa0%\x93` +!\\/\x04_SB_PCI0LPC_TCSTHSD1HSD2I2NT`\xa1D\x07\xa0I\x04\x93` +"\x08TSDC\x11\x0c +\t \x00pHSDBTSDC\\/\x04_SB_PCI0LPC_TCBSHSD1TSDCHSDFHSDCI2NT`\xa1\'\xa0%\x93` +#\\/\x04_SB_PCI0LPC_TSCLHSD1HSDLI2NT`[\'I2CM\x14\rTATE\x00p +\x01HETE\x08_ADR +\x00\x08_S3D +\x02\x08RID_ +\x00\x08LRRT\x12G\x13\x0e\x12\x15\x04\x0c\xff\xff\x01\x00 +\x00\\._SB_LNKA +\x00\x12\x15\x04\x0c\xff\xff\x02\x00 +\x00\\._SB_LNKA +\x00\x12\x15\x04\x0c\xff\xff\x1b\x00 +\x01\\._SB_LNKB +\x00\x12\x15\x04\x0c\xff\xff\x1c\x00 +\x00\\._SB_LNKE +\x00\x12\x15\x04\x0c\xff\xff\x1c\x00 +\x01\\._SB_LNKF +\x00\x12\x15\x04\x0c\xff\xff\x1c\x00 +\x02\\._SB_LNKG +\x00\x12\x15\x04\x0c\xff\xff\x1c\x00 +\x03\\._SB_LNKH +\x00\x12\x15\x04\x0c\xff\xff\x1d\x00 +\x00\\._SB_LNKA +\x00\x12\x15\x04\x0c\xff\xff\x1d\x00 +\x01\\._SB_LNKB +\x00\x12\x15\x04\x0c\xff\xff\x1d\x00 +\x02\\._SB_LNKC +\x00\x12\x15\x04\x0c\xff\xff\x1d\x00 +\x03\\._SB_LNKD +\x00\x12\x15\x04\x0c\xff\xff\x1f\x00 +\x00\\._SB_LNKH +\x00\x12\x15\x04\x0c\xff\xff\x1f\x00 +\x02\\._SB_LNKA +\x00\x12\x15\x04\x0c\xff\xff\x1f\x00 +\x01\\._SB_LNKA +\x00\x08ARRT\x12G\x0c\x0e\x12\r\x04\x0c\xff\xff\x01\x00 +\x00 +\x00 +\x10\x12\r\x04\x0c\xff\xff\x02\x00 +\x00 +\x00 +\x10\x12\r\x04\x0c\xff\xff\x1b\x00 +\x01 +\x00 +\x11\x12\r\x04\x0c\xff\xff\x1c\x00 +\x00 +\x00 +\x14\x12\r\x04\x0c\xff\xff\x1c\x00 +\x01 +\x00 +\x15\x12\r\x04\x0c\xff\xff\x1c\x00 +\x02 +\x00 +\x16\x12\r\x04\x0c\xff\xff\x1c\x00 +\x03 +\x00 +\x17\x12\r\x04\x0c\xff\xff\x1d\x00 +\x00 +\x00 +\x10\x12\r\x04\x0c\xff\xff\x1d\x00 +\x01 +\x00 +\x11\x12\r\x04\x0c\xff\xff\x1d\x00 +\x02 +\x00 +\x12\x12\r\x04\x0c\xff\xff\x1d\x00 +\x03 +\x00 +\x13\x12\r\x04\x0c\xff\xff\x1f\x00 +\x00 +\x00 +\x17\x12\r\x04\x0c\xff\xff\x1f\x00 +\x02 +\x00 +\x10\x12\r\x04\x0c\xff\xff\x1f\x00 +\x01 +\x00 +\x10\x14\x19_PRT\x00\xa0\x0b\\GPIC\xa4ARRT\xa1\x06\xa4LRRT\x08_HID\x0cA\xd0 +\x08\x08_CID\x0cA\xd0 +\x03\x08_BBN +\x00[\x80MHCS\x02 +\x00\x0b\x00\x01[\x815MHCS\x03\x00@HPAM0\x08PAM1\x08PAM2\x08PAM3\x08PAM4\x08PAM5\x08PAM6\x08\x00(\x00\x03TOUD\x05\x08_CRS\x11E\x1c\x0b\xc0\x01\x88\r\x00\x02\x0c\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x01G\x01\xf8\x0c\xf8\x0c\x01\x08\x88\r\x00\x01\x0c\x03\x00\x00\x00\x00\xf7\x0c\x00\x00\xf8\x0c\x88\r\x00\x01\x0c\x03\x00\x00\x00\r\xff\xff\x00\x00\x00\xf3\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00 +\x00\xff\xff\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\x0c\x00\xff?\x0c\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00@\x0c\x00\xff\x7f\x0c\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x80\x0c\x00\xff\xbf\x0c\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\xc0\x0c\x00\xff\xff\x0c\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\r\x00\xff?\r\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00@\r\x00\xff\x7f\r\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x80\r\x00\xff\xbf\r\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\xc0\r\x00\xff\xff\r\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\x0e\x00\xff?\x0e\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00@\x0e\x00\xff\x7f\x0e\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x80\x0e\x00\xff\xbf\x0e\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\xc0\x0e\x00\xff\xff\x0e\x00\x00\x00\x00\x00\x00@\x00\x00\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\x10\x00\xff\xff\xbf\xfe\x00\x00\x00\x00\x00\x00\xb0\xfe\x87\x17\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\xd4\xfe\xff\x0f\xd4\xfe\x00\x00\x00\x00\x00\x10\x00\x00y\x00\x8a_CRS +hC0LN\x8a_CRS +\x82C4LN\x8a_CRS +\x9cC8LN\x8a_CRS +\xb6CCLN\x8a_CRS +\xd0D0LN\x8a_CRS +\xeaD4LN\x8a_CRS\x0b\x04\x01D8LN\x8a_CRS\x0b\x1e\x01DCLN\x8a_CRS\x0b8\x01E0LN\x8a_CRS\x0bR\x01E4LN\x8a_CRS\x0bl\x01E8LN\x8a_CRS\x0b\x86\x01ECLN\x8a_CRS\x0b\x94\x01XXMN\x8a_CRS\x0b\x98\x01XXMX\x8a_CRS\x0b\xa0\x01XXLN\x8a_CRS\x0b\xae\x01F4MN\x8a_CRS\x0b\xb2\x01F4MX\x8a_CRS\x0b\xba\x01F4LN\x14A\x12_INI\x08\xa0\x11\x92\\OSIF\\._SB__INIyTOUD +\x1b`p`\\MEMXp`XXMNrtXXMXXXMN\x00 +\x01XXLN\xa0\x15\x92\x93{\\TPMP +\x01\x00 +\x01p +\x00F4LN\xa0\x10{PAM1 +\x03\x00p +\x00C0LN\xa0\x10{PAM1 +0\x00p +\x00C4LN\xa0\x10{PAM2 +\x03\x00p +\x00C8LN\xa0\x10{PAM2 +0\x00p +\x00CCLN\xa0\x10{PAM3 +\x03\x00p +\x00D0LN\xa0\x10{PAM3 +0\x00p +\x00D4LN\xa0\x10{PAM4 +\x03\x00p +\x00D8LN\xa0\x10{PAM4 +0\x00p +\x00DCLN\xa0\x10{PAM5 +\x03\x00p +\x00E0LN\xa0\x10{PAM5 +0\x00p +\x00E4LN\xa0\x10{PAM6 +\x03\x00p +\x00E8LN\xa0\x10{PAM6 +0\x00p +\x00ECLN\x08SUPP +\x00\x08CTRL +\x00\x14E,_OSC\x04\x8ak +\x00CDW1\x8ak +\x04CDW2\x8ak +\x08CDW3\x8ah +\x00IID0\x8ah +\x04IID1\x8ah +\x08IID2\x8ah +\x0cIID3\x08UID0\x11\x13 +\x10[M\xdb3\xf7\x1f\x1c@\x96WtA\xc0=\xd7f\x8aUID0 +\x00EID0\x8aUID0 +\x04EID1\x8aUID0 +\x08EID2\x8aUID0 +\x0cEID3\xa0A#\x90\x90\x93IID0EID0\x93IID1EID1\x90\x93IID2EID2\x93IID3EID3pCDW2SUPPpCDW3CTRL{CTRL +\x1dCTRL\xa0H\x1b\x80{CDW1 +\x01\x00\x00\xa0F\x0f{CTRL +\x01\x00\xa03\x92\\VIGDp +\x00\\/\x04_SB_PCI0AGP_HPGPp +\x00\\/\x04_SB_PCI0AGP_GMGPp +\x00\\/\x04_SB_PCI0EXP0HPCEp +\x01\\/\x04_SB_PCI0EXP0HPCSp +\x01\\/\x04_SB_PCI0EXP0ABP_p +\x01\\/\x04_SB_PCI0EXP0PDS_p +\x00\\/\x04_SB_PCI0EXP2HPCEp +\x01\\/\x04_SB_PCI0EXP2HPCSp +\x01\\/\x04_SB_PCI0EXP2ABP_p +\x01\\/\x04_SB_PCI0EXP2PDS_p +\x01\\NHPS\xa0D\x0b{CTRL +\x04\x00\xa03\x92\\VIGDp +\x00\\/\x04_SB_PCI0AGP_PMGPp +\x00\\/\x04_SB_PCI0AGP_GMGPp +\x00\\/\x04_SB_PCI0EXP0PMCEp +\x01\\/\x04_SB_PCI0EXP0PMCSp +\x00\\/\x04_SB_PCI0EXP2PMCEp +\x01\\/\x04_SB_PCI0EXP2PMCSp +\x00\\/\x04_SB_PCI0LPC_EXPEp +\x01\\NPME\xa0\x11\x92\x93i +\x01}CDW1 + +CDW1\xa0\x16\x92\x93CDW3CTRL}CDW1 +\x10CDW1pCTRLCDW3\xa1\x0c}CDW1 +\x06CDW1\xa4k[\x01MDGS\x07\x08VDEE +\x01\x08VDDA\x11\x03 +\x02\x8dVDDA +\x00VUPC\x8dVDDA +\x01VQDL\x8dVDDA +\x02VQDC\x8dVDDA +\x03VQDT\x8dVDDA +\x04VQDD\x8dVDDA +\x05VSDL\x8dVDDA +\x06VSDC\x8dVDDA +\x07VSDT\x8dVDDA +\x08VSDD\x8dVDDA + +MSWT\x8dVDDA +\x0bVWST[\x82OJVID_\x08_ADR\x0c\x00\x00\x02\x00\x08RID_ +\x00[\x80VPCG\x02 +\x00\x0b\x00\x01[\x81\x0eVPCG\x03\x00@jVPWR \x08_S3D +\x03\x145_INI\x00\\VUPS +\x02p\\VCDLVQDLp\\VCDCVQDCp\\VCDTVQDTp\\VCDDVQDD\x14\x07_PS0\x00\xa3\x14\x07_PS1\x00\xa3\x14\x07_PS2\x00\xa3\x14\x07_PS3\x00\xa3\x140VSWT\x00\xa0\x0f\\WVISp\\VEVT +\x07`\xa1 +p\\VEVT +\x05`{ +\x0f`a\xa0\taASWTa +\x01\x14E\x08VLOC\x01\xa0M\x07\x93h\\/\x03_SB_LID__LID\\VSLDh\xa0C\x06\x93VPWR +\x00\xa0?hp\\VEVT +\x01`\xa0\x13\\WXPF\x86\\._SB_PCI0 +\x00\xa1\x1a\xa0\x18\\WNTF\x86\\/\x03_SB_PCI0VID_ +\x00["\x0b\xee\x02\xa1 +p\\VEVT +\x02`{ +\x0f`a\xa0\taASWTa +\x00\x14G\x07_DOS\x01\xa0:\x93h +\x02p +\x14`\xa20`v`[#MDGS\xff\xff\xa0\x19\x93 +\x00MSWTp +\x01MSWTp +\x00`phVDEE[\'MDGS[" +\xc8\xa14[#MDGS\xff\xff\xa0\x0f\x93VDEE +\x02p +\x00MSWT\xa0\x0c\x94h +\x02p +\x01VDEE\xa1\x07phVDEE[\'MDGS\x14\x13_DOD\x00\xa4\x12\x0b\x03\x0b\x00\x01\x0b\x00\x03\x0b\x00\x04\x14L\x0bASWT\x02\xa0\x14\x93 +\x01VDEE{ +\x01ia\\VSDSha\xa1O\tp +\x14`\xa2A\x08`v`[#MDGS\xff\xff\xa0I\x06\x93 +\x00MSWTp +\x00`\xa0\r{ +\x01i\x00p +\x01VUPC\xa1\x08p +\x00VUPC\xa0\r{ +\x01h\x00p +\x01VQDL\xa1\x08p +\x00VQDL\xa0\r{ +\x02h\x00p +\x01VQDC\xa1\x08p +\x00VQDC\xa0\r{ +\x08h\x00p +\x01VQDD\xa1\x08p +\x00VQDD[\'MDGS[" +\xc8\xa0\r{ +\x02i\x00\x86VID_ +\x81\xa1\x08\x86VID_ +\x80\x14I\x06VDSW\x01\xa0A\x06\x93VPWR +\x00\xa0D\x04hp\\VEVT +\x03`\xa0\x15\\WVIS{ +\x0f`a\xa0\taASWTa +\x00\xa1!\xa0\x07\\WXPF\xa3\xa1\x17\xa0\x15\\WNTF{ +\x0f`a\xa0\taASWTa +\x00\xa1\x12p\\VEVT +\x04`ASWT +\x01 +\x00\x14\x1eVSPD\x00p\\VEVT +\x06`{ +\x0f`a\xa0\taASWTa +\x01[\x82H\x06LCD0\x08_ADR\x0b\x00\x04\x14\x1c_DCS\x00\\VUPS +\x00\xa0\t\\VCDL\xa4 +\x1f\xa1\x04\xa4 +\x1d\x14\x0b_DGS\x00\xa4VQDL\x140_DSS\x01{h +\x01VSDL\xa0!{h\x0c\x00\x00\x00\x80\x00\xa0\x0f{h\x0c\x00\x00\x00@\x00DSWT +\x02\xa1\x07DSWT +\x01[\x82@\x08CRT0\x08_ADR\x0b\x00\x01\x144_DCS\x00\\VUPS +\x01\xa0\x15\\VCSS\xa0\t\\VCDC\xa4 +\x1f\xa1\x04\xa4 +\x1d\xa1\x10\xa0\t\\VCDC\xa4 +\x0f\xa1\x04\xa4 +\r\x14\x0b_DGS\x00\xa4VQDC\x140_DSS\x01{h +\x01VSDC\xa0!{h\x0c\x00\x00\x00\x80\x00\xa0\x0f{h\x0c\x00\x00\x00@\x00DSWT +\x02\xa1\x07DSWT +\x01[\x82H\x06DVI0\x08_ADR\x0b\x00\x03\x14\x1c_DCS\x00\\VUPS +\x00\xa0\t\\VCDD\xa4 +\x1f\xa1\x04\xa4 +\x1d\x14\x0b_DGS\x00\xa4VQDD\x140_DSS\x01{h +\x01VSDD\xa0!{h\x0c\x00\x00\x00\x80\x00\xa0\x0f{h\x0c\x00\x00\x00@\x00DSWT +\x02\xa1\x07DSWT +\x01\x14?DSWT\x01\xa0\tVSDLp +\x01`\xa1\x05p +\x00`\xa0 +VSDC} +\x02``\xa0 +VSDD} +\x08``\xa0\x0f`\xa0\x0cVUPC\\VSDS`h\xa1\x02\xa3[\x82BUAGP_\x08_ADR\x0c\x00\x00\x01\x00\x08_S3D +\x03\x08RID_ +\x00\x08LART\x12*\x02\x12\x13\x04\x0b\xff\xff +\x00\\._SB_LNKA +\x00\x12\x13\x04\x0b\xff\xff +\x01\\._SB_LNKB +\x00\x08AART\x12\x1a\x02\x12\x0b\x04\x0b\xff\xff +\x00 +\x00 +\x10\x12\x0b\x04\x0b\xff\xff +\x01 +\x00 +\x11\x14\x19_PRT\x00\xa0\x0b\\GPIC\xa4AART\xa1\x06\xa4LART[\x01MDGS\x07\x08VDEE +\x01\x08VDDA\x11\x03 +\x02\x8dVDDA +\x00VUPC\x8dVDDA +\x01VQDL\x8dVDDA +\x02VQDC\x8dVDDA +\x03VQDT\x8dVDDA +\x04VQDD\x8dVDDA +\x05VSDL\x8dVDDA +\x06VSDC\x8dVDDA +\x07VSDT\x8dVDDA +\x08VSDD\x8dVDDA + +MSWT\x8dVDDA +\x0bVWST[\x82BAVID_\x08_ADR +\x00[\x80VPCG\x02 +\x00\x0b\x00\x01[\x81\x0eVPCG\x03\x00@*VPWR \x08_S3D +\x03\x145_INI\x00\\VUPS +\x02p\\VCDLVQDLp\\VCDCVQDCp\\VCDTVQDTp\\VCDDVQDD\x14\x07_PS0\x00\xa3\x14\x07_PS1\x00\xa3\x14\x07_PS2\x00\xa3\x14\x07_PS3\x00\xa3\x140VSWT\x00\xa0\x0f\\WVISp\\VEVT +\x07`\xa1 +p\\VEVT +\x05`{ +\x0f`a\xa0\taASWTa +\x01\x14@\x05VLOC\x01\xa0H\x04\x93h\\/\x03_SB_LID__LID\\VSLDh\xa0.\x93VPWR +\x00\xa0\x0bhp\\VEVT +\x01`\xa1 +p\\VEVT +\x02`{ +\x0f`a\xa0\taASWTa +\x00\x14G\x07_DOS\x01\xa0:\x93h +\x02p +\x14`\xa20`v`[#MDGS\xff\xff\xa0\x19\x93 +\x00MSWTp +\x01MSWTp +\x00`phVDEE[\'MDGS[" +\xc8\xa14[#MDGS\xff\xff\xa0\x0f\x93VDEE +\x02p +\x00MSWT\xa0\x0c\x94h +\x02p +\x01VDEE\xa1\x07phVDEE[\'MDGS\x14\x13_DOD\x00\xa4\x12\x0b\x03\x0b\x00\x01\x0b\x10\x02\x0b\x10\x01\x14L\x0bASWT\x02\xa0\x14\x93 +\x01VDEE{ +\x01ia\\VSDSha\xa1O\tp +\x14`\xa2A\x08`v`[#MDGS\xff\xff\xa0I\x06\x93 +\x00MSWTp +\x00`\xa0\r{ +\x01i\x00p +\x01VUPC\xa1\x08p +\x00VUPC\xa0\r{ +\x01h\x00p +\x01VQDL\xa1\x08p +\x00VQDL\xa0\r{ +\x02h\x00p +\x01VQDC\xa1\x08p +\x00VQDC\xa0\r{ +\x08h\x00p +\x01VQDD\xa1\x08p +\x00VQDD[\'MDGS[" +\xc8\xa0\r{ +\x02i\x00\x86VID_ +\x81\xa1\x08\x86VID_ +\x80[\x82C\tLCD0\x08_ADR\x0b\x10\x01\x14\x1c_DCS\x00\\VUPS +\x00\xa0\t\\VCDL\xa4 +\x1f\xa1\x04\xa4 +\x1d\x14*_DDC\x01\\VDDC\xa0\x0b\x93h +\x01\xa4\\DDC1\xa1\x12\xa0\x0b\x93h +\x02\xa4\\DDC2\xa1\x04\xa4 +\x00\x14\x0b_DGS\x00\xa4VQDL\x140_DSS\x01{h +\x01VSDL\xa0!{h\x0c\x00\x00\x00\x80\x00\xa0\x0f{h\x0c\x00\x00\x00@\x00DSWT +\x02\xa1\x07DSWT +\x01[\x82@\x08CRT0\x08_ADR\x0b\x00\x01\x144_DCS\x00\\VUPS +\x01\xa0\x15\\VCSS\xa0\t\\VCDC\xa4 +\x1f\xa1\x04\xa4 +\x1d\xa1\x10\xa0\t\\VCDC\xa4 +\x0f\xa1\x04\xa4 +\r\x14\x0b_DGS\x00\xa4VQDC\x140_DSS\x01{h +\x01VSDC\xa0!{h\x0c\x00\x00\x00\x80\x00\xa0\x0f{h\x0c\x00\x00\x00@\x00DSWT +\x02\xa1\x07DSWT +\x01[\x82H\x06DVI0\x08_ADR\x0b\x10\x02\x14\x1c_DCS\x00\\VUPS +\x00\xa0\t\\VCDD\xa4 +\x1f\xa1\x04\xa4 +\x1d\x14\x0b_DGS\x00\xa4VQDD\x140_DSS\x01{h +\x01VSDD\xa0!{h\x0c\x00\x00\x00\x80\x00\xa0\x0f{h\x0c\x00\x00\x00@\x00DSWT +\x02\xa1\x07DSWT +\x01\x14?DSWT\x01\xa0\tVSDLp +\x01`\xa1\x05p +\x00`\xa0 +VSDC} +\x02``\xa0 +VSDD} +\x08``\xa0\x0f`\xa0\x0cVUPC\\VSDS`h\xa1\x02\xa3[\x80PEGC\x02 +\x00\x0b\x00\x01[\x81\x18PEGC\x03\x00@vGMGP\x01HPGP\x01PMGP\x01[\x82I\x12EXP0\x08_ADR\x0c\x00\x00\x1c\x00\x08RID_ +\x00[\x80P0CS\x02 +\x00\x0b\x00\x01[\x81M\x04P0CS\x03\x00@-ABP_\x01\x00\x02PDC_\x01\x00\x02PDS_\x01\x00\x01\x00(RID0\x10PSP0\x01PPP0\x01\x00F<\x00\x06HPCE\x01PMCE\x01\x00\x18\x00\x06HPCS\x01PMCS\x01\x08_PRW\x12\x06\x02 +\t +\x04\x08LPRT\x12C\x05\x04\x12\x13\x04\x0b\xff\xff +\x00\\._SB_LNKA +\x00\x12\x13\x04\x0b\xff\xff +\x01\\._SB_LNKB +\x00\x12\x13\x04\x0b\xff\xff +\x02\\._SB_LNKC +\x00\x12\x13\x04\x0b\xff\xff +\x03\\._SB_LNKD +\x00\x08APRT\x122\x04\x12\x0b\x04\x0b\xff\xff +\x00 +\x00 +\x10\x12\x0b\x04\x0b\xff\xff +\x01 +\x00 +\x11\x12\x0b\x04\x0b\xff\xff +\x02 +\x00 +\x12\x12\x0b\x04\x0b\xff\xff +\x03 +\x00 +\x13\x14\x19_PRT\x00\xa0\x0b\\GPIC\xa4APRT\xa1\x06\xa4LPRT[\x82D\x0fEXP1\x08_ADR\x0c\x01\x00\x1c\x00\x08RID_ +\x00[\x80P1CS\x02 +\x00\x0b\x00\x01[\x81\x18P1CS\x03\x00@0RID1\x10PSP1\x01PPP1\x01\x08_PRW\x12\x06\x02 +\t +\x04\x08LPRT\x12C\x05\x04\x12\x13\x04\x0b\xff\xff +\x00\\._SB_LNKB +\x00\x12\x13\x04\x0b\xff\xff +\x01\\._SB_LNKC +\x00\x12\x13\x04\x0b\xff\xff +\x02\\._SB_LNKD +\x00\x12\x13\x04\x0b\xff\xff +\x03\\._SB_LNKA +\x00\x08APRT\x122\x04\x12\x0b\x04\x0b\xff\xff +\x00 +\x00 +\x11\x12\x0b\x04\x0b\xff\xff +\x01 +\x00 +\x12\x12\x0b\x04\x0b\xff\xff +\x02 +\x00 +\x13\x12\x0b\x04\x0b\xff\xff +\x03 +\x00 +\x10\x14\x19_PRT\x00\xa0\x0b\\GPIC\xa4APRT\xa1\x06\xa4LPRT[\x82H\x14EXP2\x08_ADR\x0c\x02\x00\x1c\x00\x08RID_ +\x00\x08XCPF +\x00[\x80P2CS\x02 +\x00\x0b\x00\x01[\x81M\x04P2CS\x03\x00@-ABP_\x01\x00\x02PDC_\x01\x00\x02PDS_\x01\x00\x01\x00(RID2\x10PSP2\x01PPP2\x01\x00F<\x00\x06HPCE\x01PMCE\x01\x00\x18\x00\x06HPCS\x01PMCS\x01\x08_PRW\x12\x06\x02 +\t +\x04\x08LPRT\x12C\x05\x04\x12\x13\x04\x0b\xff\xff +\x00\\._SB_LNKC +\x00\x12\x13\x04\x0b\xff\xff +\x01\\._SB_LNKD +\x00\x12\x13\x04\x0b\xff\xff +\x02\\._SB_LNKA +\x00\x12\x13\x04\x0b\xff\xff +\x03\\._SB_LNKB +\x00\x08APRT\x122\x04\x12\x0b\x04\x0b\xff\xff +\x00 +\x00 +\x12\x12\x0b\x04\x0b\xff\xff +\x01 +\x00 +\x13\x12\x0b\x04\x0b\xff\xff +\x02 +\x00 +\x10\x12\x0b\x04\x0b\xff\xff +\x03 +\x00 +\x11\x14\x19_PRT\x00\xa0\x0b\\GPIC\xa4APRT\xa1\x06\xa4LPRT[\x82\x16EXUP\x08_ADR +\x00\x14\t_RMV\x00\xa4 +\x01[\x82B\x10EXP3\x08_ADR\x0c\x03\x00\x1c\x00\x08RID_ +\x00[\x80P3CS\x02 +\x00\x0b\x00\x01[\x81\x18P3CS\x03\x00@0RID3\x10PSP3\x01PPP3\x01\x08_PRW\x12\x06\x02 +\t +\x04\x08LPRT\x12C\x05\x04\x12\x13\x04\x0b\xff\xff +\x00\\._SB_LNKD +\x00\x12\x13\x04\x0b\xff\xff +\x01\\._SB_LNKA +\x00\x12\x13\x04\x0b\xff\xff +\x02\\._SB_LNKB +\x00\x12\x13\x04\x0b\xff\xff +\x03\\._SB_LNKC +\x00\x08APRT\x122\x04\x12\x0b\x04\x0b\xff\xff +\x00 +\x00 +\x13\x12\x0b\x04\x0b\xff\xff +\x01 +\x00 +\x10\x12\x0b\x04\x0b\xff\xff +\x02 +\x00 +\x11\x12\x0b\x04\x0b\xff\xff +\x03 +\x00 +\x12\x14\x19_PRT\x00\xa0\x0b\\GPIC\xa4APRT\xa1\x06\xa4LPRT[\x82\x0cEXPD\x08_ADR +\x00[\x82O\x16PCI1\x08_ADR\x0c\x00\x00\x1e\x00\x08_S3D +\x02\x08RID_ +\x00\x08LPRT\x12G\t\x07\x12\x13\x04\x0b\xff\xff +\x00\\._SB_LNKA +\x00\x12\x13\x04\x0b\xff\xff +\x01\\._SB_LNKB +\x00\x12\x13\x04\x0b\xff\xff +\x02\\._SB_LNKC +\x00\x12\x15\x04\x0c\xff\xff\x01\x00 +\x00\\._SB_LNKA +\x00\x12\x15\x04\x0c\xff\xff\x02\x00 +\x00\\._SB_LNKF +\x00\x12\x15\x04\x0c\xff\xff\x02\x00 +\x01\\._SB_LNKG +\x00\x12\x15\x04\x0c\xff\xff\x08\x00 +\x00\\._SB_LNKE +\x00\x08APRT\x12O\x05\x07\x12\x0b\x04\x0b\xff\xff +\x00 +\x00 +\x10\x12\x0b\x04\x0b\xff\xff +\x01 +\x00 +\x11\x12\x0b\x04\x0b\xff\xff +\x02 +\x00 +\x12\x12\r\x04\x0c\xff\xff\x01\x00 +\x00 +\x00 +\x10\x12\r\x04\x0c\xff\xff\x02\x00 +\x00 +\x00 +\x15\x12\r\x04\x0c\xff\xff\x02\x00 +\x01 +\x00 +\x16\x12\r\x04\x0c\xff\xff\x08\x00 +\x00 +\x00 +\x14\x14\x19_PRT\x00\xa0\x0b\\GPIC\xa4APRT\xa1\x06\xa4LPRT\x08_PRW\x12\x06\x02 +\x0b +\x04[\x82\'CDBS\x08_ADR +\x00\x14\x13_S3D\x00\xa0\t\\WMEF\xa4 +\x02\xa4 +\x03\x08_SUN +\x01[\x82L\xb8IDE0\x08_ADR\x0c\x01\x00\x1f\x00\x08_S3D +\x03\x08RID_ +\x00[\x80IDCS\x02 +\x00\x0b\x00\x01[\x81@\x12IDCS\x03\x00@ PFT0\x01PIE0\x01PPE0\x01PDT0\x01PFT1\x01PIE1\x01PPE1\x01PDT1\x01PRC0\x02\x00\x02PIS0\x02PSIE\x01PIDE\x01SFT0\x01SIE0\x01SPE0\x01SDT0\x01SFT1\x01SIE1\x01SPE1\x01SDT1\x01SRC0\x02\x00\x02SIS0\x02SSIE\x01SIDE\x01PRC1\x02PIS1\x02SRC1\x02SIS1\x02\x00\x18PSD0\x01PSD1\x01SSD0\x01SSD1\x01\x00\x0cPCT0\x02\x00\x02PCT1\x02\x00\x02SCT0\x02\x00\x02SCT1\x02\x00\x02\x00@\x04PCB0\x01PCB1\x01SCB0\x01SCB1\x01PCR0\x01PCR1\x01SCR0\x01SCR1\x01\x00\x02WRPP\x01\x00\x01FPB0\x01FPB1\x01FSB0\x01FSB1\x01PSIG\x02SSIG\x02[\x81\x1fIDCS\x03\x00@ PTI0\x04PTI1\x04\x00\x08STI0\x04STI1\x04\x14\'GPCT\x04\xa0\t\x92}hi\x00\xa4 +\x00\xa0\t\x90\x92hi\xa4\x0b\x84\x03\xa4wt +\trjk\x00\x00 +\x1e\x00\x14*GDCT\x04\xa0\x06\x92h\xa4 +\x00\xa0\x05i\xa4 +\x14\xa0\x0cj\xa4wt +\x04k\x00 +\x0f\x00\xa4wt +\x04k\x00 +\x1e\x00\x142MTIM\x02p +\x00`\xa0\x07h}` +\x01`\xa0\x0b\x92\x95h +\x02}` +\x02`\xa0\x08\x92i}` +\x04`\xa0\x08\x92h}` +\x08`\xa4`\x14\x1aMISP\x01\xa0\x06\x92h\xa4 +\x00\xa0\t\x92\x94h +\x02\xa4 +\x01\xa4 +\x02\x14\x1cMRCT\x01\xa0\t\x92\x94h +\x02\xa4 +\x00\xa0\x08\x93h +\x03\xa4 +\x01\xa4 +\x03[\x82O\x95PRIM\x08_ADR +\x00\x08BGTM\x11\x03 +\x14\x8aBGTM +\x00GTP0\x8aBGTM +\x04GTD0\x8aBGTM +\x08GTP1\x8aBGTM +\x0cGTD1\x8aBGTM +\x10GTMF\x08BPI0 +\x00\x08BDM0 +\x00\x08BPI1 +\x00\x08BDM1 +\x00\x08DRE0 +\x00\x08DRE1 +\x00\x08DIP0 +\x00\x08DIP1 +\x00\x14M\x11_GTM\x00pGPCTPFT0PDT0PIS0PRC0GTP0pGDCTPSD0FPB0PCB0PCT0GTD0\xa0\x0f\x92GTD0pGTP0GTD0\xa0H\x04PSIEpGPCTPFT1PDT1PIS1PRC1GTP1pGDCTPSD1FPB1PCB1PCT1GTD1\xa0\x0f\x92GTD1pGTP1GTD1\xa1\x0fp +\x00GTP1p +\x00GTD1p +\x00GTMF\xa0\x10PSD0}GTMF +\x01GTMF\xa0\x1f\x92GTP0}GTMF +\x01GTMFp +xGTP0p +\x14GTD0\xa0\x10PIE0}GTMF +\x02GTMF\xa0\x10PSD1}GTMF +\x04GTMF\xa0\x10PIE1}GTMF +\x08GTMF}GTMF +\x10GTMF\xa4BGTM\x14@G_STM\x03\x8ah +\x00STP0\x8ah +\x04STD0\x8ah +\x08STP1\x8ah +\x0cSTD1\x8ah +\x10STMFp +\x00DRE0p +\x00DIP0\xa0G$\x93\x87i\x0b\x00\x02\x8bi +\x00M000\x8bi +bM049\x8bi +fM051\x8bi +jM053\x8bi +|M062\x8bi +~M063\x8bi +\x80M064\x8bi +\x82M065\x8bi +\x88M068\x8bi +\x9cM078\x8bi +\xacM086\x8bi +\xb0M088\x8bi +\xeeM119\x8bi\x0b(\x01M148\xa0\x1f\x93{M148\x0b\x00\xc0\x00\x0b\x00@\xa0\x10{M148 +\x04\x00p +\x01DRE0\xa0\x1b{M086\x0b\x00\x80\x00\xa0\x10{M119 +\x01\x00p +\x01DRE0\xa0E\t\\W98Fp\\UUDMM053M088STD0\xa0\x10STD0}STMF +\x01STMF\xa1\x0c{STMF +\xfeSTMFp\\UMDMM053M063M062M065STP0\xa0 \x92STP0p\\UPIOM053M064M051M068STP0\xa0\x15{M049\x0b\x00\x08\x00}STMF +\x02STMF\xa1\x0c{STMF +\xfdSTMFp\\DPIOSTP0{STMF +\x02\x00`p\\DUDMSTD0{STMF +\x01\x00a\xa0&\x92\x95\\/\x05_SB_PCI0LPC_EC__BGID +\x00 +\x0cp +\x00`p +\xffapMTIM`{M000\x0b\x00\x80\x00PTI0pMISP`PIS0pMRCT`PRC0\xa0\x0c\x93a +\xffp +\x00PSD0\xa1C\x06p +\x01PSD0\xa0\x0c\x92\x94a +\x02paPCT0\xa1\x18\xa0\r{a +\x01\x00p +\x01PCT0\xa1\x08p +\x02PCT0\xa0\r\x92\x95a +\x03p +\x01PCB0\xa1\x08p +\x00PCB0\xa0\x0c\x93a +\x05p +\x01FPB0\xa1\x08p +\x00FPB0p +\x01PCR0p\\FDMA`aBDM0p\\FPIO`BPI0\xa0J\x1e\x93\x87j\x0b\x00\x02\x8bj +\x00S000\x8bj +bS049\x8bj +fS051\x8bj +jS053\x8bj +|S062\x8bj +~S063\x8bj +\x80S064\x8bj +\x82S065\x8bj +\x88S068\x8bj +\xb0S088\xa0E\t\\W98Fp\\UUDMS053S088STD1\xa0\x10STD1}STMF +\x04STMF\xa1\x0c{STMF +\xfbSTMFp\\UMDMS053S063S062S065STP1\xa0 \x92STP1p\\UPIOS053S064S051S068STP1\xa0\x15{S049\x0b\x00\x08\x00}STMF +\x08STMF\xa1\x0c{STMF +\xf7STMFp\\DPIOSTP1{STMF +\x08\x00`p\\DUDMSTD1{STMF +\x04\x00a\xa0=STP1pMTIM`{S000\x0b\x00\x80\x00PTI1\xa0${STMF +\x10\x00pMISP`PIS1pMRCT`PRC1p +\x01PSIE\xa1\x0fp +\x00PTI1p +\x00PSIE\xa0\x0c\x93a +\xffp +\x00PSD1\xa1C\x06p +\x01PSD1\xa0\x0c\x92\x94a +\x02paPCT1\xa1\x18\xa0\r{a +\x01\x00p +\x01PCT1\xa1\x08p +\x02PCT1\xa0\r\x92\x95a +\x03p +\x01PCB1\xa1\x08p +\x00PCB1\xa0\x0c\x93a +\x05p +\x01FPB1\xa1\x08p +\x00FPB1p +\x01PCR1p\\FDMA`aBDM1p\\FPIO`BPI1[\x82I4MSTR\x08_ADR +\x00\x08HDTF\x11\x1f +\x1c\x02\x00\x00\x00\x00\xa0\xef\x00\x00\x00\x00\x00\xa0\xf5\x03\x00\x00\x00\x00\xa0\xef\x03\x00\x00\x00\x00\xa0\xef\x8cHDTF +\x0fHDMA\x8cHDTF +\x16HPIO\x8cHDTF +\rHFLC\x08ERTF\x11& +#\x02\x00\x00\x00\x00\xa0\xef\x00\x00\x00\x00\x00\xa0\xf5\x03\x00\x00\x00\x00\xa0\xef\x03\x00\x00\x00\x00\xa0\xef_\x00\x00\x00\x00\xa0\xef\x8cERTF +\x0fEDMA\x8cERTF +\x16EPIO\x8cERTF +\rEFLC\x08HPTF\x11& +#\x02\x00\x00\x00\x00\xa0\xef\x00\x00\x00\x00\x00\xa0\xf5\x03\x00\x00\x00\x00\xa0\xef\x03\x00\x00\x00\x00\xa0\xef\x10\x03\x00\x00\x00\xa0\xef\x8cHPTF +\x0fPDMA\x8cHPTF +\x16PPIO\x8cHPTF +\rPFLC\x08HXTF\x11- +*\x02\x00\x00\x00\x00\xa0\xef\x00\x00\x00\x00\x00\xa0\xf5\x03\x00\x00\x00\x00\xa0\xef\x03\x00\x00\x00\x00\xa0\xef_\x00\x00\x00\x00\xa0\xef\x10\x03\x00\x00\x00\xa0\xef\x8cHXTF +\x0fXDMA\x8cHXTF +\x16XPIO\x8cHXTF +\rXFLC\x08IDTF\x11\x11 +\x0e\x03\x00\x00\x00\x00\xa0\xef\x03\x00\x00\x00\x00\xa0\xef\x8cIDTF +\x01IDMA\x8cIDTF +\x08IPIO\x08DDTF\x11\x1f +\x1c\x03\x00\x00\x00\x00\xa0\xef\x03\x00\x00\x00\x00\xa0\xef\x00\x00\x00\x00\x00\xa0\xe3\x00\x00\x00\x00\x00\xa0\xe3\x8cDDTF +\x01DDMA\x8cDDTF +\x08DPIO\x8cDDTF +\x0fDTAT\x8cDDTF +\x16DTFT\x14@\x14_GTF\x00p\\/\x05_SB_PCI0LPC_EC__BGID +\x00`\xa0"\\OSSSp +\xe1HFLCp +\xe1EFLCp +\xe1PFLCp +\xe1XFLC\xa0M\x08\x93` +\x06\xa0H\x04^^DRE0\xa0"^^DIP0p^^BDM0XDMAp^^BPI0XPIO\xa4HXTF\xa1\x1cp^^BDM0EDMAp^^BPI0EPIO\xa4ERTF\xa0"^^DIP0p^^BDM0PDMAp^^BPI0PPIO\xa4HPTFp^^BDM0HDMAp^^BPI0HPIO\xa4HDTFp\x00a\xa0\x08\x93` +\x03p\x01a\xa0\x08\x93` + +p\x01a\xa0\x08\x93` +\x0bp\x01a\xa01ap\\CDFLDTFTp\\CDAHDTATp^^BDM0DDMAp^^BPI0DPIO\xa4DDTF\xa1\x1cp^^BDM0IDMAp^^BPI0IPIO\xa4IDTF\x14\x1e_EJ0\x01\\/\x05_SB_PCI0LPC_EC__BEJ0h\x14)_STA\x00\xa0\x1d\\/\x05_SB_PCI0LPC_EC__BSTA +\x01\xa4 +\x0f\xa1\x04\xa4 +\x00[\x82K"SATA\x08_ADR\x0c\x02\x00\x1f\x00\x08_S3D +\x03\x08RID_ +\x00[\x80IDCS\x02 +\x00\x0b\x00\x01[\x81@\x12IDCS\x03\x00@ PFT0\x01PIE0\x01PPE0\x01PDT0\x01PFT1\x01PIE1\x01PPE1\x01PDT1\x01PRC0\x02\x00\x02PIS0\x02PSIE\x01PIDE\x01SFT0\x01SIE0\x01SPE0\x01SDT0\x01SFT1\x01SIE1\x01SPE1\x01SDT1\x01SRC0\x02\x00\x02SIS0\x02SSIE\x01SIDE\x01PRC1\x02PIS1\x02SRC1\x02SIS1\x02\x00\x18PSD0\x01PSD1\x01SSD0\x01SSD1\x01\x00\x0cPCT0\x02\x00\x02PCT1\x02\x00\x02SCT0\x02\x00\x02SCT1\x02\x00\x02\x00@\x04PCB0\x01PCB1\x01SCB0\x01SCB1\x01PCR0\x01PCR1\x01SCR0\x01SCR1\x01\x00\x02WRPP\x01\x00\x01FPB0\x01FPB1\x01FSB0\x01FSB1\x01PSIG\x02SSIG\x02[\x81\x1fIDCS\x03\x00@ PTI0\x04PTI1\x04\x00\x08STI0\x04STI1\x04\x14\'GPCT\x04\xa0\t\x92}hi\x00\xa4 +\x00\xa0\t\x90\x92hi\xa4\x0b\x84\x03\xa4wt +\trjk\x00\x00 +\x1e\x00\x14*GDCT\x04\xa0\x06\x92h\xa4 +\x00\xa0\x05i\xa4 +\x14\xa0\x0cj\xa4wt +\x04k\x00 +\x0f\x00\xa4wt +\x04k\x00 +\x1e\x00\x142MTIM\x02p +\x00`\xa0\x07h}` +\x01`\xa0\x0b\x92\x95h +\x02}` +\x02`\xa0\x08\x92i}` +\x04`\xa0\x08\x92h}` +\x08`\xa4`\x14\x1aMISP\x01\xa0\x06\x92h\xa4 +\x00\xa0\t\x92\x94h +\x02\xa4 +\x01\xa4 +\x02\x14\x1cMRCT\x01\xa0\t\x92\x94h +\x02\xa4 +\x00\xa0\x08\x93h +\x03\xa4 +\x01\xa4 +\x03[\x82\x1dSMBU\x08_ADR\x0c\x03\x00\x1f\x00\x08_S3D +\x03\x08RID_ +\x00[\x82J\x0eUSB0\x08_ADR\x0c\x00\x00\x1d\x00\x08_S3D +\x02\x08RID_ +\x00[\x80U0CS\x02 +\xc4 +\x04[\x81\rU0CS\x03U0EN\x02\x00\x1e\x08_PR0\x12\x19\x01\\/\x05_SB_PCI0LPC_EC__PUBS\x08_PR1\x12\x19\x01\\/\x05_SB_PCI0LPC_EC__PUBS\x08_PR2\x12\x19\x01\\/\x05_SB_PCI0LPC_EC__PUBS\x08_PRW\x12\x1d\x03 +\x03 +\x03\\/\x05_SB_PCI0LPC_EC__PUBS\x141_PSW\x01\xa0\thp +\x03U0EN\xa1\x08p +\x00U0EN\\/\x05_SB_PCI0LPC_EC__PNSTh[\x82J\x07USB1\x08_ADR\x0c\x01\x00\x1d\x00\x08_S3D +\x02\x08RID_ +\x00[\x80U1CS\x02 +\xc4 +\x04[\x81\rU1CS\x03U1EN\x02\x00\x1e\x08_PRW\x12\x06\x02 +\x04 +\x03\x14\x19_PSW\x01\xa0\thp +\x03U1EN\xa1\x08p +\x00U1EN[\x82\x1aURTH\x08_ADR +\x00[\x82\x0cUPEX\x08_ADR +\x02[\x82N\x0eUSB2\x08_ADR\x0c\x02\x00\x1d\x00\x08_S3D +\x02\x08RID_ +\x00[\x80U2CS\x02 +\xc4 +\x04[\x81\rU2CS\x03U2EN\x02\x00\x1e\x08_PR0\x12\x19\x01\\/\x05_SB_PCI0LPC_EC__PUBS\x08_PR1\x12\x19\x01\\/\x05_SB_PCI0LPC_EC__PUBS\x08_PR2\x12\x19\x01\\/\x05_SB_PCI0LPC_EC__PUBS\x08_PRW\x12\x1d\x03 +\x0c +\x03\\/\x05_SB_PCI0LPC_EC__PUBS\x14\x19_PSW\x01\xa0\thp +\x03U2EN\xa1\x08p +\x00U2EN[\x82\x1aURTH\x08_ADR +\x00[\x82\x0cUPDK\x08_ADR +\x02[\x82\x16USB3\x08_ADR\x0c\x03\x00\x1d\x00\x08RID_ +\x00[\x82N\x0fUSB7\x08_ADR\x0c\x07\x00\x1d\x00\x08_S3D +\x03\x08RID_ +\x00[\x80U7CS\x02 +` +\x04[\x81\x14U7CS\x03\x00\x10PWKI\x01PWUC\x06\x00\t\x08_PR0\x12\x19\x01\\/\x05_SB_PCI0LPC_EC__PUBS\x08_PR1\x12\x19\x01\\/\x05_SB_PCI0LPC_EC__PUBS\x08_PR2\x12\x19\x01\\/\x05_SB_PCI0LPC_EC__PUBS\x14\x14_INI\x00p +\x01PWKIp +\x0fPWUC\x08_PRW\x12\x1d\x03 +\r +\x03\\/\x05_SB_PCI0LPC_EC__PUBS[\x82(URTH\x08_ADR +\x00[\x82\x0cUPDK\x08_ADR +\x06[\x82\x0cUPEX\x08_ADR +\x04[\x821HDEF\x08_ADR\x0c\x00\x00\x1b\x00\x08_S3D +\x03\x08RID_ +\x00\x08_PRW\x12\x06\x02 +\x05 +\x04\x14\x07_PSW\x01\xa3\x10C\xbe\\/\x04_SB_PCI0LPC_EC__\x08BDEV +\xff\x08BSTS +\x00\x08BHKE +\x00\x08BXCN +\x00\x142_Q2C\x00\xa0+\x93BSTS +\x00pBGID +\x00BDEV\xa0\rBXCNNXREBDEV\xa1\tNBREBDEV\x14)_Q2D\x00pBGID +\x00BDEV\xa0\rBXCNNXRCBDEV\xa1\tNBINBDEV\x14D\x07_Q38\x00pBGID +\x00`\xa01\x93` +\x0fBDIS\xa0\x17BXCNpBDEV`p +\x0fBDEVNXEJ`\xa1\x0fNBEJBDEVp`BDEV\xa12\xa0\x16HPBU\xa0\x10BXCNp`BDEVNXIN`\xa1\x19p`BDEV\xa0 +BXCNNXRC`\xa1\x06NBIN`\x14B\rNBRE\x01\xa0&\x93h +\r\xa0 \\LFDC\x86\\/\x05_SB_PCI0LPC_FDC_FDD0 +\x03\xa0F\x04\x95h +\x0c\xa0#\x93\\BIDE +\x03\x86\\/\x05_SB_PCI0SATASCNDMSTR +\x03\xa1\x1b\x86\\/\x05_SB_PCI0IDE0PRIMMSTR +\x03\xa0I\x04\x93h +\x10\xa0+\x91HPACHB0A\xa0 \\WNTF\x86\\/\x05_SB_PCI0LPC_EC__BAT1 +\x03\xa1\x16LED_ +\x04 +\xc0BEEP +\x0fp +\x02BSTS\xa0\x12\x93h +\x11\x86\\._SB_LCIO +\x03\x14K\x0eNBEJ\x01\xa0N\x0c\x93BSTS +\x00\xa0&\x93h +\r\xa0 \\LFDC\x86\\/\x05_SB_PCI0LPC_FDC_FDD0 +\x01\xa0F\x04\x95h +\x0c\xa0#\x93\\BIDE +\x03\x86\\/\x05_SB_PCI0SATASCNDMSTR +\x01\xa1\x1b\x86\\/\x05_SB_PCI0IDE0PRIMMSTR +\x01\xa0C\x04\x93h +\x10\xa0 \\WNTF\x86\\/\x05_SB_PCI0LPC_EC__BAT1 +\x01\xa1\x1b\x86\\/\x05_SB_PCI0LPC_EC__BAT1 +\x81\xa0\x12\x93h +\x11\x86\\._SB_LCIO +\x01LED_ +\x04 +\x00BEEP +\x00p +\x00BSTS\x14B\x15NBIN\x01\xa08\x93h +\r\xa02\\LFDCBEN_ +\x00BSFDLED_ +\x04 +\x80\x86\\/\x05_SB_PCI0LPC_FDC_FDD0 +\x01\xa0B\x06\x95h +\x0c\xa0\x0b\x93h +\x06BEN_ +\x02\xa1\x07BEN_ +\x01LED_ +\x04 +\x80\xa0#\x93\\BIDE +\x03\x86\\/\x05_SB_PCI0SATASCNDMSTR +\x01\xa1\x1b\x86\\/\x05_SB_PCI0IDE0PRIMMSTR +\x01\xa0I\x06\x93h +\x10LED_ +\x04 +\x80\xa0>\\WNTFp +\x01\\/\x06_SB_PCI0LPC_EC__BAT1XB1S\x86\\/\x05_SB_PCI0LPC_EC__BAT1 +\x01\xa1\x1b\x86\\/\x05_SB_PCI0LPC_EC__BAT1 +\x81\xa07\x93h +\x11\xa01\x92\\/\x04_SB_PCI0LPC_CSONLED_ +\x04 +\x80\xa0\x13\\WNTF\x86\\._SB_LCIO +\x01BEEP +\x00p +\x00BSTS\x14J\x07BEJ0\x01\xa0A\x06hBDISLED_ +\x04 +\x00\\BHDP +\x01 +\x00p +\x01BSTS\xa0*BHKEp +\x00BHKE\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x030\xa0\x16\x93BDEV +\x11p +\x0fBDEVp +\x00BSTS\xa1\x10LED_ +\x04 +\x80p +\x00BSTS\x14\x1dBEJ3\x01\xa0\rhBDISp +\x01BSTS\xa1\x08p +\x00BSTS\x14I\x07BPTS\x01p +\x01HDBM\xa0\x17\x92\x93BSTS +\x00p +\x0fBDEVp +\x00BSTSp +\x00BHKEp +\x01`\xa0\x1d\x92\x93BDEV +\x0f\xa0\x13\x90\x92\\LFDC\x93BDEV +\rp +\x00`\xa1\x05p +\x00`\xa0 +\x92\x95h +\x04p +\x00`\xa0\x08`BUWK +\x01\xa1\x0fLED_ +\x04 +\x00BUWK +\x00\x14D\x14BWAK\x01BUWK +\x00pBGID +\x00`\xa0\x10\x90\x92\\LFDC\x93` +\rBDIS\\/\x05_SB_PCI0LPC_FDC__INI\xa0K\x05\\LFDC\xa0C\x05\x92\x93` +\r\xa0K\x04\x93\\/\x05_SB_PCI0LPC_FDC_FD0S\\/\x05_SB_PCI0LPC_EC__HPNF\x86\\/\x05_SB_PCI0LPC_FDC_FDD0 +\x01\xa0J +\x93BSTS +\x00\xa0.\x92\x93`BDEV\xa0\x10BXCNp`BDEVNXRC`\xa1\x14NBEJBDEVp`BDEVNBIN`\xa1A\x07\xa0N\x06\x91\\LFDC\x92\x93BDEV +\r\xa0M\x05\x92\x93` +\x0fLED_ +\x04 +\x80\xa0M\x04HPBU}yh +\x08\x00\x0b\x05 BHKE\\/\x06_SB_PCI0LPC_EC__HKEYMHKQBHKE\xa0\x06\x92\x94h +\x02\xa1\x13\xa0 +BXCNNXRE`\xa1\x06NBRE`\x14N\x0fBDIS\x00\xa0F\x0f\x92\\/\x04_SB_PCI0LPC_CSON\xa0F\x06\x93\\BIDE +\x03p +\x00\\/\x04_SB_PCI0SATASIE0p +\x00\\/\x04_SB_PCI0SATASTI0p +\x00\\/\x04_SB_PCI0LPC_URST[! +\x0fp +\x01\\/\x04_SB_PCI0SATASSIG\xa1N\x05p +\x00\\/\x04_SB_PCI0IDE0PIE0p +\x00\\/\x04_SB_PCI0IDE0PTI0p +\x00\\/\x04_SB_PCI0LPC_URST[! +\x0fp +\x01\\/\x04_SB_PCI0IDE0PSIGp +\x01\\/\x04_SB_PCI0LPC_CSONBSFD\x14A\x0eBEN_\x01\xa0I\r\\/\x04_SB_PCI0LPC_CSONp +\x00\\/\x04_SB_PCI0LPC_URSTp +\x00\\/\x04_SB_PCI0LPC_CSON[" +\x0f\xa0C\th\xa05\x93\\BIDE +\x03p +\x00\\/\x04_SB_PCI0SATASSIGp +\x01\\/\x04_SB_PCI0SATASIDE\xa1-p +\x00\\/\x04_SB_PCI0IDE0PSIGp +\x01\\/\x04_SB_PCI0IDE0PIDE[! +-p +\x01\\/\x04_SB_PCI0LPC_URST\xa0 +\x93h +\x02["\x0b\xd0\x07\xa1\x06["\x0b\x90\x01\x14N\x05BSTA\x01\xa0\x17\\/\x04_SB_PCI0LPC_CSON\xa4 +\x00BINI\xa0\r\x93h +\x00\xa4\x93BDEV +\r\xa0\r\x93h +\x01\xa4\x95BDEV +\x0c\xa0\r\x93h +\x02\xa4\x93BDEV +\x0e\xa0\r\x93h +\x03\xa4\x93BDEV +\x11\xa4 +\x00\x14D\x06BUWK\x01\xa0?\\H8DR\xa0\x1chp +\x01\\/\x05_SB_PCI0LPC_EC__HWBU\xa1\x1bp +\x00\\/\x05_SB_PCI0LPC_EC__HWBU\xa1\x1c\xa0\rh\\MBEC +2 +\xff +\x80\xa1\x0c\\MBEC +2 +\x7f +\x00\x14\x1aBINI\x00\xa0\x13\x93BDEV +\xffpBGID +\x00BDEV\x14F\x0bBGID\x01\xa0\x06hp +\xff`\xa1E +\xa0\x0c\\H8DRpHBID`\xa1\x10zRBEC +G +\x02`{` +\x0f`{` +\x03`\xa0\t\x93` +\x00p +\x03`\xa1\x11\xa0\t\x93` +\x02p +\x06`\xa1\x05p +\x0f`\xa0)\x93` +\x0f\xa0\x10\\H8DR\xa0\tHB1Ap +\x10`\xa1\x12\xa0\x10{\\RBEC +9 +\x80\x00p +\x10`\xa09\x93` +\x0f\xa03\x92\\/\x04_SB_PCI0LPC_CSON\xa0\x1d\x92{\\/\x04_SB_PCI0LPC_GL00 +@\x00p +\x11`\xa4`\x14(BSFD\x00\xa0\x13BSTA +\x00\\MISA\x0b\xf3\x03 +\xf3 +\x00\xa1\r\\MISA\x0b\xf3\x03 +\xf3 +\x04\x14A\x0bNXRE\x01\xa0\x14\x93h +\x0fLED_ +\x04 +\x00p +\x00BSTS\xa0!\x93h +\r\xa0\x1b\\LFDCLED_ +\x04 +\xc0\x86\\._SB_SWAP +\x83\xa0\x1a\x95h +\x0cLED_ +\x04 +\xc0\x86\\._SB_SWAP +\x83\xa0\x1a\x93h +\x0eLED_ +\x04 +\xc0\x86\\._SB_SWAP +\x83\xa0<\x93h +\x10\xa0\x1f\x91HPACHB0ALED_ +\x04 +\xc0\x86\\._SB_SWAP +\x83\xa1\x16LED_ +\x04 +\xc0BEEP +\x0fp +\x02BSTS\x14E\x0cNXRC\x01\xa0+\x93h +\r\xa0%\\LFDCLED_ +\x04 +\x80BEN_ +\x00BSFD\x86\\._SB_SWAP +\x80\xa0.\x95h +\x0cLED_ +\x04 +\x80\xa0\x0b\x93h +\x06BEN_ +\x02\xa1\x07BEN_ +\x01\x86\\._SB_SWAP +\x80\xa0 \x93h +\x0eLED_ +\x04 +\x80BEN_ +\x00\x86\\._SB_SWAP +\x80\xa04\x93h +\x10\x86\\/\x05_SB_PCI0LPC_EC__BAT1 +\x81LED_ +\x04 +\x80\x86\\._SB_SWAP +\x80BEEP +\x00p +\x00BSTS\x14I\x04NXEJ\x01\xa0\x1f\x93h +\x10\x86\\/\x05_SB_PCI0LPC_EC__BAT1 +\x81\x86\\._SB_SWAP +\x82LED_ +\x04 +\x00BEEP +\x00p +\x00BSTS\x14\x13NXIN\x01\x86\\._SB_SWAP +\x81\x10C\x10\\/\x04_SB_PCI0LPC_FDC_\x08XFDS +\x00\x08DCFD +\x00\x14C\x05_INI\x00p +\x00XFDS\xa07\\H8DR}\\/\x05_SB_PCI0LPC_EC__HAMA +\x0c\\/\x05_SB_PCI0LPC_EC__HAMA\xa1\x0c\\MBEC +\x1a +\xff +\x0c\x08FDEB\x11\x17 +\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x8cFDEB +\x00FD0S\x14C\x06_FDE\x00\xa0&\x91\\/\x05_SB_PCI0LPC_EC__BSTA +\x00DCFDp +\x01FD0S\xa1/\xa0$\x91\\/\x05_SB_PCI0LPC_EC__HPNFXFDSp +\x00FD0S\xa1\x08p +\x01FD0S\xa4FDEB\x10E\x06\\/\x05_SB_PCI0LPC_FDC_FDD0\x14K\x04_EJ0\x01\xa02\\/\x05_SB_PCI0LPC_EC__BSTA +\x00\\/\x05_SB_PCI0LPC_EC__BEJ0h\xa1\x10\xa0\x05DCFD\xa1\x08p +\x01XFDS\x10A\x12\\/\x04_SB_PCI0LPC_EC__\x14C\t_Q52\x00\xa02\\/\x05_SB_PCI0LPC_FDC_XFDSp +\x00\\/\x05_SB_PCI0LPC_FDC_XFDS\xa1H\x05\xa02\x91\\/\x05_SB_PCI0LPC_EC__BSTA +\x00\\/\x05_SB_PCI0LPC_FDC_DCFD\xa1"\xa0 \\LFDC\x86\\/\x05_SB_PCI0LPC_FDC_FDD0 +\x01\x14G\x07_Q53\x00p +\x00\\/\x05_SB_PCI0LPC_FDC_XFDS\xa02\x91\\/\x05_SB_PCI0LPC_EC__BSTA +\x00\\/\x05_SB_PCI0LPC_FDC_DCFD\xa1"\xa0 \\LFDC\x86\\/\x05_SB_PCI0LPC_FDC_FDD0 +\x01\x10F\x04\\/\x05_SB_PCI0LPC_EC__BAT1\x14,_EJ0\x01p +\x00B1STp +\x00XB1S\\/\x05_SB_PCI0LPC_EC__BEJ0h\x10@3\\_SB_[\x82G2SWAP\x08_HID\x0c$M\x00i\x14\x15_STA\x00\xa0\t\\WMEF\xa4 +\x0f\xa1\x04\xa4 +\x00\x14"XCNN\x01ph\\/\x05_SB_PCI0LPC_EC__BXCN\xa4 +\t\x14\tXSWP\x00\xa4 +\x01\x14\x1eXEJ0\x01\\/\x05_SB_PCI0LPC_EC__BEJ0h\x14\x1eXEJ3\x01\\/\x05_SB_PCI0LPC_EC__BEJ3h\x14@\x1fXDID\x00\x08XPCK\x12\x17\x06 +\x00 +\x00\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff +\x00p\\/\x05_SB_PCI0LPC_EC__BDEV`p`\x88XPCK +\x00\x00\xa0D\r\x95` +\x0c\xa0J\x06\x93\\BIDE +\x03p\\/\x04_SB_PCI0SATA_ADR\x88XPCK +\x02\x00p\\/\x05_SB_PCI0SATASCND_ADR\x88XPCK +\x03\x00p\\/\x06_SB_PCI0SATASCNDMSTR_ADR\x88XPCK +\x04\x00\xa1B\x06p\\/\x04_SB_PCI0IDE0_ADR\x88XPCK +\x02\x00p\\/\x05_SB_PCI0IDE0PRIM_ADR\x88XPCK +\x03\x00p\\/\x06_SB_PCI0IDE0PRIMMSTR_ADR\x88XPCK +\x04\x00\xa0O\x05\x93` +\r\xa0K\x04\\LFDCp\\/\x05_SB_PCI0LPC_FDC__HID\x88XPCK +\x02\x00p\\/\x06_SB_PCI0LPC_FDC_FDD0_ADR\x88XPCK +\x04\x00\xa1\x0cp +\x0f\x88XPCK +\x00\x00\xa0N\x04\x93` +\x10p\\/\x06_SB_PCI0LPC_EC__BAT1_HID\x88XPCK +\x02\x00p\\/\x06_SB_PCI0LPC_EC__BAT1_UID\x88XPCK +\x04\x00p\x7f\\/\x04_SB_PCI0LPC_CSON +\x01\x00\x88XPCK +\x05\x00\xa4XPCK\x14H\x05XSTM\x01\x08XDMY\x11\x03 +\x14\xa0\'\x93\\BIDE +\x03\\/\x05_SB_PCI0SATASCND_STMXDMYh +\x00\xa1\x1f\\/\x05_SB_PCI0IDE0PRIM_STMXDMYh +\x00\x14K\x04XGTF\x00\xa0%\x93\\BIDE +\x03\xa4\\/\x06_SB_PCI0SATASCNDMSTR_GTF\xa1\x1d\xa4\\/\x06_SB_PCI0IDE0PRIMMSTR_GTF\x10L\xe9\\_SB_[\x82C\xe9GDCK\x08_HID\x0c$M\x00y\x08_CID\x0cA\xd0\x0c\x15\x08DOID\x0c\xff\xff\xff\xff\x08DIDB\x0c\xff\xff\xff\xff\x08FLAG +\x00\x08WUCT +\x00\x08DHKE +\x00[\x02DEVT\x14?DSTA\x00UDCKUDKT\xa0\x1a\x91\x93GDID\x0c$M\x00L\x93GDID\x0c$M\x00Dp +\x0f`\xa1\x13\xa0\x0b\x92\\W98Fp +\x00`\xa1\x05p +\x0c`\xa4`\x14G\x07DPTS\x01\xa0O\x06\x90\x92\x95h +\x01\x92\x94h +\x04p +\x00DHKE\xa0\x18DFLG +\x02 +\x02p +\x00DOIDDFLG +\x01 +\x02\xa0/\x91\x93GDID\x0c$M\x00L\x93GDID\x0c$M\x00D\\/\x05_SB_PCI0LPC_EC__DDWK +\x01pGDIDDIDBDFLG +\x00\x0b\x00\x01\x08DDTM +\x00\x14J\x18DWAK\x01p\x0c\xff\xff\xff\xffDOID\xa0H\x17\x90\x92\x95h +\x01\x92\x94h +\x04p +\x00DDTM\xa0\x1d\x91\x93DIDB\x0c$M\x00L\x93DIDB\x0c$M\x00Dp +\x01DDTM\xa0B\rDDTMp +\x00DDTM\xa0\x12\x93GDID\x0c$M\x00Lp +\x01DDTM\xa0\x12\x93GDID\x0c$M\x00Dp +\x01DDTM\xa0;DDTM\xa0"\x93h +\x04\xa0\x1c{\\/\x04_SB_PCI0LPC_WAKR +\x08\x00DGPEyh +\x08DHKE\xa0 +\x92DFLG +\x02 +\x08\xa1B\x06p +\x01\\/\x04_SB_PCI0LPC_BUSD\\/\x05_SB_PCI0LPC_EC__DATT +\x00 +\x01\\/\x05_SB_PCI0LPC_EC__DATT +\x01 +\x00\x86\\._SB_GDCK +\x00\\DHDP +\x00\xa1;p +\x00DDTM\xa0\x12\x93GDID\x0c$M\x00Lp +\x01DDTM\xa0\x12\x93GDID\x0c$M\x00Dp +\x01DDTM\xa0\tDDTMWDCK\xa1\x02\xa3DFLG +\x01\x0b\x00\x01DFLG +\x01 +\x02DFLG +\x01 +\x10DFLG +\x01 + p +\x01\\/\x04_SB_PCI0LPC_DSCI\x14\x0eDGPE\x00DFLG +\x00 +\x08\x14N\x12DDCK\x01\xa0J\x08h\\/\x05_SB_PCI0LPC_EC__LED_ +\x08 +\x00\\/\x05_SB_PCI0LPC_EC__LED_ +\t +\x80\\/\x04_SB_PCI0LPC_LCON +\x01BCON +\x01\\/\x05_SB_PCI0LPC_EC__DATT +\x00 +\x00\\/\x05_SB_PCI0LPC_EC__DATT +\x01 +\x01\xa1H\t\\/\x05_SB_PCI0LPC_EC__LED_ +\x08 +\x80\\/\x05_SB_PCI0LPC_EC__LED_ +\t +\xc0DFLG +\x00 +\x02\\DHDP +\x00BCON +\x00\\/\x04_SB_PCI0LPC_LCON +\x00\\/\x05_SB_PCI0LPC_EC__DATT +\x00 +\x01\\/\x05_SB_PCI0LPC_EC__DATT +\x01 +\x00\xa4 +\x01\x14C\x05DEJ0\x01\xa0\rhp +\x00DOIDUDKIDFLG +\x01 +\x02\\/\x05_SB_PCI0LPC_EC__LED_ +\x08 +\x00\\/\x05_SB_PCI0LPC_EC__LED_ +\t +\x00\x14\x1fDEJ3\x01\xa0\x18hDFLG +\x00 +\x10\xa0\r\x93\\SPS_ +\x03PDE3\x14\x11DEJ4\x01\xa0 +hDFLG +\x00 + \x14\x07PDE3\x00\xa3\x08HIDE +\x00\x14@\x08WDCK\x00\xa0/\x91DFLG +\x02 +\x10DFLG +\x02 + DDCK +\x01\xa0\x16\\W98FDFLG +\x00\x0b\x00\x02p +\x05HIDE\xa1H\x04\xa06\x93\\/\x05_SB_PCI0LPC_EC__BGID +\x00 +\x11\\/\x05_SB_PCI0LPC_EC__NBRE +\x11\xa1\x0e\x86\\._SB_GDCK +\x00\x14O\x07UDCK\x00\xa0G\x07DFLG +\x02 +\x08\xa0L\x06\x92DFLG +\x02\x0b\x00\x01}DHKE\x0b\x04 DHKE\xa0(\x93\\UOPT +\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQDHKE\xa0\x13\\W98F\x86\\._SB_GDCK +\x01\xa1\x0e\x86\\._SB_GDCK +\x03DFLG +\x01 +\x08\x14\x1dUDKI\x00\xa0\r\\WNTFp +\x01WUCT\xa1\x08p +\x05WUCT\x14C\x05UDKT\x00\xa0K\x04{DHKE\x0b\x04 \x00\xa0?\x93GDID +\x00\xa06\x92vWUCTp +\x00DHKE\xa0\'\x93\\UOPT +\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x03@\x145GDID\x00\xa0)\x93DOID\x0c\xff\xff\xff\xffp\x0c\xff\xff\xff\xff\\/\x03_SB_GDCKG_IDpRDIDDOID\xa4DOID\x14O\tRDID\x00p +\x00`\xa0A\t\\/\x04_SB_PCI0LPC_EPWG\xa0@\x06\x93\\/\x03_SB_GDCKGGID +\x00\xa0B\x04\\H8DR\xa01\\/\x05_SB_PCI0LPC_EC__EEPRp\\/\x05_SB_PCI0LPC_EC__HDEP`\xa1\x08p\x0c$M\x00L`\xa1\x08p\\DCKI`\xa0\x1a\x93\\/\x03_SB_GDCKGGID +\x01p\x0c$M\x00D`\xa4`\x14G\x08RDSR\x00p +\x00`\xa0I\x07\x92\x93GDID +\x00\xa0F\x05\x93\\/\x03_SB_GDCKGGID +\x00\xa08\\H8DR\xa01\\/\x05_SB_PCI0LPC_EC__EEPRp\\/\x05_SB_PCI0LPC_EC__HDEN`\xa1\x08p\\DCKS`\xa0\x17\x93\\/\x03_SB_GDCKGGID +\x01p +\x00`\xa4`\x14E\x17BCON\x01p\\/\x05_SB_PCI0LPC_EC__DATT +\x00 +\x02`\\/\x05_SB_PCI0LPC_EC__DATT +\x00 +\x01}\\/\x04_SB_PCI0LPC_SERQ +@\\/\x04_SB_PCI0LPC_SERQ{\\/\x04_SB_PCI0LPC_SERQ +\x7f\\/\x04_SB_PCI0LPC_SERQp\\/\x04_SB_PCI0LPC_CLKRa\xa0.hp +\x00\\/\x04_SB_PCI0LPC_CLKRp +\x01\\/\x04_SB_PCI0LPC_BUSC\xa1\x17p +\x01\\/\x04_SB_PCI0LPC_BUSDpa\\/\x04_SB_PCI0LPC_CLKR}\\/\x04_SB_PCI0LPC_SERQ +\xc0\\/\x04_SB_PCI0LPC_SERQ{\\/\x04_SB_PCI0LPC_SERQ +\xbf\\/\x04_SB_PCI0LPC_SERQ\xa0 \x93` +\x00\\/\x05_SB_PCI0LPC_EC__DATT +\x00 +\x00\x149DFLG\x02\xa0\x0f\x93h +\x00}FLAGiFLAG\xa0\x11\x93h +\x01{FLAG\x80i\x00FLAG\xa0\x0b{FLAGi\x00\xa4 +\x01\xa1\x04\xa4 +\x00\x10L\x1b\\/\x04_SB_PCI0LPC_EC__\x14A\x11_Q37\x00\xa0I\x10\\/\x04_SB_PCI0LPC_EPWGp\x0b\xd0\x07`[" +dp\x0c\xff\xff\xff\xff\\/\x03_SB_GDCKG_ID\xa20\x90\x93\\/\x03_SB_GDCKGGID +\x07`[" +\x01p\x0c\xff\xff\xff\xff\\/\x03_SB_GDCKG_IDv`p\x0c\xff\xff\xff\xff\\/\x03_SB_GDCKDOID\xa0O\x08\x91\x93\\/\x03_SB_GDCKGDID\x0c$M\x00L\x93\\/\x03_SB_GDCKGDID\x0c$M\x00D\xa06\x93\\/\x05_SB_PCI0LPC_EC__BGID +\x00 +\x11\\/\x05_SB_PCI0LPC_EC__NBRE +\x11\xa1*\xa0(HPACp +\x00\\/\x04_SB_PCI0LPC_DRST\x86\\._SB_GDCK +\x00\x14D\tEEPR\x00p +\x00`\xa0F\x08\\H8DRp +\x00HDEOp + +HDEC\xa2\x0e\x92{HDEC +\xc0\x00[" +\x01\xa0A\x06\x92{HDEC +@\x00p +\x00apHDENbp +\x04c\xa2\x11cra{b +\xff\x00azb +\x08bvcpHDEPbp +\x04c\xa2\x11cra{b +\xff\x00azb +\x08bvcraHDEMaraHDESa\xa0\x0b\x92{a +\xff\x00p +\x01`\xa4`\x14D\x04_STA\x00pGGID`\xa0\x0b\x92\\W98Fp +\x00a\xa1\x05p +\x0ca\xa0\x1b\x91\x93` +\x00\x93` +\x01p\\/\x03_SB_GDCKDSTAa\xa0\x06\x93` +\x02\xa3\xa4a\x14H\x0c_INI\x00\\/\x05_SB_PCI0LPC_EC__DATT +\x02 +\x01\xa0>\x93GGID +\x07\\/\x05_SB_PCI0LPC_EC__DATT +\x01 +\x00\\/\x05_SB_PCI0LPC_EC__DATT +\x00 +\x01\xa17\\/\x05_SB_PCI0LPC_EC__DATT +\x01 +\x01\\/\x05_SB_PCI0LPC_EC__DATT +\x00 +\x00\\/\x05_SB_PCI0LPC_EC__DDWK +\x00p +\x01\\/\x04_SB_PCI0LPC_DSCI\x14K\x04_DCK\x01p +\x00`\xa0"\x91\x93GGID +\x00\x93GGID +\x01p\\/\x03_SB_GDCKDDCKh`\xa0\x1a\\VIGD\\/\x04_SB_PCI0VID_VDSWh\xa4`\x08UDOP +\x00\x148_EJ0\x01\xa0\x18\x93GGID +\x00\\/\x03_SB_GDCKDEJ0h\xa0\x18\x93GGID +\x01\\/\x03_SB_GDCKDEJ0h\x148XEJ3\x01\xa0\x18\x93GGID +\x00\\/\x03_SB_GDCKDEJ3h\xa0\x18\x93GGID +\x01\\/\x03_SB_GDCKDEJ3h\x148_EJ4\x01\xa0\x18\x93GGID +\x00\\/\x03_SB_GDCKDEJ4h\xa0\x18\x93GGID +\x01\\/\x03_SB_GDCKDEJ4h\x146PEJ3\x00\xa0\x17\x93GGID +\x00\\/\x03_SB_GDCKPDE3\xa0\x17\x93GGID +\x01\\/\x03_SB_GDCKPDE3\x14A\x04_BDN\x00p +\x00`\xa0\x19\x93GGID +\x00p\\/\x03_SB_GDCKRDID`\xa0\x19\x93GGID +\x01p\\/\x03_SB_GDCKRDID`\xa4`\x14A\x04_UID\x00p +\x00`\xa0\x19\x93GGID +\x00p\\/\x03_SB_GDCKRDSR`\xa0\x19\x93GGID +\x01p\\/\x03_SB_GDCKRDSR`\xa4`\x14.GPTS\x01\\/\x03_SB_GDCKDPTSh\\/\x05_SB_PCI0LPC_EC__RPTSh\x14H\x04GWAK\x01\\/\x03_SB_GDCKDWAKh\\/\x05_SB_PCI0LPC_EC__RWAKh\\/\x05_SB_PCI0LPC_EC__DDWK +\x00\x146GGPE\x00\xa0\x17\x93GGID +\x00\\/\x03_SB_GDCKDGPE\xa0\x17\x93GGID +\x01\\/\x03_SB_GDCKDGPE\x08G_ID\x0c\xff\xff\xff\xff\x14N\x06GGID\x00pG_ID`\xa0N\x05\x93`\x0c\xff\xff\xff\xffp\\/\x04_SB_PCI0LPC_DKI0`p\\/\x04_SB_PCI0LPC_DKI1ap\\/\x04_SB_PCI0LPC_DKI2b}`ya +\x01\x00`}`yb +\x02\x00`p`G_ID\xa4`\x10F*\\/\x04_SB_PCI0LPC_EC__\x14M\x07_Q50\x00p\\/\x03_SB_GDCKGGID`\xa0D\x06\x91\x93` +\x00\x93` +\x01\\/\x05_SB_PCI0LPC_EC__LED_ +\x08 +\x80\\/\x05_SB_PCI0LPC_EC__LED_ +\t +\xc0\xa0\x13\\W98F\x86\\._SB_GDCK +\x01\xa1\x0e\x86\\._SB_GDCK +\x03\x14F\x19DATT\x02p +\x00`\xa0B\x08\x93h +\x00\xa0(\x93i +\x01\xa0\x11\\H8DR}HAM6 +\x80HAM6\xa1\x0c\\MBEC +\x16 +\xff +\x80p +\x01`\xa0$\x93i +\x00\xa0\x11\\H8DR{HAM6 +\x7fHAM6\xa1\x0c\\MBEC +\x16 +\x7f +\x00\xa0-\x93i +\x02\xa0\x14\\H8DR\xa0\r{HAM6 +\x80\x00p +\x01`\xa1\x12\xa0\x10{\\RBEC +\x16 +\x80\x00p +\x01`\xa0B\x08\x93h +\x01\xa0(\x93i +\x01\xa0\x11\\H8DR}HAMA +\x01HAMA\xa1\x0c\\MBEC +\x1a +\xff +\x01p +\x01`\xa0$\x93i +\x00\xa0\x11\\H8DR{HAMA +\xfeHAMA\xa1\x0c\\MBEC +\x1a +\xfe +\x00\xa0-\x93i +\x02\xa0\x14\\H8DR\xa0\r{HAMA +\x01\x00p +\x01`\xa1\x12\xa0\x10{\\RBEC +\x1a +\x01\x00p +\x01`\xa0B\x08\x93h +\x02\xa0(\x93i +\x01\xa0\x11\\H8DR}HAMB +\x01HAMB\xa1\x0c\\MBEC +\x1b +\xff +\x01p +\x01`\xa0$\x93i +\x00\xa0\x11\\H8DR{HAMB +\xfeHAMB\xa1\x0c\\MBEC +\x1a +\xfe +\x00\xa0-\x93i +\x02\xa0\x14\\H8DR\xa0\r{HAMB +\x01\x00p +\x01`\xa1\x12\xa0\x10{\\RBEC +\x1b +\x01\x00p +\x01`\xa4`\x14K\x07DDWK\x01p +\x00`\xa0#\x93h +\x01\xa0\x0c\\H8DRp\x01HWDK\xa1\x0c\\MBEC +2 +\xff +\x08p +\x01`\xa0\x1f\x93h +\x00\xa0\x0c\\H8DRp\x00HWDK\xa1\x0c\\MBEC +2 +\xf7 +\x00\xa0)\x93h +\x02\xa0\x10\\H8DR\xa0\tHWDKp +\x01`\xa1\x12\xa0\x10{\\RBEC +2 +\x08\x00p +\x01`\xa4`\x10#\\/\x04_SB_PCI0LPC_EC__\x14\x07RPTS\x01\xa3\x14\x06RWAK\x01\x10B\x10\\/\x04_SB_PCI0LPC_EC__\x14N\x04_Q1C\x00\xa0?\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0c\x00\x00 \x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x16\x10\\UCMS +\x00\x14N\x04_Q1D\x00\xa0?\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0c\x00\x00\x10\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x15\x10\\UCMS +\x01\x14N\x04_Q1E\x00\xa0?\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0c\x00\x00@\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x17\x10\\UCMS +\x02\x10L\x13\\/\x04_SB_PCI0LPC_EC__\x08BRTF +\x01\x14N\x08_Q14\x00\xa0=\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0b\x00\x80\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x10\x10\xa0?\\NBCF\xa0\x1c\\VIGD\x86\\/\x04_SB_PCI0VID_LCD0 +\x86\xa1\x1b\x86\\/\x05_SB_PCI0AGP_VID_LCD0 +\x86\xa1\x08\\UCMS +\x04\x14@\t_Q15\x00\xa0?\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0c\x00\x00\x01\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x11\x10\xa0?\\NBCF\xa0\x1c\\VIGD\x86\\/\x04_SB_PCI0VID_LCD0 +\x87\xa1\x1b\x86\\/\x05_SB_PCI0AGP_VID_LCD0 +\x87\xa1\x08\\UCMS +\x05\x10D\x06\\/\x04_SB_PCI0LPC_EC__\x14N\x04_Q19\x00\xa0?\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0c\x00\x00\x80\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x18\x10\\UCMS +\x03\x10D\x06\\/\x04_SB_PCI0LPC_EC__\x14N\x04_Q63\x00\xa0?\\/\x06_SB_PCI0LPC_EC__HKEYMHKK\x0c\x00\x00\x08\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x14\x10\\UCMS +\x0b\x10C\t\\/\x04_SB_PCI0LPC_EC__\x14 +_Q70\x00FNST\x14 +_Q72\x00FNST\x14 +_Q73\x00FNST\x14L\x05FNST\x00\xa0\x12\\H8DRpHFNS`pHFNEa\xa1\x17{\\RBEC +\x0e +\x03`{\\RBEC +\x00 +\x08a\xa0)a\xa0\x0c\x93` +\x00\\UCMS +\x11\xa0\x0c\x93` +\x01\\UCMS +\x0f\xa0\x0c\x93` +\x02\\UCMS +\x10\x10I<\\/\x05_SB_PCI0LPC_EC__HKEY\x08WGFL +\x00\x14\x1eWLSW\x00\xa4\\/\x05_SB_PCI0LPC_EC__GSTS\x14B\x04GWAN\x00p +\x00`\xa0\x0e{WGFL +\x01\x00}` +\x01`\xa0\x0b{WGFL +\x08\x00\xa4`\xa0 +WPWS}` +\x02`\xa0\x0e{WGFL +\x04\x00}` +\x04`\xa4`\x14K\x04SWAN\x01\xa0\x0c{h +\x02\x00WPWC +\x01\xa1\x07WPWC +\x00\xa0\x18{h +\x04\x00}WGFL +\x04WGFL\\WGSV +\x02\xa1\x15{WGFL\x80 +\x04\x00WGFL\\WGSV +\x03\x14B\x04GBDC\x00p +\x00`\xa0\x0e{WGFL +\x10\x00}` +\x01`\xa0\x0b{WGFL +\x80\x00\xa4`\xa0 +BPWS}` +\x02`\xa0\x0e{WGFL +@\x00}` +\x04`\xa4`\x14K\x04SBDC\x01\xa0\x0c{h +\x02\x00BPWC +\x01\xa1\x07BPWC +\x00\xa0\x18{h +\x04\x00}WGFL +@WGFL\\BLTH +\x02\xa1\x15{WGFL\x80 +@\x00WGFL\\BLTH +\x03\x14;WPWS\x00\xa0\x1f\\H8DRp\\/\x05_SB_PCI0LPC_EC__DCWW`\xa1\x12pz{\\RBEC +: +@\x00 +\x06\x00`\xa4`\x14\x19WTGL\x00\xa0\x12{WGFL +\x01\x00WPWC\x92WPWS\x14B\tWPWC\x01\xa0N\x04\x90h\x90{WGFL +\x01\x00\x92{WGFL +\x08\x00\xa0\x1f\\H8DRp\x01\\/\x05_SB_PCI0LPC_EC__DCWW\xa1\x0c\\MBEC +: +\xff +@}WGFL +\x02WGFL\xa1;\xa0\x1f\\H8DRp\x00\\/\x05_SB_PCI0LPC_EC__DCWW\xa1\x0c\\MBEC +: +\xbf +\x00{WGFL\x80 +\x02\x00WGFL\x14;BPWS\x00\xa0\x1f\\H8DRp\\/\x05_SB_PCI0LPC_EC__DCBD`\xa1\x12pz{\\RBEC +: +\x10\x00 +\x04\x00`\xa4`\x14\x19BTGL\x00\xa0\x12{WGFL +\x10\x00BPWC\x92BPWS\x14B\tBPWC\x01\xa0N\x04\x90h\x90{WGFL +\x10\x00\x92{WGFL +\x80\x00\xa0\x1f\\H8DRp\x01\\/\x05_SB_PCI0LPC_EC__DCBD\xa1\x0c\\MBEC +: +\xff +\x10}WGFL + WGFL\xa1;\xa0\x1f\\H8DRp\x00\\/\x05_SB_PCI0LPC_EC__DCBD\xa1\x0c\\MBEC +: +\xef +\x00{WGFL\x80 + \x00WGFL\x14;WGIN\x00p +\x00WGFLp\\WGSV +\x01WGFL\xa0\x10WPWS}WGFL +\x02WGFL\xa0\x10BPWS}WGFL + WGFL\x146WGPS\x01\xa0\r\x92\x95h +\x04\\BLTH +\x05\xa0\x10\x92{WGFL +\x04\x00WPWC +\x00\xa0\x10\x92{WGFL +@\x00BPWC +\x00\x14&WGWK\x01\xa0\x0f{WGFL + \x00BPWC +\x01\xa0\x0f{WGFL +\x02\x00WPWC +\x01\x109\\/\x04_SB_PCI0LPC_EC__\x14$_Q41\x00\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b\x00p\x10N\x0b\\_SB_[\x82E\x0bLCIO\x08_HID\x0c0\xae\x00\x01\x08_CID\x0cA\xd0 +\x06\x14)_STA\x00\xa0\x1d\\/\x05_SB_PCI0LPC_EC__BSTA +\x03\xa4 +\x0f\xa1\x04\xa4 +\x00\x14@\x07_EJ0\x01\\/\x05_SB_PCI0LPC_EC__BEJ0h\xa0@\x05\x91\x93\\/\x03_SB_GDCKGDID\x0c$M\x00L\x93\\/\x03_SB_GDCKGDID\x0c$M\x00Dp +\x00\\/\x04_SB_PCI0LPC_DRST\x86\\._SB_GDCK +\x00\x10#\\/\x04_SB_PCI0EXP3EXPD\x08_EJD\r_SB.GDCK\x00\x10\'\\/\x05_SB_PCI0USB2URTHUPDK\x08_EJD\r_SB.GDCK\x00\x10\'\\/\x05_SB_PCI0USB7URTHUPDK\x08_EJD\r_SB.GDCK\x00\x101\\/\x05_SB_PCI0USB1URTHUPEX\x08_EJD\r_SB.PCI0.EXP2.EXUP\x00\x101\\/\x05_SB_PCI0USB7URTHUPEX\x08_EJD\r_SB.PCI0.EXP2.EXUP\x00\x102\\/\x04_SB_PCI0EXP2EXUP\x08_EJD\r_SB.PCI0.USB7.URTH.UPEX\x00\x08\\_S0_\x12 +\x04 +\x00 +\x00 +\x00 +\x00\x08\\_S3_\x12 +\x04 +\x05 +\x05 +\x00 +\x00\x08\\_S4_\x12 +\x04 +\x06 +\x06 +\x00 +\x00\x08\\_S5_\x12 +\x04 +\x07 +\x07 +\x00 +\x00\x14O\x1d\\_PTS\x01p +\x01`\xa0\x0c\x93h\\SPS_p +\x00`\xa0\x0f\x91\x93h +\x00\x92\x95h +\x06p +\x00`\xa0E\x1b`ph\\SPS_\\/\x06_SB_PCI0LPC_EC__HKEYMHKE +\x00\xa0\x1f\\/\x05_SB_PCI0LPC_EC__KBLT\\UCMS +\r\xa0G\x05\x93h +\x01p\\/\x05_SB_PCI0LPC_EC__HFNI\\FNIDp +\x00\\/\x05_SB_PCI0LPC_EC__HFNIp +\x00\\/\x05_SB_PCI0LPC_EC__HFSP\xa02\x93h +\x03\\VVPD +\x03\\TRAPp\\/\x06_SB_PCI0LPC_EC__AC___PSR\\ACST\xa0)\x93h +\x04\\/\x03_SB_SLPB_PSW +\x00\xa0\r\\SPEN\\STEP +\x07\\TRAP\xa0 +\x93h +\x05\\TRAP\\/\x05_SB_PCI0LPC_EC__BPTSh\xa0 \x92\x95h +\x04p +\x00\\/\x05_SB_PCI0LPC_EC__HWLB\xa1\x1bp +\x01\\/\x05_SB_PCI0LPC_EC__HWLB\xa0<\x92\x93h +\x05p +\x01\\/\x05_SB_PCI0LPC_EC__HCMU\\/\x03_SB_GDCKGPTSh\xa0\x0b\\W98F\\CBRI\\/\x06_SB_PCI0LPC_EC__HKEYWGPSh\x08WAKI\x12\x06\x02 +\x00 +\x00\x14AJ\\_WAK\x01\xa0\x10\x91\x93h +\x00\x92\x95h +\x05\xa4WAKIp +\x00\\SPS_p +\x00\\/\x05_SB_PCI0LPC_EC__HCMUp +\x80\\/\x05_SB_PCI0LPC_EC__HFSP\\/\x05_SB_PCI0LPC_EC__EVNT +\x01\\/\x06_SB_PCI0LPC_EC__HKEYMHKE +\x01\\/\x05_SB_PCI0LPC_EC__FNST\\UCMS +\rp +\x00\\LIDB\xa0"\x93h +\x01p\\/\x05_SB_PCI0LPC_EC__HFNI\\FNID\xa0A\x13\x93h +\x03THRM +\x00\xa0E\x04\\WXPFp +\x00\\/\x04_SB_PCI0LPC_C4C3\xa0\'\\OSC4\x86\\._PR_CPU0 +\x81\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x81\xa1D\x07\xa0A\x07\\WNTF\xa02\\/\x06_SB_PCI0LPC_EC__AC___PSRp +\x00\\/\x04_SB_PCI0LPC_C4C3\xa16\xa0\x1c\\CWASp +\x00\\/\x04_SB_PCI0LPC_C4C3\xa1\x17p +\x01\\/\x04_SB_PCI0LPC_C4C3\xa0:\x92\x93\\ACST\\/\x06_SB_PCI0LPC_EC__AC___PSR\\/\x05_SB_PCI0LPC_EC__ATMC\xa0.\x90{\\CFGD\x0c\x00\x00\x00\x01\x00\x90\\WXPF\x92\x94\\WSPV +\x01\xa0\x10{\\CFGD +\xf0\x00PPMS +\x00\xa0@\x13\x93h +\x04\xa0\x0bDTSETHRM +\x02\xa0\x13\\W98F\x86\\._SB_SLPB +\x02\xa0\x1f\\WMEF\\/\x05_SB_PCI0LPC_EC__BEEP +\x05\xa0!\x92\\W98Fp +\x00\\/\x05_SB_PCI0LPC_EC__HSPA\xa0.\\WXPF\xa0\'\\OSC4\x86\\._PR_CPU0 +\x81\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x81\xa1D\x04\xa0A\x04\\WNTF\xa09\x91\x92\\/\x06_SB_PCI0LPC_EC__AC___PSR\\CWASp +\x00\\/\x04_SB_PCI0LPC_C4C3\xa0\r\\SPEN\\STEP +\x08\\/\x05_SB_PCI0LPC_EC__ATMC\xa0.\x90{\\CFGD\x0c\x00\x00\x00\x01\x00\x90\\WXPF\x92\x94\\WSPV +\x01\xa0\x10{\\CFGD +\xf0\x00PPMS +\x00\xa0O\x07\x7f\\/\x04_SB_PCI0EXP2PDS_\\/\x04_SB_PCI0EXP2XCPF\x00\xa0*\\/\x04_SB_PCI0EXP2PDS_p +\x01\\/\x04_SB_PCI0EXP2XCPF\xa1\x17p +\x00\\/\x04_SB_PCI0EXP2XCPF\x86\\/\x03_SB_PCI0EXP2 +\x00\\/\x03_SB_GDCKGWAKh\\/\x05_SB_PCI0LPC_EC__BWAKh\\/\x06_SB_PCI0LPC_EC__HKEYWGWKh\x86\\._TZ_THM0 +\x80\x86\\._TZ_THM1 +\x80\\VSLD\\/\x03_SB_LID__LID\xa01\x90\\W98F\x92\\WMEF\x86\\/\x03_SB_PCI0USB0 +\x00\x86\\/\x03_SB_PCI0USB1 +\x00\xa09\x95h +\x04\xa03{\\RRBF +\x02\x00yh +\x08`p}\x0b\x13 `\x00`\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ`p\x00\\RRBF\xa4WAKI\x10@\x1e\\_SI_\x14H\x1d_SST\x01\xa0;\x93h +\x00\\/\x05_SB_PCI0LPC_EC__LED_ +\x00 +\x00\\/\x05_SB_PCI0LPC_EC__LED_ +\x07 +\x00\xa0B\x06\x93h +\x01\xa0%\x91\\SPS_\\WNTF\\/\x05_SB_PCI0LPC_EC__BEEP +\x05\\/\x05_SB_PCI0LPC_EC__LED_ +\x00 +\x80\\/\x05_SB_PCI0LPC_EC__LED_ +\x07 +\x00\xa0;\x93h +\x02\\/\x05_SB_PCI0LPC_EC__LED_ +\x00 +\x80\\/\x05_SB_PCI0LPC_EC__LED_ +\x07 +\xc0\xa0K\x0b\x93h +\x03\xa0"\x94\\SPS_ +\x03\\/\x05_SB_PCI0LPC_EC__BEEP +\x07\xa1O\x04\xa01\x93\\SPS_ +\x03\\/\x05_SB_PCI0LPC_EC__BEEP +\x03\\/\x03_SB_GDCKPEJ3\xa1\x1a\\/\x05_SB_PCI0LPC_EC__BEEP +\x04\xa0\t\x93\\SPS_ +\x03\xa1\x1c\\/\x05_SB_PCI0LPC_EC__LED_ +\x00 +\x80\\/\x05_SB_PCI0LPC_EC__LED_ +\x07 +\xc0\xa09\x93h +\x04\\/\x05_SB_PCI0LPC_EC__BEEP +\x03\\/\x05_SB_PCI0LPC_EC__LED_ +\x07 +\xc0\x10C<\\_GPE[\x01MGPE\x07\x14N +_L18\x00p\\/\x05_SB_PCI0LPC_EC__HWAK`p`\\RRBF[" + +\xa0\x06{` +\x02\x00\xa0){` +\x04\x00\xa0\x13\\W98F\x86\\._SB_SLPB +\x02\xa1\x0e\x86\\._SB_LID_ +\x02\xa0"{` +\x08\x00\\/\x03_SB_GDCKGGPE\x86\\._SB_SLPB +\x02\xa0\x13{` +\x10\x00\x86\\._SB_SLPB +\x02\xa0\x06{` +@\x00\xa0\x13{` +\x80\x00\x86\\._SB_SLPB +\x02\x14K\x0f_L09\x00\xa0<\\/\x04_SB_PCI0EXP0PSP0p +\x01\\/\x04_SB_PCI0EXP0PSP0\x86\\/\x03_SB_PCI0EXP0 +\x02\xa0<\\/\x04_SB_PCI0EXP1PSP1p +\x01\\/\x04_SB_PCI0EXP1PSP1\x86\\/\x03_SB_PCI0EXP1 +\x02\xa0<\\/\x04_SB_PCI0EXP2PSP2p +\x01\\/\x04_SB_PCI0EXP2PSP2\x86\\/\x03_SB_PCI0EXP2 +\x02\xa0<\\/\x04_SB_PCI0EXP3PSP3p +\x01\\/\x04_SB_PCI0EXP3PSP3\x86\\/\x03_SB_PCI0EXP3 +\x02\x14D\x17_L01\x00\xa0@\x0f\\/\x04_SB_PCI0EXP2HPCSp +\x01\\/\x04_SB_PCI0EXP2HPCS\xa0*\\/\x04_SB_PCI0EXP2ABP_p +\x01\\/\x04_SB_PCI0EXP2ABP_\xa0I\t\\/\x04_SB_PCI0EXP2PDC_p +\x01\\/\x04_SB_PCI0EXP2PDC_p +\x00\\/\x04_SB_PCI0EXP2XCPF\x86\\/\x03_SB_PCI0EXP2 +\x00\xa0E\x04\\/\x04_SB_PCI0EXP2PDS_p +\x01\\/\x04_SB_PCI0EXP2XCPF[" +d\x86\\/\x04_SB_PCI0EXP2EXUP +\x01[#MGPE\xff\xff\xa0M\x06\\/\x04_SB_PCI0EXP0HPCSp +\x01\\/\x04_SB_PCI0EXP0HPCS\xa0A\x04\\/\x04_SB_PCI0EXP0PDC_[" +\xc8p +\x01\\/\x04_SB_PCI0EXP0PDC_\x86\\/\x03_SB_PCI0EXP0 +\x00[\'MGPE\x14D\t_L02\x00p +\x00\\/\x04_SB_PCI0LPC_SWGE\xa0A\x04\\/\x06_SB_PCI0LPC_EC__HKEYDHKC\xa0#DT02\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b"`\x86\\._TZ_THM1 +\x80\xa0\'\\OSPX\x86\\._PR_CPU0 +\x80\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x80\x10@(\\/\x05_SB_PCI0LPC_EC__HKEY\x14H\x0cMHQT\x01\xa0M\x0b\x90\\WNTF\\TATC\xa0\x0e\x93h +\x00p\\TATC`\xa4`\xa1@ +\xa0K\x04\x93h +\x01p\\TDFA`r`y\\TDTA +\x04\x00`r`y\\TDFD +\x08\x00`r`y\\TDTD +\x0c\x00`r`y\\TNFT +\x10\x00`r`y\\TNTT +\x14\x00`\xa4`\xa1A\x05\xa02\x93h +\x02p\\TCFA`r`y\\TCTA +\x04\x00`r`y\\TCFD +\x08\x00`r`y\\TCTD +\x0c\x00`\xa4`\xa1\x1b\xa0\x05\x93h +\x03\xa1\x13\xa0\x0e\x93h +\x04p\\TATW`\xa4`\xa1\x02\xa3\xa4 +\x00\x14O\x07MHAT\x01\xa0D\x07\x90\\WNTF\\TATCp{h +\xff\x00`\xa0 +\x92ATMV`\xa4 +\x00p{zh +\x08\x00 +\xff\x00`\xa0 +\x92ATMV`\xa4 +\x00p{h +\x0f\x00\\TCFAp{zh +\x04\x00 +\x0f\x00\\TCTAp{zh +\x08\x00 +\x0f\x00\\TCFDp{zh +\x0c\x00 +\x0f\x00\\TCTDATMC\xa4 +\x01\xa4 +\x00\x14@\rMHGT\x01\xa0E\x0c\x90\\WNTF\\TATCpy\\TSFT +\x10\x00`r`y\\TSTT +\x14\x00`p{h +\xff\x00a\xa0\x0b\x92ATMVa\xa4\x0b\xff\xffp{h +\x0f\x00a\xa0\r\x93a +\x00r`\\TIF0`\xa1&\xa0\r\x93a +\x01r`\\TIF1`\xa1\x16\xa0\r\x93a +\x02r`\\TIF2`\xa1\x06r` +\xff`p{zh +\x04\x00 +\x0f\x00a\xa0\x11\x93a +\x00r`y\\TIT0 +\x08\x00`\xa12\xa0\x11\x93a +\x01r`y\\TIT1 +\x08\x00`\xa1\x1e\xa0\x11\x93a +\x02r`y\\TIT2 +\x08\x00`\xa1 +r`y +\xff +\x08\x00`\xa4`\xa4 +\x00\x14L\x04ATMV\x01p{h +\x0f\x00ap\\TNFT`\xa0\x08\x92\x95a`\xa4 +\x00p{zh +\x04\x00 +\x0f\x00bp\\TNTT`\xa0\x08\x92\x95b`\xa4 +\x00\xa0\x0f\\TATL\xa0\x08\x7fab\x00\xa4 +\x00\xa4 +\x01\x10F\x10\\/\x04_SB_PCI0LPC_EC__\x14@\x0fATMC\x00\xa0H\x0e\x90\\WNTF\\TATC\xa0E\x06HPACp\\TCFA`p\\TCTAap}ya +\x04\x00`\x00ATMX\xa0\x1f\x93\\TCTA +\x00p\\TCR0\\TCRTp\\TPS0\\TPSV\xa1#\xa0\x1f\x93\\TCTA +\x01p\\TCR1\\TCRTp\\TPS1\\TPSV\xa1\x01\xa1A\x06p\\TCFD`p\\TCTDap}ya +\x04\x00`\x00ATMX\xa0\x1f\x93\\TCTD +\x00p\\TCR0\\TCRTp\\TPS0\\TPSV\xa1#\xa0\x1f\x93\\TCTD +\x01p\\TCR1\\TCRTp\\TPS1\\TPSV\xa1\x01\x86\\._TZ_THM0 +\x81THRM +\x01\x10C\x1f\\_TZ_[\x85L\x0cTHM0\x14\r_CRT\x00\xa4C2K_ +\x7f\x14G\x0b_TMP\x00\xa0B\x05\\H8DRp\\/\x05_SB_PCI0LPC_EC__TMP0`p\\/\x05_SB_PCI0LPC_EC__HT12ap\\/\x05_SB_PCI0LPC_EC__HT13b\xa1$p\\RBEC +x`p{\\RBEC + +@\x00ap{\\RBEC + +\x80\x00b\xa0\tb\xa4C2K_ +\x80\xa0\'\x92\\/\x06_SB_PCI0LPC_EC__HKEYDHKC\xa0\ta\xa4C2K_ +\x80\xa4C2K_`[\x85@\x0fTHM1\x143_PSL\x00\xa0\x1e\\MPEN\xa4\x12\x16\x02\\._PR_CPU0\\._PR_CPU1\xa4\x12\x0c\x01\\._PR_CPU0\x14\x0c_CRT\x00\xa4\\TCRT\x14\x0c_PSV\x00\xa4\\TPSV\x14\x0c_TC1\x00\xa4\\TTC1\x14\x0c_TC2\x00\xa4\\TTC2\x14\x0c_TSP\x00\xa4\\TTSP\x14D\x07_TMP\x00\xa0J\x05\\DTSETHRM +\x02pDTS1`\xa0\x11\x92\x95DTS0DTS1pDTS0`\xa0.\x92\\/\x06_SB_PCI0LPC_EC__HKEYDHKC\xa0\x10DT02r\\TCRT +\x01`\xa4`\xa4C2K_`\xa1\x11\xa4\\/\x03_TZ_THM0_TMP\x14+C2K_\x01rwh + +\x00\x0b\xac +`\xa0\x0c\x92\x94`\x0b\xac +p\x0b\xb8\x0b`\xa0\x0b\x94`\x0b\xac\x0fp\x0b\xb8\x0b`\xa4`\x10O\x13\\/\x04_SB_PCI0LPC_EC__\x14I\x12_Q40\x00\x86\\._TZ_THM0 +\x80\xa08\\H8DRp\\/\x05_SB_PCI0LPC_EC__HT11`p\\/\x05_SB_PCI0LPC_EC__HT12a\xa1\x1bp{\\RBEC + + \x00`p{\\RBEC + +@\x00a\xa0=\\/\x06_SB_PCI0LPC_EC__HKEYDHKC\xa0 a\\/\x06_SB_PCI0LPC_EC__HKEYMHKQ\x0b"`\xa0\x06VIGD\xa3\xa1\x06\\VTHR\xa0C\x07\\SPEN\xa0\'\\OSPX\x86\\._PR_CPU0 +\x80\xa0\x13\\MPEN\x86\\._PR_CPU1 +\x80\xa1C\x04\xa07\x91\\/\x05_SB_PCI0LPC_EC__HT00\\/\x05_SB_PCI0LPC_EC__HT10\\STEP +\t\xa1\x08\\STEP + +\x08GPIC +\x00\x14\r_PIC\x01ph\\GPIC[\x80MNVS\x00\x0c\x00@\xef\x7f\x0b\x00\x10[\x81B+MNVS\x03\x00\x80\x80\x07GAPA GAPL DCKI DCKS VCDL\x01VCDC\x01VCDT\x01VCDD\x01VIGD\x01VCSS\x01VCDB\x01VCIN\x01VPDF\x01\x00\x07VLID\x04VVPO\x04\x00\x08CDFL\x08CDAH\x08PMOD\x02PDIR\x01PDMA\x01\x00\x04LFDC\x01\x00\x07C2NA\x01C3NA\x01C4NA\x01\x00\x05SPEN\x01\x00\x01\x00\x01\x00\x01MPEN\x01\x00\x03OSPX\x01OSC4\x01OSSS\x01NHPS\x01NPME\x01\x00\x03UOPT\x08BTID LWST\x08LPST\x08TCRT\x10TPSV\x10TTC1\x10TTC2\x10TTSP\x10SRAH\x08SRHE\x08SRE0\x08SRE1\x08SRE2\x08SRE3\x08SRE4\x08SRE5\x08SRU0\x08SRU1\x08SRU2\x08SRU3\x08SRU7\x08SRPB\x08SRLP\x08SRSA\x08SRSM\x08CWAC\x01CWAS\x01\x00\x06CWAP\x10CWAT\x10DBGC\x01\x00\x07FS1L\x10FS1M\x10FS1H\x10FS2L\x10FS2M\x10FS2H\x10FS3L\x10FS3M\x10FS3H\x10TATC\x01\x00\x06TATL\x01TATW\x08TNFT\x04TNTT\x04TDFA\x04TDTA\x04TDFD\x04TDTD\x04TCFA\x04TCTA\x04TCFD\x04TCTD\x04TSFT\x04TSTT\x04TIT0\x08TCR0\x10TPS0\x10TIT1\x08TCR1\x10TPS1\x10TIT2\x08TCR2\x10TPS2\x10TIF0\x08TIF1\x08TIF2\x08\x00 TCZ1\x08TCZ2\x08TCZ3\x08BTHI\x01\x00\x07HDIR\x01HDEH\x01\x00\x06TPMP\x01TPMS\x01\x00\x06BIDE\x08\x00\x01DTSE\x01\x00\x06DTS0\x08DTS1\x08DT00\x01DT01\x01DT02\x01DT03\x01\x00\x04PH01\x08PH02\x08PH03\x08PH04\x08PH05\x08PH06\x08PH07\x08PH08\x08PH09\x08PH0A\x08PH0B\x08LIDB\x01\x00\x07TCG0\x01\x00\x07[\x81\x13MNVS\x01\x00\x80\x00\x07DDC1@@\x00@@[\x81\x10MNVS\x01\x00\x80\x00\x07DDC2@\x80[\x80SMI0\x01 +\xb2 +\x01[\x81\x0bSMI0\x01APMC\x08[\x81(MNVS\x00\x00\x80\xe0\x07CMD_\x08ERR_ PAR0 PAR1 PAR2 PAR3 [\x01MSMI\x07\x14F\x05SMI_\x05[#MSMI\xff\xffphCMD_piPAR0pjPAR1pkPAR2plPAR3p +\xf5APMC\xa2\x13\x93ERR_ +\x01[" +dp +\xf5APMCpPAR0`[\'MSMI\xa4`\x14\x14RPCI\x01\xa4SMI_ +\x00 +\x00h +\x00 +\x00\x14\x12WPCI\x02SMI_ +\x00 +\x01hi +\x00\x14\x11MPCI\x03SMI_ +\x00 +\x02hij\x14\x14RBEC\x01\xa4SMI_ +\x00 +\x03h +\x00 +\x00\x14\x12WBEC\x02SMI_ +\x00 +\x04hi +\x00\x14\x11MBEC\x03SMI_ +\x00 +\x05hij\x14\x14RISA\x01\xa4SMI_ +\x00 +\x06h +\x00 +\x00\x14\x12WISA\x02SMI_ +\x00 +\x07hi +\x00\x14\x11MISA\x03SMI_ +\x00 +\x08hij\x14\x14VEXP\x00SMI_ +\x01 +\x00 +\x00 +\x00 +\x00\x14\x13VUPS\x01SMI_ +\x01 +\x01h +\x00 +\x00\x14\x12VSDS\x02SMI_ +\x01 +\x02hi +\x00\x14\x14VDDC\x00SMI_ +\x01 +\x03 +\x00 +\x00 +\x00\x14\x13VVPD\x01SMI_ +\x01 +\x04h +\x00 +\x00\x14\x13VNRS\x01SMI_ +\x01 +\x05h +\x00 +\x00\x14\x15GLPW\x00\xa4SMI_ +\x01 +\x06 +\x00 +\x00 +\x00\x14\x13VSLD\x01SMI_ +\x01 +\x07h +\x00 +\x00\x14\x14VEVT\x01\xa4SMI_ +\x01 +\x08h +\x00 +\x00\x14\x15VTHR\x00\xa4SMI_ +\x01 +\t +\x00 +\x00 +\x00\x14\x13VBRC\x01SMI_ +\x01 + +h +\x00 +\x00\x14\x15VBRG\x00\xa4SMI_ +\x01 +\x0e +\x00 +\x00 +\x00\x14\x14UCMS\x01\xa4SMI_ +\x02h +\x00 +\x00 +\x00\x14\x13BHDP\x02\xa4SMI_ +\x03 +\x00hi +\x00\x14\x14DHDP\x01\xa4SMI_ +\x03 +\x01h +\x00 +\x00\x14\x13STEP\x01SMI_ +\x04h +\x00 +\x00 +\x00\x14\x14TRAP\x00SMI_ +\x05 +\x00 +\x00 +\x00 +\x00\x14\x14CBRI\x00SMI_ +\x05 +\x01 +\x00 +\x00 +\x00\x14"DSPD\x01\xa0\x18\x92\x94h +\x01rh +\x02hSMI_ +\x05h +\x00 +\x00 +\x00\xa1\x02\xa3\x14\x14BLTH\x01\xa4SMI_ +\x06h +\x00 +\x00 +\x00\x14\x14FISP\x00SMI_ +\x07 +\x00 +\x00 +\x00 +\x00\x14\x13ATCC\x01SMI_ +\x08h +\x00 +\x00 +\x00\x14\x14WGSV\x01\xa4SMI_ +\th +\x00 +\x00 +\x00\x14\x14THRM\x01\xa4SMI_ + +h +\x00 +\x00 +\x00\x14\x14PPMS\x01\xa4SMI_ +\x0bh +\x00 +\x00 +\x00\x14\x13TPHY\x01SMI_ +\x0ch +\x00 +\x00 +\x00\x14\x13TMOR\x01SMI_ +\rh +\x00 +\x00 +\x00\x143DPIO\x02\xa0\x06\x92h\xa4 +\x00\xa0\x08\x94h +\xf0\xa4 +\x00\xa0\x10\x94h +\xb4\xa0\x05i\xa4 +\x02\xa1\x04\xa4 +\x01\xa0\x08\x94h +x\xa4 +\x03\xa4 +\x04\x14=DUDM\x02\xa0\x06\x92i\xa4 +\xff\xa0\x08\x94h +Z\xa4 +\x00\xa0\x08\x94h +<\xa4 +\x01\xa0\x08\x94h +-\xa4 +\x02\xa0\x08\x94h +\x1e\xa4 +\x03\xa0\x08\x94h +\x14\xa4 +\x04\xa4 +\x05\x14(DMDM\x02\xa0\x05i\xa4 +\x00\xa0\x06\x92h\xa4 +\x00\xa0\x08\x94h +\x96\xa4 +\x01\xa0\x08\x94h +x\xa4 +\x02\xa4 +\x03\x14A\x05UUDM\x02\xa0 +\x92{h +\x04\x00\xa4 +\x00\xa0\t{i + \x00\xa4 +\x14\xa0\t{i +\x10\x00\xa4 +\x1e\xa0\t{i +\x08\x00\xa4 +-\xa0\t{i +\x04\x00\xa4 +<\xa0\t{i +\x02\x00\xa4 +Z\xa0\t{i +\x01\x00\xa4 +x\xa4 +\x00\x14H\x04UMDM\x04\xa0 +\x92{h +\x02\x00\xa4 +\x00\xa0\x08{i +\x04\x00\xa4k\xa0\x14{i +\x02\x00\xa0\t\x92\x94k +x\xa4 +\xb4\xa1\x03\xa4k\xa0\x14{j +\x04\x00\xa0\t\x92\x94k +\xb4\xa4 +\xf0\xa1\x03\xa4k\xa4 +\x00\x14K\x04UPIO\x04\xa0\x16\x92{h +\x02\x00\xa0\x08\x93j +\x02\xa4 +\xf0\xa1\x05\xa4\x0b\x84\x03\xa0\x08{i +\x02\x00\xa4k\xa0\x14{i +\x01\x00\xa0\t\x92\x94k +x\xa4 +\xb4\xa1\x03\xa4k\xa0\x08\x93j +\x02\xa4 +\xf0\xa1\x05\xa4\x0b\x84\x03\x14-FDMA\x02\xa0\x0c\x92\x93i +\xff\xa4}i +@\x00\xa0\x10\x92\x95h +\x03\xa4}th +\x02\x00 + \x00\xa0\x05h\xa4 +\x12\xa4 +\x00\x14\x1fFPIO\x01\xa0\x0c\x92\x95h +\x03\xa4}h +\x08\x00\xa0\x08\x93h +\x01\xa4 +\x01\xa4 +\x00\x14J\x05SCMP\x02p\x87h`\xa0\x08\x92\x93`\x87i\xa4\x01u`\x08STR1\x11\x02`\x08STR2\x11\x02`phSTR1piSTR2p\x00a\xa2"\x95a`p\x83\x88STR1a\x00bp\x83\x88STR2a\x00c\xa0\x07\x92\x93bc\xa4\x01ua\xa4\x00\x08SPS_ +\x00\x08OSIF +\x00\x08W98F +\x00\x08WNTF +\x00\x08WMEF +\x00\x08WXPF +\x00\x08WVIS +\x00\x08WSPV +\x00\x08LNUX +\x00\x08H8DR +\x00\x08MEMX +\x00\x08ACST +\x00\x08FNID +\x00\x08RRBF +\x00\x08NBCF +\x00''') +f('sys/firmware/acpi/tables/SSDT1', 0o664, b'''SSDT\xaa\x01\x00\x00\x01\x89LENOVOTP-7I \x11\x00\x00MSFT\x0e\x00\x00\x01\x10\x0e\\\x00\x14 +KOU2\x00[! +d\x10I\x0b\\/\x04_SB_PCI0VID_LCD0\x14&_BCL\x00p +\x01\\NBCF\xa4\x12\x16 + +d +\x1e +\x1e +( +2 +< +F +P +Z +d\x08BCLP\x12\x12\x08 +\x1e +( +2 +< +F +P +Z +d\x08BCLL\x12\x12\x08 +\x00 +\x01 +\x02 +\x03 +\x04 +\x05 +\x06 +\x07\x14*_BCM\x01p\x89BCLP\x01h\x00 +\x00 +\x00`\xa0\x15\x92\x93`\xffp\x83\x88BCLL`\x00a\\VBRCa\x14!_BQC\x00p\\VBRG`\xa0\x0f\x92\x94` +\x07\xa4\x83\x88BCLP`\x00\xa1\x03\xa4\x00\x10L\x0b\\/\x05_SB_PCI0AGP_VID_LCD0\x14%_BCL\x00p +\x01NBCF\xa4\x12\x16 + +d +\x1e +\x1e +( +2 +< +F +P +Z +d\x08BCLP\x12\x12\x08 +\x1e +( +2 +< +F +P +Z +d\x08BCLL\x12\x12\x08 +\x00 +\x01 +\x02 +\x03 +\x04 +\x05 +\x06 +\x07\x14*_BCM\x01p\x89BCLP\x01h\x00 +\x00 +\x00`\xa0\x15\x92\x93`\xffp\x83\x88BCLL`\x00a\\VBRCa\x14!_BQC\x00p\\VBRG`\xa0\x0f\x92\x94` +\x07\xa4\x83\x88BCLP`\x00\xa1\x03\xa4\x00''') +f('sys/firmware/acpi/tables/SLIC', 0o664, b'SLICv\x01\x00\x00\x01\x1dLENOVOTP-7I \x11\x00\x00 LTP\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x06\x02\x00\x00\x00$\x00\x00RSA1\x00\x04\x00\x00\x01\x00\x01\x00i\x16J\x9f\xb1K:\xfb\x80 \xaa\xaf\xc4\xf9>\xc1\x80I\xeeje&r\x1e\xcd\xbf_/\x96\xd6\xc0\n\x92\xf5\x06\xb5\x00\xb2;)\x02\xe2L\x8d\xc2\xf2\xbcAw\x9cp\xf0\xf3\x1b\t\xd2cZ\xdc\xa8\x83\xf8^\xc9\x15\x95\xf9\xfa\xfd\xdc\x05\xb7Mg\x7f-\xb3\x843 \xe1\xd1y*\xa7jw\xd1\xb6 *vB\xc5\xd5\xe9\xb6C@UD\xc3\xc97\x99_A\x97p\xf3\xd1\xf6\x07\xec{\x1a)\xa1\xc1\xf1\x91\xfdH\x86n>\xce\xcb\x01\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x02\x00LENOVOTP-7I WINDOWS \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8bz\xb4\xe1\x0e{\x7fc\xd3M%N\xd7\tBd\x9c\x89\xf6F\xb8L\xd5M\x86sy\xf0\x15\xf2\x98\xad\x806\t\xbd\x8c%wn\xb8C\xf4\xb1\xf0W\x08x\x8d\xc6\x18T\xe1`G\xf07\xfdH\xd2\xfdM\x07\xdd\x91O\x9e*\xd6\xdd4\xeb\x9ac\x9a\xb8O%\xd4o\xf0\x95\xbb\xce\xbd:X\x04\xc5l\xb8\xa8\xd89\xf5\x02Oh\x84\x9c)K\xd0\x9b\x16\xb5\xf5A\xb0\x9d\xb8A\x07\x9dJ\x11\xaf\x19\xbd\xb7\xc7\x05\xb6\xa7\x93H\xf6\xcb') +f('sys/firmware/acpi/tables/SSDT3', 0o664, b'''SSDT\xa6\x00\x00\x00\x01hLENOVOTP-7I \x11\x00\x00INTL\x13\x05\x05 \x10A\x08\\._PR_CPU1\x08_TPC +\x00\x14\x16_PTC\x00\xa4\\/\x03_PR_CPU0_PTC\x14\x16_TSS\x00\xa4\\/\x03_PR_CPU0_TSS\x14?_TSD\x00\xa0\'\x90{CFGD\x0c\x00\x00\x00\x01\x00\x92{PDC1 +\x04\x00\xa4\x12\x0f\x01\x12\x0c\x05 +\x05 +\x00 +\x00 +\xfd +\x02\xa4\x12\x0f\x01\x12\x0c\x05 +\x05 +\x00 +\x01 +\xfc +\x01''') +f('sys/firmware/acpi/tables/SSDT5', 0o664, b'''SSDT\xd8\x01\x00\x00\x01\tLENOVOTP-7I \x11\x00\x00INTL\x13\x05\x05 \x10C\x1b\\/\x03_SB_PCI0SATA[\x82@\x1aPRT0\x08DRE0 +\x00\x08DIP0 +\x00\x08HDTF\x11\x11 +\x0e\x02\x00\x00\x00\x00\xa0\xef\x00\x00\x00\x00\x00\xa0\xf5\x8cHDTF +\rHFLC\x08ERTF\x11\x18 +\x15\x02\x00\x00\x00\x00\xa0\xef\x00\x00\x00\x00\x00\xa0\xf5_\x00\x00\x00\x00\xa0\xef\x8cERTF +\rEFLC\x08HPTF\x11\x18 +\x15\x02\x00\x00\x00\x00\xa0\xef\x00\x00\x00\x00\x00\xa0\xf5\x10\x03\x00\x00\x00\xa0\xef\x8cHPTF +\rPFLC\x08HXTF\x11\x1f +\x1c\x02\x00\x00\x00\x00\xa0\xef\x00\x00\x00\x00\x00\xa0\xf5_\x00\x00\x00\x00\xa0\xef\x10\x03\x00\x00\x00\xa0\xef\x8cHXTF +\rXFLC\x08_ADR\x0b\xff\xff\x14L\x08_SDD\x01p +\x00DRE0p +\x00DIP0\xa0F\x07\x93\x87h\x0b\x00\x02\x8bh +\x9cM078\x8bh +\xacM086\x8bh +\xeeM119\x8bh\x0b(\x01M148\xa0\x1f\x93{M148\x0b\x00\xc0\x00\x0b\x00@\xa0\x10{M148 +\x04\x00p +\x01DRE0\xa0\x1b{M086\x0b\x00\x80\x00\xa0\x10{M119 +\x01\x00p +\x01DRE0\xa0\x10{M078 +\x08\x00p +\x01DIP0\x14B\x05_GTF\x00\xa0"\\OSSSp +\xe1XFLCp +\xe1EFLCp +\xe1HFLCp +\xe1PFLC\xa0\x17DRE0\xa0 +DIP0\xa4HXTF\xa1\x06\xa4ERTF\xa0 +DIP0\xa4HPTF\xa4HDTF''') +f('sys/firmware/acpi/tables/HPET', 0o664, b'HPET8\x00\x00\x00\x01\xaaLENOVOTP-7I \x11\x00\x00LNVO\x01\x00\x00\x00\x01\xa2\x86\x80\x00\x00\x00\x00\x00\x00\xd0\xfe\x00\x00\x00\x00\x00\x80\x00\x00') +f('sys/firmware/acpi/tables/FACP', 0o664, b'FACP\xf4\x00\x00\x00\x03\xf0LENOVOTP-7I \x11\x00\x00LNVO\x01\x00\x00\x00\x00@\xef\x7f^\x19\xed\x7f\x00\x02\t\x00\xb2\x00\x00\x00\xf0\xf1\x00\xf3\x00\x10\x00\x00\x00\x00\x00\x00\x04\x10\x00\x00\x00\x00\x00\x00 \x10\x00\x00\x08\x10\x00\x00(\x10\x00\x00\x00\x00\x00\x00\x04\x02\x01\x04\x08\x00\x00\xf4\x01\x00U\x00\x00\x00\x00\x00\x01\x03\r\x002\x12\x00\x00\xad\xc2\x00\x00\x01\x08\x00\x00\xf9\x0c\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00@\xef\x7f\x00\x00\x00\x00^\x19\xed\x7f\x00\x00\x00\x00\x01 \x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00\x04\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x08\x00\x00 \x10\x00\x00\x00\x00\x00\x00\x01 \x00\x00\x08\x10\x00\x00\x00\x00\x00\x00\x01 \x00\x00(\x10\x00\x00\x00\x00\x00\x00\x01 \x00\x00,\x10\x00\x00\x00\x00\x00\x00') +f('sys/firmware/acpi/tables/APIC', 0o664, b'''APICh\x00\x00\x00\x01lLENOVOTP-7I \x11\x00\x00LNVO\x01\x00\x00\x00\x00\x00\xe0\xfe\x01\x00\x00\x00\x00\x08\x00\x00\x01\x00\x00\x00\x00\x08\x01\x01\x01\x00\x00\x00\x01\x0c\x01\x00\x00\x00\xc0\xfe\x00\x00\x00\x00\x02 +\x00\x00\x02\x00\x00\x00\x00\x00\x02 +\x00\t\t\x00\x00\x00\r\x00\x04\x06\x00\x05\x00\x01\x04\x06\x01\x05\x00\x01''') +f('sys/firmware/acpi/tables/SSDT2', 0o664, b'''SSDT_\x02\x00\x00\x01\xc2LENOVOTP-7I \x11\x00\x00INTL\x13\x05\x05 \x10J#\\._PR_CPU0\x08_TPC +\x00\x14M\x06_PTC\x00\xa07{PDC0 +\x04\x00\xa4\x12,\x02\x11\x14 +\x11\x82\x0c\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00y\x00\x11\x14 +\x11\x82\x0c\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00y\x00\xa4\x12,\x02\x11\x14 +\x11\x82\x0c\x00\x01\x04\x01\x00\x10\x10\x00\x00\x00\x00\x00\x00y\x00\x11\x14 +\x11\x82\x0c\x00\x01\x04\x01\x00\x10\x10\x00\x00\x00\x00\x00\x00y\x00\x08TSSI\x12A\x07\x08\x12\r\x05 +d\x0b\xe8\x03 +\x00 +\x00 +\x00\x12\r\x05 +X\x0bk\x03 +\x00 +\x0f +\x00\x12\r\x05 +K\x0b\xee\x02 +\x00 +\x0e +\x00\x12\r\x05 +?\x0bq\x02 +\x00 +\r +\x00\x12\r\x05 +2\x0b\xf4\x01 +\x00 +\x0c +\x00\x12\r\x05 +&\x0bw\x01 +\x00 +\x0b +\x00\x12\x0c\x05 +\x19 +\xfa +\x00 + + +\x00\x12\x0c\x05 +\r +} +\x00 +\t +\x00\x08TSSM\x12A\x07\x08\x12\r\x05 +d\x0b\xe8\x03 +\x00 +\x00 +\x00\x12\r\x05 +X\x0bk\x03 +\x00 +\x1e +\x00\x12\r\x05 +K\x0b\xee\x02 +\x00 +\x1c +\x00\x12\r\x05 +?\x0bq\x02 +\x00 +\x1a +\x00\x12\r\x05 +2\x0b\xf4\x01 +\x00 +\x18 +\x00\x12\r\x05 +&\x0bw\x01 +\x00 +\x16 +\x00\x12\x0c\x05 +\x19 +\xfa +\x00 +\x14 +\x00\x12\x0c\x05 +\r +} +\x00 +\x12 +\x00\x08TSSF +\x00\x14C\x08_TSS\x00\xa0G\x06\x90\x92TSSF[\x12_PSS\x00p_PSS`p\x87`avap\x83\x88\x83\x88`a\x00 +\x01\x00bp +\x00c\xa25\x95c\x87TSSIpxwbt +\x08c\x00\x00 +\x08\x00\x00dpd\x88\x83\x88TSSIc\x00 +\x01\x00pd\x88\x83\x88TSSMc\x00 +\x01\x00ucp\xffTSSF\xa0\x0e{PDC0 +\x04\x00\xa4TSSM\xa4TSSI\x14?_TSD\x00\xa0\'\x90{CFGD\x0c\x00\x00\x00\x01\x00\x92{PDC0 +\x04\x00\xa4\x12\x0f\x01\x12\x0c\x05 +\x05 +\x00 +\x00 +\xfd +\x02\xa4\x12\x0f\x01\x12\x0c\x05 +\x05 +\x00 +\x00 +\xfc +\x01''') +f('sys/firmware/acpi/tables/BOOT', 0o664, b'BOOT(\x00\x00\x00\x01\xa8LENOVOTP-7I \x11\x00\x00 LTP\x01\x00\x00\x005\x00\x00\x00') +f('sys/firmware/acpi/tables/TCPA', 0o664, b'TCPA2\x00\x00\x00\x02YLENOVOTP-7I \x11\x00\x00LNVO\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\xce\x1a\xee\x7f\x00\x00\x00\x00') +f('sys/firmware/acpi/tables/SSDT4', 0o664, b'''SSDT\xf7\x04\x00\x00\x01\xa6LENOVOTP-7I \x11\x00\x00INTL\x13\x05\x05 \x10E\x08\\\x00\x08SSDT\x12C\x05\x0c\rCPU0IST \x00\x0c6\x1d\xef\x7f\x0c\xc4\x02\x00\x00\rCPU1IST \x00\x0cn\x1c\xef\x7f\x0c\xc8\x00\x00\x00\rCPU0CST \x00\x0c\x7f \xef\x7f\x0cZ\x06\x00\x00\rCPU1CST \x00\x0c\xfa\x1f\xef\x7f\x0c\x85\x00\x00\x00\x08CFGD\x0c\xf1i;\x11\x08\\PDC0\x0c\x00\x00\x00\x80\x08\\PDC1\x0c\x00\x00\x00\x80\x08\\SDTL +\x00\x10@!\\._PR_CPU0\x08HI0_ +\x00\x08HC0_ +\x00\x14H\x06_PDC\x01\x8ah +\x00REVS\x8ah +\x04SIZEp\x87h`pt` +\x08\x00a[\x13h +@wa +\x08\x00TEMP\x08STS0\x11\x07 +\x04\x00\x00\x00\x00sSTS0TEMPb_OSC\x11\x13 +\x10\x16\xa6w@\x0c)\xbeG\x9e\xbd\xd8pXq9SREVSSIZEb\x14L\x18_OSC\x04\x8ak +\x00STS0\x8ak +\x04CAP0\x8ah +\x00IID0\x8ah +\x04IID1\x8ah +\x08IID2\x8ah +\x0cIID3\x08UID0\x11\x13 +\x10\x16\xa6w@\x0c)\xbeG\x9e\xbd\xd8pXq9S\x8aUID0 +\x00EID0\x8aUID0 +\x04EID1\x8aUID0 +\x08EID2\x8aUID0 +\x0cEID3\xa02\x92\x90\x90\x93IID0EID0\x93IID1EID1\x90\x93IID2EID2\x93IID3EID3p +\x06STS0\xa4k\xa0\x0f\x92\x93i +\x01p + +STS0\xa4k}{PDC0\x0c\xff\xff\xff\x7f\x00CAP0PDC0\xa0L\x05{CFGD +\x01\x00\xa0A\x05\x90\x90{CFGD\x0c\x00\x00\x00\x01\x00\x93{PDC0 +\t\x00 +\t\x92{SDTL +\x01\x00}SDTL +\x01SDTL[\x80IST0\x00\x83\x88SSDT +\x01\x00\x83\x88SSDT +\x02\x00[ IST0HI0_\xa0I\x05{CFGD +\xf0\x00\xa0N\x04\x90\x90{CFGD\x0c\x00\x00\x00\x01\x00{PDC0 +\x18\x00\x92{SDTL +\x02\x00}SDTL +\x02SDTL[\x80CST0\x00\x83\x88SSDT +\x07\x00\x83\x88SSDT +\x08\x00[ CST0HC0_\xa4k\x10K#\\._PR_CPU1\x08HI1_ +\x00\x08HC1_ +\x00\x14H\x06_PDC\x01\x8ah +\x00REVS\x8ah +\x04SIZEp\x87h`pt` +\x08\x00a[\x13h +@wa +\x08\x00TEMP\x08STS1\x11\x07 +\x04\x00\x00\x00\x00sSTS1TEMPb_OSC\x11\x13 +\x10\x16\xa6w@\x0c)\xbeG\x9e\xbd\xd8pXq9SREVSSIZEb\x14L\x18_OSC\x04\x8ak +\x00STS1\x8ak +\x04CAP1\x8ah +\x00IID0\x8ah +\x04IID1\x8ah +\x08IID2\x8ah +\x0cIID3\x08UID1\x11\x13 +\x10\x16\xa6w@\x0c)\xbeG\x9e\xbd\xd8pXq9S\x8aUID1 +\x00EID0\x8aUID1 +\x04EID1\x8aUID1 +\x08EID2\x8aUID1 +\x0cEID3\xa02\x92\x90\x90\x93IID0EID0\x93IID1EID1\x90\x93IID2EID2\x93IID3EID3p +\x06STS1\xa4k\xa0\x0f\x92\x93i +\x01p + +STS1\xa4k}{PDC1\x0c\xff\xff\xff\x7f\x00CAP1PDC1\xa0L\x05{CFGD +\x01\x00\xa0A\x05\x90\x90{CFGD\x0c\x00\x00\x00\x01\x00\x93{PDC1 +\t\x00 +\t\x92{SDTL +\x10\x00}SDTL +\x10SDTL[\x80IST1\x00\x83\x88SSDT +\x04\x00\x83\x88SSDT +\x05\x00[ IST1HI1_\xa0I\x05{CFGD +\xf0\x00\xa0N\x04\x90\x90{CFGD\x0c\x00\x00\x00\x01\x00{PDC1 +\x18\x00\x92{SDTL + \x00}SDTL + SDTL[\x80CST1\x00\x83\x88SSDT + +\x00\x83\x88SSDT +\x0b\x00[ CST1HC1_\xa4k\x14*_INI\x00\xa0\x0c\\DTSETHRM +\x00\xa0\x16\x90\\WXPF\x92\x94\\WSPV +\x01PPMS +\x00''') +f('sys/firmware/acpi/tables/ECDT', 0o664, b'ECDTR\x00\x00\x00\x01ULENOVOTP-7I \x11\x00\x00LNVO\x01\x00\x00\x00\x01\x08\x00\x00f\x00\x00\x00\x00\x00\x00\x00\x01\x08\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\\_SB.PCI0.LPC.EC\x00') +f('sys/firmware/acpi/tables/FACS', 0o664, b'FACS@\x00\x00\x00/\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') +f('sys/firmware/acpi/tables/MCFG', 0o664, b'MCFG<\x00\x00\x00\x01\x82LENOVOTP-7I \x11\x00\x00LNVO\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00?\x00\x00\x00\x00') +d('sys/firmware/acpi/interrupts', 0o775) +f('sys/firmware/acpi/interrupts/gpe1A', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe12', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe11', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe10', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/ff_pmtimer', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe0C', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe04', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe06', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe14', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe0B', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/sci', 0o664, b' 14240\n') +f('sys/firmware/acpi/interrupts/gpe08', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe15', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe17', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe0A', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/ff_rt_clk', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe09', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe19', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe03', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe01', 0o664, b' 1\tenable\n') +f('sys/firmware/acpi/interrupts/ff_slp_btn', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/error', 0o664, b' 0\n') +f('sys/firmware/acpi/interrupts/gpe1C', 0o664, b' 14039\tenable\n') +f('sys/firmware/acpi/interrupts/ff_pwr_btn', 0o664, b' 0\tenable\n') +f('sys/firmware/acpi/interrupts/gpe0D', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe05', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe02', 0o664, b' 200\tenable\n') +f('sys/firmware/acpi/interrupts/gpe1E', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe18', 0o664, b' 0\tenable\n') +f('sys/firmware/acpi/interrupts/gpe1D', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe1F', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe0E', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe00', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe1B', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe0F', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe07', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe16', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe13', 0o664, b' 0 invalid\n') +f('sys/firmware/acpi/interrupts/gpe_all', 0o664, b' 14240\n') +f('sys/firmware/acpi/interrupts/ff_gbl_lock', 0o664, b' 0\tenable\n') +d('sys/bus', 0o755) +d('sys/bus/pci_express', 0o755) +f('sys/bus/pci_express/drivers_autoprobe', 0o644, b'1\n') +d('sys/bus/pci_express/devices', 0o755) +l('sys/bus/pci_express/devices/0000:00:1c.2:pcie02', '../../../devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie02') +l('sys/bus/pci_express/devices/0000:00:1c.2:pcie00', '../../../devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie00') +l('sys/bus/pci_express/devices/0000:00:1c.0:pcie03', '../../../devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie03') +l('sys/bus/pci_express/devices/0000:00:01.0:pcie03', '../../../devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie03') +l('sys/bus/pci_express/devices/0000:00:1c.2:pcie03', '../../../devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie03') +l('sys/bus/pci_express/devices/0000:00:1c.1:pcie02', '../../../devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie02') +l('sys/bus/pci_express/devices/0000:00:1c.0:pcie00', '../../../devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie00') +l('sys/bus/pci_express/devices/0000:00:1c.3:pcie02', '../../../devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie02') +l('sys/bus/pci_express/devices/0000:00:1c.0:pcie02', '../../../devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie02') +l('sys/bus/pci_express/devices/0000:00:1c.1:pcie03', '../../../devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie03') +l('sys/bus/pci_express/devices/0000:00:1c.3:pcie03', '../../../devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie03') +l('sys/bus/pci_express/devices/0000:00:1c.1:pcie00', '../../../devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie00') +l('sys/bus/pci_express/devices/0000:00:1c.3:pcie00', '../../../devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie00') +l('sys/bus/pci_express/devices/0000:00:01.0:pcie00', '../../../devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie00') +d('sys/bus/acpi', 0o775) +f('sys/bus/acpi/drivers_autoprobe', 0o664, b'1\n') +d('sys/bus/acpi/drivers', 0o775) +d('sys/bus/acpi/drivers/thinkpad_hotkey', 0o775) +l('sys/bus/acpi/drivers/thinkpad_hotkey/IBM0068:00', '../../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00') +d('sys/bus/acpi/drivers/button', 0o775) +l('sys/bus/acpi/drivers/button/PNP0C0E:00', '../../../../devices/LNXSYSTM:00/device:00/PNP0C0E:00') +l('sys/bus/acpi/drivers/button/PNP0C0D:00', '../../../../devices/LNXSYSTM:00/device:00/PNP0C0D:00') +l('sys/bus/acpi/drivers/button/LNXPWRBN:00', '../../../../devices/LNXSYSTM:00/LNXPWRBN:00') +d('sys/bus/acpi/drivers/processor', 0o775) +l('sys/bus/acpi/drivers/processor/ACPI0007:01', '../../../../devices/LNXSYSTM:00/ACPI0007:01') +l('sys/bus/acpi/drivers/processor/ACPI0007:00', '../../../../devices/LNXSYSTM:00/ACPI0007:00') +d('sys/bus/acpi/drivers/power', 0o775) +l('sys/bus/acpi/drivers/power/LNXPOWER:00', '../../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00') +d('sys/bus/acpi/drivers/pci_link', 0o775) +l('sys/bus/acpi/drivers/pci_link/PNP0C0F:05', '../../../../devices/LNXSYSTM:00/device:00/PNP0C0F:05') +l('sys/bus/acpi/drivers/pci_link/PNP0C0F:07', '../../../../devices/LNXSYSTM:00/device:00/PNP0C0F:07') +l('sys/bus/acpi/drivers/pci_link/PNP0C0F:04', '../../../../devices/LNXSYSTM:00/device:00/PNP0C0F:04') +l('sys/bus/acpi/drivers/pci_link/PNP0C0F:02', '../../../../devices/LNXSYSTM:00/device:00/PNP0C0F:02') +l('sys/bus/acpi/drivers/pci_link/PNP0C0F:00', '../../../../devices/LNXSYSTM:00/device:00/PNP0C0F:00') +l('sys/bus/acpi/drivers/pci_link/PNP0C0F:01', '../../../../devices/LNXSYSTM:00/device:00/PNP0C0F:01') +l('sys/bus/acpi/drivers/pci_link/PNP0C0F:06', '../../../../devices/LNXSYSTM:00/device:00/PNP0C0F:06') +l('sys/bus/acpi/drivers/pci_link/PNP0C0F:03', '../../../../devices/LNXSYSTM:00/device:00/PNP0C0F:03') +d('sys/bus/acpi/drivers/battery', 0o775) +l('sys/bus/acpi/drivers/battery/PNP0C0A:00', '../../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00') +d('sys/bus/acpi/drivers/ec', 0o775) +l('sys/bus/acpi/drivers/ec/PNP0C09:00', '../../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00') +d('sys/bus/acpi/drivers/pci_root', 0o775) +l('sys/bus/acpi/drivers/pci_root/PNP0A08:00', '../../../../devices/LNXSYSTM:00/device:00/PNP0A08:00') +d('sys/bus/acpi/drivers/thermal', 0o775) +l('sys/bus/acpi/drivers/thermal/LNXTHERM:01', '../../../../devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01') +l('sys/bus/acpi/drivers/thermal/LNXTHERM:02', '../../../../devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02') +d('sys/bus/acpi/drivers/ac', 0o775) +l('sys/bus/acpi/drivers/ac/ACPI0003:00', '../../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00') +d('sys/bus/acpi/devices', 0o775) +l('sys/bus/acpi/devices/device:11', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11') +l('sys/bus/acpi/devices/device:21', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21') +l('sys/bus/acpi/devices/PNP0000:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0000:00') +l('sys/bus/acpi/devices/device:0b', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0b') +l('sys/bus/acpi/devices/device:1f', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/device:1f') +l('sys/bus/acpi/devices/LNXTHERM:01', '../../../devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01') +l('sys/bus/acpi/devices/PNP0103:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00') +l('sys/bus/acpi/devices/LNXPOWER:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00') +l('sys/bus/acpi/devices/device:1c', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/device:1c') +l('sys/bus/acpi/devices/device:06', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06') +l('sys/bus/acpi/devices/ACPI0003:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00') +l('sys/bus/acpi/devices/PNP0C0A:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00') +l('sys/bus/acpi/devices/device:0e', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/device:0e') +l('sys/bus/acpi/devices/ATM1200:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00') +l('sys/bus/acpi/devices/device:08', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:08') +l('sys/bus/acpi/devices/PNP0C0F:05', '../../../devices/LNXSYSTM:00/device:00/PNP0C0F:05') +l('sys/bus/acpi/devices/device:18', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:18') +l('sys/bus/acpi/devices/device:0c', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0c') +l('sys/bus/acpi/devices/PNP0303:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00') +l('sys/bus/acpi/devices/device:17', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/device:17') +l('sys/bus/acpi/devices/device:02', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02') +l('sys/bus/acpi/devices/ACPI0007:01', '../../../devices/LNXSYSTM:00/ACPI0007:01') +l('sys/bus/acpi/devices/device:13', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13') +l('sys/bus/acpi/devices/PNP0C0E:00', '../../../devices/LNXSYSTM:00/device:00/PNP0C0E:00') +l('sys/bus/acpi/devices/device:04', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:04') +l('sys/bus/acpi/devices/PNP0A08:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00') +l('sys/bus/acpi/devices/PNP0C04:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00') +l('sys/bus/acpi/devices/LNXTHERM:00', '../../../devices/LNXSYSTM:00/LNXTHERM:00') +l('sys/bus/acpi/devices/device:15', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/device:15') +l('sys/bus/acpi/devices/IBM0079:00', '../../../devices/LNXSYSTM:00/device:00/IBM0079:00') +l('sys/bus/acpi/devices/device:1d', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d') +l('sys/bus/acpi/devices/PNP0C0D:00', '../../../devices/LNXSYSTM:00/device:00/PNP0C0D:00') +l('sys/bus/acpi/devices/device:23', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:23') +l('sys/bus/acpi/devices/device:19', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:19') +l('sys/bus/acpi/devices/device:12', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/device:12') +l('sys/bus/acpi/devices/device:1a', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a') +l('sys/bus/acpi/devices/device:00', '../../../devices/LNXSYSTM:00/device:00') +l('sys/bus/acpi/devices/PNP0800:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00') +l('sys/bus/acpi/devices/PNP0C02:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00') +l('sys/bus/acpi/devices/device:10', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/device:10') +l('sys/bus/acpi/devices/PNP0100:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0100:00') +l('sys/bus/acpi/devices/device:0d', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d') +l('sys/bus/acpi/devices/IBM0068:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00') +l('sys/bus/acpi/devices/device:25', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:25') +l('sys/bus/acpi/devices/PNP0C01:00', '../../../devices/LNXSYSTM:00/device:00/PNP0C01:00') +l('sys/bus/acpi/devices/device:01', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01') +l('sys/bus/acpi/devices/PNP0C0F:07', '../../../devices/LNXSYSTM:00/device:00/PNP0C0F:07') +l('sys/bus/acpi/devices/PNP0C0F:04', '../../../devices/LNXSYSTM:00/device:00/PNP0C0F:04') +l('sys/bus/acpi/devices/device:1b', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b') +l('sys/bus/acpi/devices/device:24', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:24') +l('sys/bus/acpi/devices/device:1e', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e') +l('sys/bus/acpi/devices/ACPI0007:00', '../../../devices/LNXSYSTM:00/ACPI0007:00') +l('sys/bus/acpi/devices/LNXTHERM:02', '../../../devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02') +l('sys/bus/acpi/devices/PNP0C09:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00') +l('sys/bus/acpi/devices/device:20', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:20') +l('sys/bus/acpi/devices/PNP0C0F:02', '../../../devices/LNXSYSTM:00/device:00/PNP0C0F:02') +l('sys/bus/acpi/devices/LNXSYSTM:00', '../../../devices/LNXSYSTM:00') +l('sys/bus/acpi/devices/device:05', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:05') +l('sys/bus/acpi/devices/PNP0C0F:00', '../../../devices/LNXSYSTM:00/device:00/PNP0C0F:00') +l('sys/bus/acpi/devices/device:0f', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f') +l('sys/bus/acpi/devices/device:16', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16') +l('sys/bus/acpi/devices/device:09', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:09') +l('sys/bus/acpi/devices/device:07', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07') +l('sys/bus/acpi/devices/device:03', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:03') +l('sys/bus/acpi/devices/device:22', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22') +l('sys/bus/acpi/devices/PNP0C0F:01', '../../../devices/LNXSYSTM:00/device:00/PNP0C0F:01') +l('sys/bus/acpi/devices/PNP0C0F:06', '../../../devices/LNXSYSTM:00/device:00/PNP0C0F:06') +l('sys/bus/acpi/devices/device:0a', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:0a') +l('sys/bus/acpi/devices/PNP0200:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00') +l('sys/bus/acpi/devices/device:14', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14') +l('sys/bus/acpi/devices/IBM0057:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00') +l('sys/bus/acpi/devices/PNP0B00:00', '../../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00') +l('sys/bus/acpi/devices/PNP0C0F:03', '../../../devices/LNXSYSTM:00/device:00/PNP0C0F:03') +l('sys/bus/acpi/devices/LNXPWRBN:00', '../../../devices/LNXSYSTM:00/LNXPWRBN:00') +d('sys/bus/serio', 0o755) +f('sys/bus/serio/drivers_autoprobe', 0o644, b'1\n') +d('sys/bus/serio/drivers', 0o755) +d('sys/bus/serio/drivers/psmouse', 0o755) +l('sys/bus/serio/drivers/psmouse/module', '../../../../module/psmouse') +l('sys/bus/serio/drivers/psmouse/serio1', '../../../../devices/platform/i8042/serio1') +f('sys/bus/serio/drivers/psmouse/bind_mode', 0o644, b'auto\n') +f('sys/bus/serio/drivers/psmouse/description', 0o644, b'PS/2 mouse driver\n') +d('sys/bus/serio/drivers/atkbd', 0o755) +l('sys/bus/serio/drivers/atkbd/serio0', '../../../../devices/platform/i8042/serio0') +l('sys/bus/serio/drivers/atkbd/module', '../../../../module/atkbd') +f('sys/bus/serio/drivers/atkbd/bind_mode', 0o644, b'auto\n') +f('sys/bus/serio/drivers/atkbd/description', 0o644, b'AT and PS/2 keyboard driver\n') +d('sys/bus/serio/devices', 0o755) +l('sys/bus/serio/devices/serio0', '../../../devices/platform/i8042/serio0') +l('sys/bus/serio/devices/serio1', '../../../devices/platform/i8042/serio1') +d('sys/bus/scsi', 0o755) +f('sys/bus/scsi/drivers_autoprobe', 0o644, b'1\n') +d('sys/bus/scsi/drivers', 0o755) +d('sys/bus/scsi/drivers/sd', 0o755) +l('sys/bus/scsi/drivers/sd/7:0:0:0', '../../../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0') +l('sys/bus/scsi/drivers/sd/0:0:0:0', '../../../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0') +d('sys/bus/scsi/drivers/sr', 0o755) +l('sys/bus/scsi/drivers/sr/4:0:0:0', '../../../../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0') +d('sys/bus/scsi/devices', 0o755) +l('sys/bus/scsi/devices/target4:0:0', '../../../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0') +l('sys/bus/scsi/devices/host0', '../../../devices/pci0000:00/0000:00:1f.2/host0') +l('sys/bus/scsi/devices/host5', '../../../devices/pci0000:00/0000:00:1f.1/host5') +l('sys/bus/scsi/devices/host1', '../../../devices/pci0000:00/0000:00:1f.2/host1') +l('sys/bus/scsi/devices/target0:0:0', '../../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0') +l('sys/bus/scsi/devices/host4', '../../../devices/pci0000:00/0000:00:1f.1/host4') +l('sys/bus/scsi/devices/7:0:0:0', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0') +l('sys/bus/scsi/devices/target7:0:0', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0') +l('sys/bus/scsi/devices/0:0:0:0', '../../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0') +l('sys/bus/scsi/devices/host2', '../../../devices/pci0000:00/0000:00:1f.2/host2') +l('sys/bus/scsi/devices/host7', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7') +l('sys/bus/scsi/devices/4:0:0:0', '../../../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0') +l('sys/bus/scsi/devices/host3', '../../../devices/pci0000:00/0000:00:1f.2/host3') +d('sys/bus/usb', 0o755) +f('sys/bus/usb/drivers_autoprobe', 0o644, b'1\n') +d('sys/bus/usb/drivers', 0o755) +d('sys/bus/usb/drivers/usb-storage', 0o755) +l('sys/bus/usb/drivers/usb-storage/module', '../../../../module/usb_storage') +l('sys/bus/usb/drivers/usb-storage/5-1:1.0', '../../../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0') +d('sys/bus/usb/drivers/cdc_acm', 0o755) +l('sys/bus/usb/drivers/cdc_acm/5-2:1.1', '../../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1') +l('sys/bus/usb/drivers/cdc_acm/5-2:1.0', '../../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0') +l('sys/bus/usb/drivers/cdc_acm/module', '../../../../module/cdc_acm') +d('sys/bus/usb/drivers/usbhid', 0o755) +l('sys/bus/usb/drivers/usbhid/3-1:1.0', '../../../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0') +l('sys/bus/usb/drivers/usbhid/module', '../../../../module/usbhid') +d('sys/bus/usb/drivers/hub', 0o755) +l('sys/bus/usb/drivers/hub/3-0:1.0', '../../../../devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0') +l('sys/bus/usb/drivers/hub/1-0:1.0', '../../../../devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0') +l('sys/bus/usb/drivers/hub/4-0:1.0', '../../../../devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0') +l('sys/bus/usb/drivers/hub/module', '../../../../module/usbcore') +l('sys/bus/usb/drivers/hub/2-0:1.0', '../../../../devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0') +l('sys/bus/usb/drivers/hub/5-0:1.0', '../../../../devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0') +d('sys/bus/usb/drivers/usb', 0o755) +l('sys/bus/usb/drivers/usb/usb5', '../../../../devices/pci0000:00/0000:00:1d.7/usb5') +l('sys/bus/usb/drivers/usb/usb1', '../../../../devices/pci0000:00/0000:00:1d.0/usb1') +l('sys/bus/usb/drivers/usb/4-2', '../../../../devices/pci0000:00/0000:00:1d.3/usb4/4-2') +l('sys/bus/usb/drivers/usb/5-1', '../../../../devices/pci0000:00/0000:00:1d.7/usb5/5-1') +l('sys/bus/usb/drivers/usb/5-2', '../../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2') +l('sys/bus/usb/drivers/usb/4-1', '../../../../devices/pci0000:00/0000:00:1d.3/usb4/4-1') +l('sys/bus/usb/drivers/usb/module', '../../../../module/usbcore') +l('sys/bus/usb/drivers/usb/usb4', '../../../../devices/pci0000:00/0000:00:1d.3/usb4') +l('sys/bus/usb/drivers/usb/usb3', '../../../../devices/pci0000:00/0000:00:1d.2/usb3') +l('sys/bus/usb/drivers/usb/usb2', '../../../../devices/pci0000:00/0000:00:1d.1/usb2') +l('sys/bus/usb/drivers/usb/3-1', '../../../../devices/pci0000:00/0000:00:1d.2/usb3/3-1') +d('sys/bus/usb/drivers/usbfs', 0o755) +l('sys/bus/usb/drivers/usbfs/module', '../../../../module/usbcore') +d('sys/bus/usb/devices', 0o755) +l('sys/bus/usb/devices/4-1:1.3', '../../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3') +l('sys/bus/usb/devices/5-2:1.4', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4') +l('sys/bus/usb/devices/usb5', '../../../devices/pci0000:00/0000:00:1d.7/usb5') +l('sys/bus/usb/devices/4-1:1.0', '../../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0') +l('sys/bus/usb/devices/5-2:1.2', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2') +l('sys/bus/usb/devices/3-0:1.0', '../../../devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0') +l('sys/bus/usb/devices/usb1', '../../../devices/pci0000:00/0000:00:1d.0/usb1') +l('sys/bus/usb/devices/4-2', '../../../devices/pci0000:00/0000:00:1d.3/usb4/4-2') +l('sys/bus/usb/devices/5-2:1.1', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1') +l('sys/bus/usb/devices/1-0:1.0', '../../../devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0') +l('sys/bus/usb/devices/5-1', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-1') +l('sys/bus/usb/devices/5-2:1.10', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10') +l('sys/bus/usb/devices/4-0:1.0', '../../../devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0') +l('sys/bus/usb/devices/5-2:1.0', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0') +l('sys/bus/usb/devices/5-2', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2') +l('sys/bus/usb/devices/5-2:1.9', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9') +l('sys/bus/usb/devices/3-1:1.0', '../../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0') +l('sys/bus/usb/devices/5-2:1.13', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13') +l('sys/bus/usb/devices/5-2:1.5', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5') +l('sys/bus/usb/devices/4-1', '../../../devices/pci0000:00/0000:00:1d.3/usb4/4-1') +l('sys/bus/usb/devices/4-1:1.2', '../../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2') +l('sys/bus/usb/devices/usb4', '../../../devices/pci0000:00/0000:00:1d.3/usb4') +l('sys/bus/usb/devices/2-0:1.0', '../../../devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0') +l('sys/bus/usb/devices/5-2:1.11', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11') +l('sys/bus/usb/devices/usb3', '../../../devices/pci0000:00/0000:00:1d.2/usb3') +l('sys/bus/usb/devices/5-2:1.12', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12') +l('sys/bus/usb/devices/5-2:1.3', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3') +l('sys/bus/usb/devices/5-2:1.6', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6') +l('sys/bus/usb/devices/4-1:1.1', '../../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1') +l('sys/bus/usb/devices/5-1:1.0', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0') +l('sys/bus/usb/devices/5-0:1.0', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0') +l('sys/bus/usb/devices/4-2:1.0', '../../../devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0') +l('sys/bus/usb/devices/usb2', '../../../devices/pci0000:00/0000:00:1d.1/usb2') +l('sys/bus/usb/devices/3-1', '../../../devices/pci0000:00/0000:00:1d.2/usb3/3-1') +d('sys/bus/pci', 0o755) +f('sys/bus/pci/drivers_autoprobe', 0o644, b'1\n') +d('sys/bus/pci/drivers', 0o755) +d('sys/bus/pci/drivers/pcieport-driver', 0o755) +l('sys/bus/pci/drivers/pcieport-driver/0000:00:1c.2', '../../../../devices/pci0000:00/0000:00:1c.2') +l('sys/bus/pci/drivers/pcieport-driver/0000:00:1c.1', '../../../../devices/pci0000:00/0000:00:1c.1') +l('sys/bus/pci/drivers/pcieport-driver/0000:00:1c.3', '../../../../devices/pci0000:00/0000:00:1c.3') +l('sys/bus/pci/drivers/pcieport-driver/0000:00:1c.0', '../../../../devices/pci0000:00/0000:00:1c.0') +l('sys/bus/pci/drivers/pcieport-driver/0000:00:01.0', '../../../../devices/pci0000:00/0000:00:01.0') +d('sys/bus/pci/drivers/uhci_hcd', 0o755) +l('sys/bus/pci/drivers/uhci_hcd/0000:00:1d.3', '../../../../devices/pci0000:00/0000:00:1d.3') +l('sys/bus/pci/drivers/uhci_hcd/module', '../../../../module/uhci_hcd') +l('sys/bus/pci/drivers/uhci_hcd/0000:00:1d.0', '../../../../devices/pci0000:00/0000:00:1d.0') +l('sys/bus/pci/drivers/uhci_hcd/0000:00:1d.2', '../../../../devices/pci0000:00/0000:00:1d.2') +l('sys/bus/pci/drivers/uhci_hcd/0000:00:1d.1', '../../../../devices/pci0000:00/0000:00:1d.1') +d('sys/bus/pci/drivers/HDA Intel', 0o755) +l('sys/bus/pci/drivers/HDA Intel/0000:00:1b.0', '../../../../devices/pci0000:00/0000:00:1b.0') +l('sys/bus/pci/drivers/HDA Intel/module', '../../../../module/snd_hda_intel') +d('sys/bus/pci/drivers/ata_piix', 0o755) +l('sys/bus/pci/drivers/ata_piix/0000:00:1f.1', '../../../../devices/pci0000:00/0000:00:1f.1') +d('sys/bus/pci/drivers/yenta_cardbus', 0o755) +l('sys/bus/pci/drivers/yenta_cardbus/module', '../../../../module/yenta_socket') +l('sys/bus/pci/drivers/yenta_cardbus/0000:15:00.0', '../../../../devices/pci0000:00/0000:00:1e.0/0000:15:00.0') +d('sys/bus/pci/drivers/e1000e', 0o755) +l('sys/bus/pci/drivers/e1000e/0000:02:00.0', '../../../../devices/pci0000:00/0000:00:1c.0/0000:02:00.0') +l('sys/bus/pci/drivers/e1000e/module', '../../../../module/e1000e') +d('sys/bus/pci/drivers/iwl3945', 0o755) +l('sys/bus/pci/drivers/iwl3945/module', '../../../../module/iwl3945') +l('sys/bus/pci/drivers/iwl3945/0000:03:00.0', '../../../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0') +d('sys/bus/pci/drivers/ehci_hcd', 0o755) +l('sys/bus/pci/drivers/ehci_hcd/module', '../../../../module/ehci_hcd') +d('sys/bus/pci/drivers/agpgart-intel', 0o755) +l('sys/bus/pci/drivers/agpgart-intel/module', '../../../../module/intel_agp') +d('sys/bus/pci/drivers/ahci', 0o755) +l('sys/bus/pci/drivers/ahci/module', '../../../../module/ahci') +l('sys/bus/pci/drivers/ahci/0000:00:1f.2', '../../../../devices/pci0000:00/0000:00:1f.2') +d('sys/bus/pci/devices', 0o755) +l('sys/bus/pci/devices/0000:00:1d.3', '../../../devices/pci0000:00/0000:00:1d.3') +l('sys/bus/pci/devices/0000:00:1c.2', '../../../devices/pci0000:00/0000:00:1c.2') +l('sys/bus/pci/devices/0000:00:1b.0', '../../../devices/pci0000:00/0000:00:1b.0') +l('sys/bus/pci/devices/0000:02:00.0', '../../../devices/pci0000:00/0000:00:1c.0/0000:02:00.0') +l('sys/bus/pci/devices/0000:00:1c.1', '../../../devices/pci0000:00/0000:00:1c.1') +l('sys/bus/pci/devices/0000:00:00.0', '../../../devices/pci0000:00/0000:00:00.0') +l('sys/bus/pci/devices/0000:01:00.0', '../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0') +l('sys/bus/pci/devices/0000:00:1c.3', '../../../devices/pci0000:00/0000:00:1c.3') +l('sys/bus/pci/devices/0000:00:1f.0', '../../../devices/pci0000:00/0000:00:1f.0') +l('sys/bus/pci/devices/0000:00:1c.0', '../../../devices/pci0000:00/0000:00:1c.0') +l('sys/bus/pci/devices/0000:15:00.0', '../../../devices/pci0000:00/0000:00:1e.0/0000:15:00.0') +l('sys/bus/pci/devices/0000:00:1f.3', '../../../devices/pci0000:00/0000:00:1f.3') +l('sys/bus/pci/devices/0000:00:1d.0', '../../../devices/pci0000:00/0000:00:1d.0') +l('sys/bus/pci/devices/0000:00:1f.2', '../../../devices/pci0000:00/0000:00:1f.2') +l('sys/bus/pci/devices/0000:00:1d.2', '../../../devices/pci0000:00/0000:00:1d.2') +l('sys/bus/pci/devices/0000:03:00.0', '../../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0') +l('sys/bus/pci/devices/0000:00:01.0', '../../../devices/pci0000:00/0000:00:01.0') +l('sys/bus/pci/devices/0000:00:1f.1', '../../../devices/pci0000:00/0000:00:1f.1') +l('sys/bus/pci/devices/0000:00:1e.0', '../../../devices/pci0000:00/0000:00:1e.0') +l('sys/bus/pci/devices/0000:00:1d.1', '../../../devices/pci0000:00/0000:00:1d.1') +d('sys/bus/pnp', 0o755) +f('sys/bus/pnp/drivers_autoprobe', 0o644, b'1\n') +d('sys/bus/pnp/drivers', 0o755) +d('sys/bus/pnp/drivers/system', 0o755) +l('sys/bus/pnp/drivers/system/00:02', '../../../../devices/pnp0/00:02') +l('sys/bus/pnp/drivers/system/00:00', '../../../../devices/pnp0/00:00') +d('sys/bus/pnp/drivers/i8042 kbd', 0o755) +l('sys/bus/pnp/drivers/i8042 kbd/00:08', '../../../../devices/pnp0/00:08') +d('sys/bus/pnp/drivers/rtc_cmos', 0o755) +l('sys/bus/pnp/drivers/rtc_cmos/00:07', '../../../../devices/pnp0/00:07') +d('sys/bus/pnp/drivers/i8042 aux', 0o755) +l('sys/bus/pnp/drivers/i8042 aux/00:09', '../../../../devices/pnp0/00:09') +d('sys/bus/pnp/devices', 0o755) +l('sys/bus/pnp/devices/00:04', '../../../devices/pnp0/00:04') +l('sys/bus/pnp/devices/00:0a', '../../../devices/pnp0/00:0a') +l('sys/bus/pnp/devices/00:03', '../../../devices/pnp0/00:03') +l('sys/bus/pnp/devices/00:02', '../../../devices/pnp0/00:02') +l('sys/bus/pnp/devices/00:00', '../../../devices/pnp0/00:00') +l('sys/bus/pnp/devices/00:09', '../../../devices/pnp0/00:09') +l('sys/bus/pnp/devices/00:07', '../../../devices/pnp0/00:07') +l('sys/bus/pnp/devices/00:06', '../../../devices/pnp0/00:06') +l('sys/bus/pnp/devices/00:08', '../../../devices/pnp0/00:08') +l('sys/bus/pnp/devices/00:05', '../../../devices/pnp0/00:05') +l('sys/bus/pnp/devices/00:01', '../../../devices/pnp0/00:01') +d('sys/bus/pcmcia', 0o755) +f('sys/bus/pcmcia/drivers_autoprobe', 0o644, b'1\n') +d('sys/bus/platform', 0o755) +f('sys/bus/platform/drivers_autoprobe', 0o644, b'1\n') +d('sys/bus/platform/drivers', 0o755) +d('sys/bus/platform/drivers/pcspkr', 0o755) +l('sys/bus/platform/drivers/pcspkr/pcspkr', '../../../../devices/platform/pcspkr') +l('sys/bus/platform/drivers/pcspkr/module', '../../../../module/pcspkr') +d('sys/bus/platform/drivers/serial8250', 0o755) +l('sys/bus/platform/drivers/serial8250/serial8250', '../../../../devices/platform/serial8250') +d('sys/bus/platform/drivers/thinkpad_acpi', 0o755) +l('sys/bus/platform/drivers/thinkpad_acpi/module', '../../../../module/thinkpad_acpi') +l('sys/bus/platform/drivers/thinkpad_acpi/thinkpad_acpi', '../../../../devices/platform/thinkpad_acpi') +f('sys/bus/platform/drivers/thinkpad_acpi/version', 0o644, b'ThinkPad ACPI Extras v0.21\n') +f('sys/bus/platform/drivers/thinkpad_acpi/debug_level', 0o644, b'0x0000\n') +f('sys/bus/platform/drivers/thinkpad_acpi/interface_version', 0o644, b'0x00020200\n') +d('sys/bus/platform/drivers/vesafb', 0o755) +l('sys/bus/platform/drivers/vesafb/vesafb.0', '../../../../devices/platform/vesafb.0') +d('sys/bus/platform/drivers/thinkpad_hwmon', 0o755) +l('sys/bus/platform/drivers/thinkpad_hwmon/module', '../../../../module/thinkpad_acpi') +l('sys/bus/platform/drivers/thinkpad_hwmon/thinkpad_hwmon', '../../../../devices/platform/thinkpad_hwmon') +f('sys/bus/platform/drivers/thinkpad_hwmon/version', 0o644, b'ThinkPad ACPI Extras v0.21\n') +f('sys/bus/platform/drivers/thinkpad_hwmon/fan_watchdog', 0o644, b'0\n') +f('sys/bus/platform/drivers/thinkpad_hwmon/debug_level', 0o644, b'0x0000\n') +f('sys/bus/platform/drivers/thinkpad_hwmon/interface_version', 0o644, b'0x00020200\n') +d('sys/bus/platform/drivers/i8042', 0o755) +l('sys/bus/platform/drivers/i8042/i8042', '../../../../devices/platform/i8042') +d('sys/bus/platform/devices', 0o755) +l('sys/bus/platform/devices/pcspkr', '../../../devices/platform/pcspkr') +l('sys/bus/platform/devices/vesafb.0', '../../../devices/platform/vesafb.0') +l('sys/bus/platform/devices/dock.0', '../../../devices/platform/dock.0') +l('sys/bus/platform/devices/serial8250', '../../../devices/platform/serial8250') +l('sys/bus/platform/devices/thinkpad_acpi', '../../../devices/platform/thinkpad_acpi') +l('sys/bus/platform/devices/thinkpad_hwmon', '../../../devices/platform/thinkpad_hwmon') +l('sys/bus/platform/devices/microcode', '../../../devices/platform/microcode') +l('sys/bus/platform/devices/i8042', '../../../devices/platform/i8042') +d('sys/fs', 0o775) +d('sys/fs/fuse', 0o775) +d('sys/fs/fuse/connections', 0o775) +d('sys/fs/fuse/connections/16', 0o775) +f('sys/fs/fuse/connections/16/waiting', 0o664, b'0\n') +f('sys/fs/fuse/connections/16/abort', 0o664, b'') +d('sys/dev', 0o755) +d('sys/dev/char', 0o755) +l('sys/dev/char/4:39', '../../devices/virtual/tty/tty39') +l('sys/dev/char/116:33', '../../devices/virtual/sound/timer') +l('sys/dev/char/10:229', '../../devices/virtual/misc/fuse') +l('sys/dev/char/4:23', '../../devices/virtual/tty/tty23') +l('sys/dev/char/4:19', '../../devices/virtual/tty/tty19') +l('sys/dev/char/252:1', '../../devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00') +l('sys/dev/char/4:48', '../../devices/virtual/tty/tty48') +l('sys/dev/char/7:129', '../../devices/virtual/vc/vcsa1') +l('sys/dev/char/4:34', '../../devices/virtual/tty/tty34') +l('sys/dev/char/189:0', '../../devices/pci0000:00/0000:00:1d.0/usb1') +l('sys/dev/char/4:61', '../../devices/virtual/tty/tty61') +l('sys/dev/char/4:5', '../../devices/virtual/tty/tty5') +l('sys/dev/char/10:1', '../../devices/virtual/misc/psaux') +l('sys/dev/char/4:47', '../../devices/virtual/tty/tty47') +l('sys/dev/char/254:2', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/bsg/7:0:0:0') +l('sys/dev/char/252:7', '../../devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00') +l('sys/dev/char/7:1', '../../devices/virtual/vc/vcs1') +l('sys/dev/char/4:37', '../../devices/virtual/tty/tty37') +l('sys/dev/char/4:3', '../../devices/virtual/tty/tty3') +l('sys/dev/char/252:3', '../../devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00') +l('sys/dev/char/1:3', '../../devices/virtual/mem/null') +l('sys/dev/char/14:12', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/adsp') +l('sys/dev/char/7:0', '../../devices/virtual/vc/vcs') +l('sys/dev/char/252:14', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02') +l('sys/dev/char/4:52', '../../devices/virtual/tty/tty52') +l('sys/dev/char/252:18', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04') +l('sys/dev/char/1:5', '../../devices/virtual/mem/zero') +l('sys/dev/char/13:66', '../../devices/platform/pcspkr/input/input2/event2') +l('sys/dev/char/10:223', '../../devices/virtual/misc/uinput') +l('sys/dev/char/7:2', '../../devices/virtual/vc/vcs2') +l('sys/dev/char/4:40', '../../devices/virtual/tty/tty40') +l('sys/dev/char/4:31', '../../devices/virtual/tty/tty31') +l('sys/dev/char/252:21', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02') +l('sys/dev/char/4:11', '../../devices/virtual/tty/tty11') +l('sys/dev/char/4:17', '../../devices/virtual/tty/tty17') +l('sys/dev/char/252:31', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84') +l('sys/dev/char/189:256', '../../devices/pci0000:00/0000:00:1d.2/usb3') +l('sys/dev/char/252:5', '../../devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00') +l('sys/dev/char/7:4', '../../devices/virtual/vc/vcs4') +l('sys/dev/char/4:38', '../../devices/virtual/tty/tty38') +l('sys/dev/char/4:66', '../../devices/platform/serial8250/tty/ttyS2') +l('sys/dev/char/4:0', '../../devices/virtual/tty/tty0') +l('sys/dev/char/21:0', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_generic/sg0') +l('sys/dev/char/7:134', '../../devices/virtual/vc/vcsa6') +l('sys/dev/char/116:24', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c') +l('sys/dev/char/4:29', '../../devices/virtual/tty/tty29') +l('sys/dev/char/21:2', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_generic/sg2') +l('sys/dev/char/4:27', '../../devices/virtual/tty/tty27') +l('sys/dev/char/4:21', '../../devices/virtual/tty/tty21') +l('sys/dev/char/13:64', '../../devices/platform/i8042/serio0/input/input0/event0') +l('sys/dev/char/252:30', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83') +l('sys/dev/char/4:51', '../../devices/virtual/tty/tty51') +l('sys/dev/char/254:1', '../../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0') +l('sys/dev/char/4:18', '../../devices/virtual/tty/tty18') +l('sys/dev/char/7:3', '../../devices/virtual/vc/vcs3') +l('sys/dev/char/252:32', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02') +l('sys/dev/char/252:27', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81') +l('sys/dev/char/252:12', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81') +l('sys/dev/char/1:1', '../../devices/virtual/mem/mem') +l('sys/dev/char/189:386', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-2') +l('sys/dev/char/10:62', '../../devices/virtual/misc/network_latency') +l('sys/dev/char/252:4', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81') +l('sys/dev/char/5:1', '../../devices/virtual/tty/console') +l('sys/dev/char/1:7', '../../devices/virtual/mem/full') +l('sys/dev/char/7:5', '../../devices/virtual/vc/vcs5') +l('sys/dev/char/4:4', '../../devices/virtual/tty/tty4') +l('sys/dev/char/4:15', '../../devices/virtual/tty/tty15') +l('sys/dev/char/4:9', '../../devices/virtual/tty/tty9') +l('sys/dev/char/4:20', '../../devices/virtual/tty/tty20') +l('sys/dev/char/10:228', '../../devices/virtual/misc/hpet') +l('sys/dev/char/4:59', '../../devices/virtual/tty/tty59') +l('sys/dev/char/252:2', '../../devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81') +l('sys/dev/char/4:7', '../../devices/virtual/tty/tty7') +l('sys/dev/char/4:35', '../../devices/virtual/tty/tty35') +l('sys/dev/char/254:0', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0') +l('sys/dev/char/189:128', '../../devices/pci0000:00/0000:00:1d.1/usb2') +l('sys/dev/char/10:184', '../../devices/virtual/misc/microcode') +l('sys/dev/char/7:131', '../../devices/virtual/vc/vcsa3') +l('sys/dev/char/116:1', '../../devices/virtual/sound/seq') +l('sys/dev/char/252:17', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84') +l('sys/dev/char/10:61', '../../devices/virtual/misc/network_throughput') +l('sys/dev/char/7:130', '../../devices/virtual/vc/vcsa2') +l('sys/dev/char/252:0', '../../devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81') +l('sys/dev/char/4:33', '../../devices/virtual/tty/tty33') +l('sys/dev/char/4:10', '../../devices/virtual/tty/tty10') +l('sys/dev/char/13:71', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/event7') +l('sys/dev/char/252:10', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81') +l('sys/dev/char/253:0', '../../devices/pnp0/00:07/rtc/rtc0') +l('sys/dev/char/252:19', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00') +l('sys/dev/char/7:10', '../../devices/virtual/vc/vcs10') +l('sys/dev/char/4:42', '../../devices/virtual/tty/tty42') +l('sys/dev/char/10:144', '../../devices/virtual/misc/nvram') +l('sys/dev/char/4:63', '../../devices/virtual/tty/tty63') +l('sys/dev/char/252:25', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81') +l('sys/dev/char/189:520', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2') +l('sys/dev/char/4:55', '../../devices/virtual/tty/tty55') +l('sys/dev/char/13:33', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/mouse1') +l('sys/dev/char/13:70', '../../devices/virtual/input/input6/event6') +l('sys/dev/char/252:29', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01') +l('sys/dev/char/4:45', '../../devices/virtual/tty/tty45') +l('sys/dev/char/4:56', '../../devices/virtual/tty/tty56') +l('sys/dev/char/10:60', '../../devices/virtual/misc/device-mapper') +l('sys/dev/char/5:2', '../../devices/virtual/tty/ptmx') +l('sys/dev/char/252:8', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81') +l('sys/dev/char/14:3', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/dsp') +l('sys/dev/char/13:68', '../../devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/event4') +l('sys/dev/char/13:67', '../../devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/event3') +l('sys/dev/char/1:4', '../../devices/virtual/mem/port') +l('sys/dev/char/116:0', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0') +l('sys/dev/char/4:46', '../../devices/virtual/tty/tty46') +l('sys/dev/char/4:41', '../../devices/virtual/tty/tty41') +l('sys/dev/char/189:512', '../../devices/pci0000:00/0000:00:1d.7/usb5') +l('sys/dev/char/4:62', '../../devices/virtual/tty/tty62') +l('sys/dev/char/252:15', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83') +l('sys/dev/char/7:133', '../../devices/virtual/vc/vcsa5') +l('sys/dev/char/4:2', '../../devices/virtual/tty/tty2') +l('sys/dev/char/1:8', '../../devices/virtual/mem/random') +l('sys/dev/char/7:138', '../../devices/virtual/vc/vcsa10') +l('sys/dev/char/4:64', '../../devices/platform/serial8250/tty/ttyS0') +l('sys/dev/char/4:1', '../../devices/virtual/tty/tty1') +l('sys/dev/char/4:28', '../../devices/virtual/tty/tty28') +l('sys/dev/char/13:32', '../../devices/platform/i8042/serio1/input/input1/mouse0') +l('sys/dev/char/4:44', '../../devices/virtual/tty/tty44') +l('sys/dev/char/4:36', '../../devices/virtual/tty/tty36') +l('sys/dev/char/4:43', '../../devices/virtual/tty/tty43') +l('sys/dev/char/7:128', '../../devices/virtual/vc/vcsa') +l('sys/dev/char/4:60', '../../devices/virtual/tty/tty60') +l('sys/dev/char/7:135', '../../devices/virtual/vc/vcsa7') +l('sys/dev/char/4:6', '../../devices/virtual/tty/tty6') +l('sys/dev/char/4:49', '../../devices/virtual/tty/tty49') +l('sys/dev/char/189:518', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1') +l('sys/dev/char/29:0', '../../devices/platform/vesafb.0/graphics/fb0') +l('sys/dev/char/252:23', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00') +l('sys/dev/char/10:227', '../../devices/virtual/misc/mcelog') +l('sys/dev/char/4:14', '../../devices/virtual/tty/tty14') +l('sys/dev/char/4:54', '../../devices/virtual/tty/tty54') +l('sys/dev/char/7:132', '../../devices/virtual/vc/vcsa4') +l('sys/dev/char/5:0', '../../devices/virtual/tty/tty') +l('sys/dev/char/252:26', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00') +l('sys/dev/char/1:2', '../../devices/virtual/mem/kmem') +l('sys/dev/char/189:259', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-1') +l('sys/dev/char/252:11', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02') +l('sys/dev/char/4:26', '../../devices/virtual/tty/tty26') +l('sys/dev/char/252:33', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00') +l('sys/dev/char/4:22', '../../devices/virtual/tty/tty22') +l('sys/dev/char/10:63', '../../devices/virtual/misc/cpu_dma_latency') +l('sys/dev/char/4:13', '../../devices/virtual/tty/tty13') +l('sys/dev/char/116:17', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p') +l('sys/dev/char/116:16', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p') +l('sys/dev/char/252:16', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03') +l('sys/dev/char/4:8', '../../devices/virtual/tty/tty8') +l('sys/dev/char/252:28', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82') +l('sys/dev/char/21:1', '../../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_generic/sg1') +l('sys/dev/char/4:24', '../../devices/virtual/tty/tty24') +l('sys/dev/char/7:7', '../../devices/virtual/vc/vcs7') +l('sys/dev/char/252:20', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81') +l('sys/dev/char/166:0', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0') +l('sys/dev/char/4:58', '../../devices/virtual/tty/tty58') +l('sys/dev/char/4:57', '../../devices/virtual/tty/tty57') +l('sys/dev/char/189:384', '../../devices/pci0000:00/0000:00:1d.3/usb4') +l('sys/dev/char/4:50', '../../devices/virtual/tty/tty50') +l('sys/dev/char/7:6', '../../devices/virtual/vc/vcs6') +l('sys/dev/char/4:25', '../../devices/virtual/tty/tty25') +l('sys/dev/char/4:16', '../../devices/virtual/tty/tty16') +l('sys/dev/char/4:65', '../../devices/platform/serial8250/tty/ttyS1') +l('sys/dev/char/13:65', '../../devices/platform/i8042/serio1/input/input1/event1') +l('sys/dev/char/13:69', '../../devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/event5') +l('sys/dev/char/252:22', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83') +l('sys/dev/char/1:11', '../../devices/virtual/mem/kmsg') +l('sys/dev/char/189:385', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1') +l('sys/dev/char/4:12', '../../devices/virtual/tty/tty12') +l('sys/dev/char/252:13', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82') +l('sys/dev/char/1:9', '../../devices/virtual/mem/urandom') +l('sys/dev/char/4:67', '../../devices/platform/serial8250/tty/ttyS3') +l('sys/dev/char/13:63', '../../devices/virtual/input/mice') +l('sys/dev/char/252:24', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00') +l('sys/dev/char/252:9', '../../devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00') +l('sys/dev/char/4:53', '../../devices/virtual/tty/tty53') +l('sys/dev/char/4:30', '../../devices/virtual/tty/tty30') +l('sys/dev/char/14:4', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/audio') +l('sys/dev/char/14:0', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/mixer') +l('sys/dev/char/252:6', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81') +l('sys/dev/char/4:32', '../../devices/virtual/tty/tty32') +d('sys/dev/block', 0o755) +l('sys/dev/block/7:1', '../../devices/virtual/block/loop1') +l('sys/dev/block/7:0', '../../devices/virtual/block/loop0') +l('sys/dev/block/8:17', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1') +l('sys/dev/block/7:2', '../../devices/virtual/block/loop2') +l('sys/dev/block/7:4', '../../devices/virtual/block/loop4') +l('sys/dev/block/8:8', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8') +l('sys/dev/block/7:3', '../../devices/virtual/block/loop3') +l('sys/dev/block/11:0', '../../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0') +l('sys/dev/block/7:5', '../../devices/virtual/block/loop5') +l('sys/dev/block/8:5', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5') +l('sys/dev/block/8:10', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10') +l('sys/dev/block/8:0', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda') +l('sys/dev/block/8:9', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9') +l('sys/dev/block/8:7', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7') +l('sys/dev/block/8:16', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb') +l('sys/dev/block/9:0', '../../devices/virtual/block/md0') +l('sys/dev/block/7:7', '../../devices/virtual/block/loop7') +l('sys/dev/block/8:6', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6') +l('sys/dev/block/7:6', '../../devices/virtual/block/loop6') +l('sys/dev/block/8:1', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1') +d('sys/module', 0o775) +d('sys/module/arc4', 0o775) +f('sys/module/arc4/initstate', 0o664, b'live\n') +f('sys/module/arc4/srcversion', 0o664, b'0E7B177AF22D87B5B21A577\n') +f('sys/module/arc4/refcnt', 0o664, b'2\n') +d('sys/module/arc4/sections', 0o775) +f('sys/module/arc4/sections/.exit.text', 0o664, b'0xffffffffa006b0dc\n') +f('sys/module/arc4/sections/.note.gnu.build-id', 0o664, b'0xffffffffa006b0f0\n') +f('sys/module/arc4/sections/.strtab', 0o664, b'0xffffffffa006b400\n') +f('sys/module/arc4/sections/.bss', 0o664, b'0xffffffffa006ba00\n') +f('sys/module/arc4/sections/.text', 0o664, b'0xffffffffa006b000\n') +f('sys/module/arc4/sections/.init.text', 0o664, b'0xffffffffa009a000\n') +f('sys/module/arc4/sections/.data', 0o664, b'0xffffffffa006b520\n') +f('sys/module/arc4/sections/.symtab', 0o664, b'0xffffffffa006b118\n') +f('sys/module/arc4/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa006b640\n') +d('sys/module/arc4/notes', 0o775) +f('sys/module/arc4/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00[P \tR\xc2\xa7\xdd\xf0H\xaa\x06\x1a,\xb3\xa1\xa4\x9a\x13G') +d('sys/module/vt', 0o775) +d('sys/module/vt/parameters', 0o775) +f('sys/module/vt/parameters/default_grn', 0o664, b'0,0,170,85,0,0,170,170,85,85,255,255,85,85,255,255\n') +f('sys/module/vt/parameters/default_red', 0o664, b'0,170,0,170,0,170,0,170,85,255,85,255,85,255,85,255\n') +f('sys/module/vt/parameters/italic', 0o664, b'2\n') +f('sys/module/vt/parameters/underline', 0o664, b'3\n') +f('sys/module/vt/parameters/default_blu', 0o664, b'0,0,0,0,170,170,170,170,85,85,85,85,255,255,255,255\n') +f('sys/module/vt/parameters/default_utf8', 0o664, b'1\n') +d('sys/module/cdrom', 0o775) +f('sys/module/cdrom/initstate', 0o664, b'live\n') +f('sys/module/cdrom/srcversion', 0o664, b'D868CCB0789DA27F51280A8\n') +f('sys/module/cdrom/refcnt', 0o664, b'1\n') +d('sys/module/cdrom/holders', 0o775) +l('sys/module/cdrom/holders/sr_mod', '../../sr_mod') +d('sys/module/cdrom/sections', 0o775) +f('sys/module/cdrom/sections/__ksymtab_strings', 0o664, b'0xffffffffa002fe20\n') +f('sys/module/cdrom/sections/.exit.text', 0o664, b'0xffffffffa002e0f8\n') +f('sys/module/cdrom/sections/.note.gnu.build-id', 0o664, b'0xffffffffa002e120\n') +f('sys/module/cdrom/sections/.strtab', 0o664, b'0xffffffffa0030f60\n') +f('sys/module/cdrom/sections/__ksymtab', 0o664, b'0xffffffffa002fc10\n') +f('sys/module/cdrom/sections/.rodata', 0o664, b'0xffffffffa002e160\n') +f('sys/module/cdrom/sections/__param', 0o664, b'0xffffffffa002fd30\n') +f('sys/module/cdrom/sections/.bss', 0o664, b'0xffffffffa0032380\n') +f('sys/module/cdrom/sections/.text', 0o664, b'0xffffffffa0029000\n') +f('sys/module/cdrom/sections/.init.text', 0o664, b'0xffffffffa0034000\n') +f('sys/module/cdrom/sections/__kcrctab', 0o664, b'0xffffffffa002fcd0\n') +f('sys/module/cdrom/sections/.data', 0o664, b'0xffffffffa0031b80\n') +f('sys/module/cdrom/sections/.symtab', 0o664, b'0xffffffffa002fef8\n') +f('sys/module/cdrom/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0031fc0\n') +f('sys/module/cdrom/sections/.rodata.str1.1', 0o664, b'0xffffffffa002f896\n') +d('sys/module/cdrom/notes', 0o775) +f('sys/module/cdrom/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00C\x03\x04\xe9\x8a\x17\x19\x8b\xc7Y\xea\x1a\xa35\x85K\x9e\x1e\xf8=') +d('sys/module/rfkill', 0o775) +f('sys/module/rfkill/version', 0o664, b'1.0\n') +f('sys/module/rfkill/initstate', 0o664, b'live\n') +f('sys/module/rfkill/srcversion', 0o664, b'6B4E68548C57FD365EB4E71\n') +f('sys/module/rfkill/refcnt', 0o664, b'2\n') +d('sys/module/rfkill/holders', 0o775) +l('sys/module/rfkill/holders/thinkpad_acpi', '../../thinkpad_acpi') +d('sys/module/rfkill/parameters', 0o775) +f('sys/module/rfkill/parameters/default_state', 0o664, b'1\n') +d('sys/module/rfkill/sections', 0o775) +f('sys/module/rfkill/sections/__ksymtab_gpl', 0o664, b'0xffffffffa01d9f70\n') +f('sys/module/rfkill/sections/.smp_locks', 0o664, b'0xffffffffa01d9e80\n') +f('sys/module/rfkill/sections/__bug_table', 0o664, b'0xffffffffa01d9e36\n') +f('sys/module/rfkill/sections/__ksymtab_strings', 0o664, b'0xffffffffa01d9fe0\n') +f('sys/module/rfkill/sections/.exit.text', 0o664, b'0xffffffffa01d9c88\n') +f('sys/module/rfkill/sections/.note.gnu.build-id', 0o664, b'0xffffffffa01d9cb0\n') +f('sys/module/rfkill/sections/.strtab', 0o664, b'0xffffffffa01dae08\n') +f('sys/module/rfkill/sections/__ksymtab', 0o664, b'0xffffffffa01d9ee0\n') +f('sys/module/rfkill/sections/.rodata', 0o664, b'0xffffffffa01d9cd8\n') +f('sys/module/rfkill/sections/__param', 0o664, b'0xffffffffa01d9fb8\n') +f('sys/module/rfkill/sections/.bss', 0o664, b'0xffffffffa01dbe00\n') +f('sys/module/rfkill/sections/.text', 0o664, b'0xffffffffa01d9000\n') +f('sys/module/rfkill/sections/.init.text', 0o664, b'0xffffffffa009a000\n') +f('sys/module/rfkill/sections/__kcrctab', 0o664, b'0xffffffffa01d9f40\n') +f('sys/module/rfkill/sections/.data', 0o664, b'0xffffffffa01db780\n') +f('sys/module/rfkill/sections/.symtab', 0o664, b'0xffffffffa01da088\n') +f('sys/module/rfkill/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa01dba40\n') +f('sys/module/rfkill/sections/.rodata.str1.1', 0o664, b'0xffffffffa01d9d36\n') +f('sys/module/rfkill/sections/__kcrctab_gpl', 0o664, b'0xffffffffa01d9fa0\n') +d('sys/module/rfkill/notes', 0o775) +f('sys/module/rfkill/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xd1\x1fs\x98\x9b\x97\xc4\xec\x9dd\xac:\x94m\x1e\xc0Y\xcfd"') +d('sys/module/uinput', 0o775) +f('sys/module/uinput/version', 0o664, b'0.3\n') +f('sys/module/uinput/initstate', 0o664, b'live\n') +f('sys/module/uinput/srcversion', 0o664, b'2C3E0DB9E2496AD70174B85\n') +f('sys/module/uinput/refcnt', 0o664, b'0\n') +d('sys/module/uinput/sections', 0o775) +f('sys/module/uinput/sections/.smp_locks', 0o664, b'0xffffffffa0206448\n') +f('sys/module/uinput/sections/.exit.text', 0o664, b'0xffffffffa0206278\n') +f('sys/module/uinput/sections/.note.gnu.build-id', 0o664, b'0xffffffffa020628c\n') +f('sys/module/uinput/sections/.strtab', 0o664, b'0xffffffffa0206c88\n') +f('sys/module/uinput/sections/.rodata', 0o664, b'0xffffffffa02062c0\n') +f('sys/module/uinput/sections/.bss', 0o664, b'0xffffffffa02074c0\n') +f('sys/module/uinput/sections/.text', 0o664, b'0xffffffffa0205000\n') +f('sys/module/uinput/sections/.init.text', 0o664, b'0xffffffffa0070000\n') +f('sys/module/uinput/sections/.data', 0o664, b'0xffffffffa02070c0\n') +f('sys/module/uinput/sections/.symtab', 0o664, b'0xffffffffa0206490\n') +f('sys/module/uinput/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0207100\n') +f('sys/module/uinput/sections/.rodata.str1.1', 0o664, b'0xffffffffa0206398\n') +d('sys/module/uinput/notes', 0o775) +f('sys/module/uinput/notes/.note.gnu.build-id', 0o664, b"\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00'\n{\xdf\xe9m\x80\xea\xa8k\x8f=\x90\x8c\xe1\xf7{\x06\x15S") +d('sys/module/fuse', 0o775) +f('sys/module/fuse/initstate', 0o664, b'live\n') +f('sys/module/fuse/srcversion', 0o664, b'A6C92EE44A51B1B0DC4377D\n') +f('sys/module/fuse/refcnt', 0o664, b'3\n') +d('sys/module/fuse/sections', 0o775) +f('sys/module/fuse/sections/.smp_locks', 0o664, b'0xffffffffa0249d78\n') +f('sys/module/fuse/sections/__bug_table', 0o664, b'0xffffffffa024a032\n') +f('sys/module/fuse/sections/.exit.text', 0o664, b'0xffffffffa02493d0\n') +f('sys/module/fuse/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0249414\n') +f('sys/module/fuse/sections/.strtab', 0o664, b'0xffffffffa024c4e8\n') +f('sys/module/fuse/sections/.rodata', 0o664, b'0xffffffffa0249440\n') +f('sys/module/fuse/sections/.bss', 0o664, b'0xffffffffa024e300\n') +f('sys/module/fuse/sections/.text', 0o664, b'0xffffffffa0240000\n') +f('sys/module/fuse/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/fuse/sections/.data', 0o664, b'0xffffffffa024dba0\n') +f('sys/module/fuse/sections/.symtab', 0o664, b'0xffffffffa024a208\n') +f('sys/module/fuse/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa024df40\n') +f('sys/module/fuse/sections/.rodata.str1.1', 0o664, b'0xffffffffa0249e50\n') +d('sys/module/fuse/notes', 0o775) +f('sys/module/fuse/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\x7fh\xfe:\x1f\xc6\xddW\x96\x80\x16\x9fK\x7f\xba,\x8a\xc6\xf6E') +d('sys/module/hid', 0o775) +d('sys/module/hid/parameters', 0o775) +f('sys/module/hid/parameters/pb_fnmode', 0o664, b'1\n') +d('sys/module/uhci_hcd', 0o775) +f('sys/module/uhci_hcd/initstate', 0o664, b'live\n') +f('sys/module/uhci_hcd/srcversion', 0o664, b'E3F4B6BEC99D6670259FCC9\n') +f('sys/module/uhci_hcd/refcnt', 0o664, b'0\n') +d('sys/module/uhci_hcd/drivers', 0o775) +l('sys/module/uhci_hcd/drivers/pci:uhci_hcd', '../../../bus/pci/drivers/uhci_hcd') +d('sys/module/uhci_hcd/parameters', 0o775) +f('sys/module/uhci_hcd/parameters/ignore_oc', 0o664, b'N\n') +d('sys/module/uhci_hcd/sections', 0o775) +f('sys/module/uhci_hcd/sections/.smp_locks', 0o664, b'0xffffffffa00c6850\n') +f('sys/module/uhci_hcd/sections/.exit.text', 0o664, b'0xffffffffa00c621c\n') +f('sys/module/uhci_hcd/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00c6254\n') +f('sys/module/uhci_hcd/sections/.strtab', 0o664, b'0xffffffffa00c7690\n') +f('sys/module/uhci_hcd/sections/.rodata', 0o664, b'0xffffffffa00c6280\n') +f('sys/module/uhci_hcd/sections/__param', 0o664, b'0xffffffffa00c6888\n') +f('sys/module/uhci_hcd/sections/.bss', 0o664, b'0xffffffffa00c8400\n') +f('sys/module/uhci_hcd/sections/.text', 0o664, b'0xffffffffa00c2000\n') +f('sys/module/uhci_hcd/sections/.init.text', 0o664, b'0xffffffffa0027000\n') +f('sys/module/uhci_hcd/sections/.data', 0o664, b'0xffffffffa00c7ee0\n') +f('sys/module/uhci_hcd/sections/.symtab', 0o664, b'0xffffffffa00c68b0\n') +f('sys/module/uhci_hcd/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00c8040\n') +f('sys/module/uhci_hcd/sections/.rodata.str1.1', 0o664, b'0xffffffffa00c67d2\n') +d('sys/module/uhci_hcd/notes', 0o775) +f('sys/module/uhci_hcd/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00t\xd0\xa5\xd2A\xa2\x874\x12\xb5\xf6\x9c\xff\xb9\xee`\x8d\x9f[\x04') +d('sys/module/crypto_blkcipher', 0o775) +f('sys/module/crypto_blkcipher/initstate', 0o664, b'live\n') +f('sys/module/crypto_blkcipher/srcversion', 0o664, b'723F00BD2391209F4D65272\n') +f('sys/module/crypto_blkcipher/refcnt', 0o664, b'1\n') +d('sys/module/crypto_blkcipher/holders', 0o775) +l('sys/module/crypto_blkcipher/holders/ecb', '../../ecb') +d('sys/module/crypto_blkcipher/sections', 0o775) +f('sys/module/crypto_blkcipher/sections/__ksymtab_gpl', 0o664, b'0xffffffffa01f1610\n') +f('sys/module/crypto_blkcipher/sections/.smp_locks', 0o664, b'0xffffffffa01f18c0\n') +f('sys/module/crypto_blkcipher/sections/__bug_table', 0o664, b'0xffffffffa01f185f\n') +f('sys/module/crypto_blkcipher/sections/__ksymtab_strings', 0o664, b'0xffffffffa01f1748\n') +f('sys/module/crypto_blkcipher/sections/.exit.text', 0o664, b'0xffffffffa01f138c\n') +f('sys/module/crypto_blkcipher/sections/.note.gnu.build-id', 0o664, b'0xffffffffa01f13b0\n') +f('sys/module/crypto_blkcipher/sections/.strtab', 0o664, b'0xffffffffa01f2b10\n') +f('sys/module/crypto_blkcipher/sections/.rodata', 0o664, b'0xffffffffa01f13e0\n') +f('sys/module/crypto_blkcipher/sections/.bss', 0o664, b'0xffffffffa01f3ec0\n') +f('sys/module/crypto_blkcipher/sections/.text', 0o664, b'0xffffffffa01ef000\n') +f('sys/module/crypto_blkcipher/sections/.init.text', 0o664, b'0xffffffffa0027000\n') +f('sys/module/crypto_blkcipher/sections/.data', 0o664, b'0xffffffffa01f39e0\n') +f('sys/module/crypto_blkcipher/sections/.symtab', 0o664, b'0xffffffffa01f18f8\n') +f('sys/module/crypto_blkcipher/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa01f3b00\n') +f('sys/module/crypto_blkcipher/sections/.rodata.str1.1', 0o664, b'0xffffffffa01f1440\n') +f('sys/module/crypto_blkcipher/sections/__kcrctab_gpl', 0o664, b'0xffffffffa01f16e0\n') +d('sys/module/crypto_blkcipher/notes', 0o775) +f('sys/module/crypto_blkcipher/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00-_P~\xd2\x1eM\xee\xb0!\xc0\xd8\xb7\x00\x1b\xe4#-\xc8\xe0') +d('sys/module/soundcore', 0o775) +f('sys/module/soundcore/initstate', 0o664, b'live\n') +f('sys/module/soundcore/srcversion', 0o664, b'E4F49ED9C4CFD1A5A923330\n') +f('sys/module/soundcore/refcnt', 0o664, b'1\n') +d('sys/module/soundcore/holders', 0o775) +l('sys/module/soundcore/holders/snd', '../../snd') +d('sys/module/soundcore/sections', 0o775) +f('sys/module/soundcore/sections/__ksymtab_strings', 0o664, b'0xffffffffa0067bf0\n') +f('sys/module/soundcore/sections/.exit.text', 0o664, b'0xffffffffa0067850\n') +f('sys/module/soundcore/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0067874\n') +f('sys/module/soundcore/sections/.strtab', 0o664, b'0xffffffffa00686d0\n') +f('sys/module/soundcore/sections/__ksymtab', 0o664, b'0xffffffffa0067b00\n') +f('sys/module/soundcore/sections/.rodata', 0o664, b'0xffffffffa00678a0\n') +f('sys/module/soundcore/sections/.bss', 0o664, b'0xffffffffa00692c0\n') +f('sys/module/soundcore/sections/.text', 0o664, b'0xffffffffa0067000\n') +f('sys/module/soundcore/sections/.init.text', 0o664, b'0xffffffffa006b000\n') +f('sys/module/soundcore/sections/__kcrctab', 0o664, b'0xffffffffa0067ba0\n') +f('sys/module/soundcore/sections/.data', 0o664, b'0xffffffffa0068ec0\n') +f('sys/module/soundcore/sections/.symtab', 0o664, b'0xffffffffa0067cc8\n') +f('sys/module/soundcore/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0068f00\n') +f('sys/module/soundcore/sections/.rodata.str1.1', 0o664, b'0xffffffffa00679f8\n') +d('sys/module/soundcore/notes', 0o775) +f('sys/module/soundcore/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00^\x97fIs2\xf4Ck\xe0$]\xd8)]\xe2\x9c\xea\x1d\x0c') +d('sys/module/pcspkr', 0o775) +f('sys/module/pcspkr/initstate', 0o664, b'live\n') +f('sys/module/pcspkr/srcversion', 0o664, b'5757E9C81E627525BA9D165\n') +f('sys/module/pcspkr/refcnt', 0o664, b'0\n') +d('sys/module/pcspkr/drivers', 0o775) +l('sys/module/pcspkr/drivers/platform:pcspkr', '../../../bus/platform/drivers/pcspkr') +d('sys/module/pcspkr/sections', 0o775) +f('sys/module/pcspkr/sections/.exit.text', 0o664, b'0xffffffffa009e15c\n') +f('sys/module/pcspkr/sections/.note.gnu.build-id', 0o664, b'0xffffffffa009e250\n') +f('sys/module/pcspkr/sections/.strtab', 0o664, b'0xffffffffa009e6e8\n') +f('sys/module/pcspkr/sections/.devexit.text', 0o664, b'0xffffffffa009e16e\n') +f('sys/module/pcspkr/sections/.bss', 0o664, b'0xffffffffa009ed80\n') +f('sys/module/pcspkr/sections/.text', 0o664, b'0xffffffffa009e000\n') +f('sys/module/pcspkr/sections/.init.text', 0o664, b'0xffffffffa00a0000\n') +f('sys/module/pcspkr/sections/.data', 0o664, b'0xffffffffa009e900\n') +f('sys/module/pcspkr/sections/.devinit.text', 0o664, b'0xffffffffa009e1ad\n') +f('sys/module/pcspkr/sections/.symtab', 0o664, b'0xffffffffa009e298\n') +f('sys/module/pcspkr/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa009e9c0\n') +f('sys/module/pcspkr/sections/.rodata.str1.1', 0o664, b'0xffffffffa009e274\n') +d('sys/module/pcspkr/notes', 0o775) +f('sys/module/pcspkr/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xe3\xfd\xb1\xf7b\xd2\x8f\xc1\xd2C\xfc\xfe\xdf8\x80\x82\x85A\xc9!') +d('sys/module/sr_mod', 0o775) +f('sys/module/sr_mod/initstate', 0o664, b'live\n') +f('sys/module/sr_mod/srcversion', 0o664, b'3484F077F1A71803F453437\n') +f('sys/module/sr_mod/refcnt', 0o664, b'0\n') +d('sys/module/sr_mod/parameters', 0o775) +f('sys/module/sr_mod/parameters/xa_test', 0o664, b'0\n') +d('sys/module/sr_mod/sections', 0o775) +f('sys/module/sr_mod/sections/.smp_locks', 0o664, b'0xffffffffa0061488\n') +f('sys/module/sr_mod/sections/.exit.text', 0o664, b'0xffffffffa006126c\n') +f('sys/module/sr_mod/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0061290\n') +f('sys/module/sr_mod/sections/.strtab', 0o664, b'0xffffffffa00623f0\n') +f('sys/module/sr_mod/sections/.rodata', 0o664, b'0xffffffffa00612c0\n') +f('sys/module/sr_mod/sections/__param', 0o664, b'0xffffffffa0061750\n') +f('sys/module/sr_mod/sections/.bss', 0o664, b'0xffffffffa00630c0\n') +f('sys/module/sr_mod/sections/.text', 0o664, b'0xffffffffa005f000\n') +f('sys/module/sr_mod/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/sr_mod/sections/.data', 0o664, b'0xffffffffa0062aa0\n') +f('sys/module/sr_mod/sections/.symtab', 0o664, b'0xffffffffa0061778\n') +f('sys/module/sr_mod/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0062d00\n') +f('sys/module/sr_mod/sections/.rodata.str1.1', 0o664, b'0xffffffffa0061308\n') +d('sys/module/sr_mod/notes', 0o775) +f('sys/module/sr_mod/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xae\xa7\xdcHo\xe7\xe1\xa0#\x94\x9a\xfeV8\xa6O$@\xc1(') +d('sys/module/cfg80211', 0o775) +f('sys/module/cfg80211/initstate', 0o664, b'live\n') +f('sys/module/cfg80211/srcversion', 0o664, b'C43F275505B181F0D1625BE\n') +f('sys/module/cfg80211/refcnt', 0o664, b'2\n') +d('sys/module/cfg80211/holders', 0o775) +l('sys/module/cfg80211/holders/mac80211', '../../mac80211') +l('sys/module/cfg80211/holders/iwl3945', '../../iwl3945') +d('sys/module/cfg80211/parameters', 0o775) +f('sys/module/cfg80211/parameters/ieee80211_regdom', 0o664, b'US\n') +d('sys/module/cfg80211/sections', 0o775) +f('sys/module/cfg80211/sections/.smp_locks', 0o664, b'0xffffffffa00bd2a0\n') +f('sys/module/cfg80211/sections/__bug_table', 0o664, b'0xffffffffa00bd166\n') +f('sys/module/cfg80211/sections/__ksymtab_strings', 0o664, b'0xffffffffa00bd448\n') +f('sys/module/cfg80211/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00bce58\n') +f('sys/module/cfg80211/sections/.strtab', 0o664, b'0xffffffffa00be8c0\n') +f('sys/module/cfg80211/sections/__ksymtab', 0o664, b'0xffffffffa00bd370\n') +f('sys/module/cfg80211/sections/.rodata', 0o664, b'0xffffffffa00bce80\n') +f('sys/module/cfg80211/sections/.data.read_mostly', 0o664, b'0xffffffffa00bfe60\n') +f('sys/module/cfg80211/sections/__param', 0o664, b'0xffffffffa00bd518\n') +f('sys/module/cfg80211/sections/.bss', 0o664, b'0xffffffffa00c02c0\n') +f('sys/module/cfg80211/sections/.text', 0o664, b'0xffffffffa00b9000\n') +f('sys/module/cfg80211/sections/__kcrctab', 0o664, b'0xffffffffa00bd400\n') +f('sys/module/cfg80211/sections/.data', 0o664, b'0xffffffffa00bf760\n') +f('sys/module/cfg80211/sections/.symtab', 0o664, b'0xffffffffa00bd540\n') +f('sys/module/cfg80211/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00bff00\n') +f('sys/module/cfg80211/sections/.rodata.str1.1', 0o664, b'0xffffffffa00bd078\n') +d('sys/module/cfg80211/notes', 0o775) +f('sys/module/cfg80211/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00}-\xdb\xa6\xb1\xf6I\x90\xaf\xbdX\xed\x8d\xac\x86o(\xc8zC') +d('sys/module/snd_seq', 0o775) +f('sys/module/snd_seq/initstate', 0o664, b'live\n') +f('sys/module/snd_seq/srcversion', 0o664, b'94E19F6DBC8F63B241414FE\n') +f('sys/module/snd_seq/refcnt', 0o664, b'0\n') +d('sys/module/snd_seq/parameters', 0o775) +f('sys/module/snd_seq/parameters/seq_default_timer_device', 0o664, b'0\n') +f('sys/module/snd_seq/parameters/seq_default_timer_class', 0o664, b'1\n') +f('sys/module/snd_seq/parameters/seq_client_load', 0o664, b'-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1\n') +f('sys/module/snd_seq/parameters/seq_default_timer_sclass', 0o664, b'0\n') +f('sys/module/snd_seq/parameters/seq_default_timer_resolution', 0o664, b'0\n') +f('sys/module/snd_seq/parameters/seq_default_timer_subdevice', 0o664, b'0\n') +f('sys/module/snd_seq/parameters/seq_default_timer_card', 0o664, b'-1\n') +d('sys/module/snd_seq/sections', 0o775) +f('sys/module/snd_seq/sections/.smp_locks', 0o664, b'0xffffffffa02b1d30\n') +f('sys/module/snd_seq/sections/__ksymtab_strings', 0o664, b'0xffffffffa02b1748\n') +f('sys/module/snd_seq/sections/.exit.text', 0o664, b'0xffffffffa02b0ff0\n') +f('sys/module/snd_seq/sections/.note.gnu.build-id', 0o664, b'0xffffffffa02b10bc\n') +f('sys/module/snd_seq/sections/.strtab', 0o664, b'0xffffffffa02b4590\n') +f('sys/module/snd_seq/sections/__ksymtab', 0o664, b'0xffffffffa02b1610\n') +f('sys/module/snd_seq/sections/.rodata', 0o664, b'0xffffffffa02b10e0\n') +f('sys/module/snd_seq/sections/__param', 0o664, b'0xffffffffa02b1320\n') +f('sys/module/snd_seq/sections/.bss', 0o664, b'0xffffffffa02b6f80\n') +f('sys/module/snd_seq/sections/.text', 0o664, b'0xffffffffa02a9000\n') +f('sys/module/snd_seq/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/snd_seq/sections/__kcrctab', 0o664, b'0xffffffffa02b16e0\n') +f('sys/module/snd_seq/sections/.data', 0o664, b'0xffffffffa02b6860\n') +f('sys/module/snd_seq/sections/.symtab', 0o664, b'0xffffffffa02b1fc8\n') +f('sys/module/snd_seq/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02b6bc0\n') +f('sys/module/snd_seq/sections/.rodata.str1.1', 0o664, b'0xffffffffa02b18b6\n') +d('sys/module/snd_seq/notes', 0o775) +f('sys/module/snd_seq/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00O@T\xdaF\x1cl\x11\xfev\xdd\xaa \xea\x87\x92P\xfe\xb1\xf8') +d('sys/module/usb_storage', 0o775) +f('sys/module/usb_storage/initstate', 0o664, b'live\n') +f('sys/module/usb_storage/srcversion', 0o664, b'D07F7C47643AB7AFB6BEF6F\n') +f('sys/module/usb_storage/refcnt', 0o664, b'1\n') +d('sys/module/usb_storage/drivers', 0o775) +l('sys/module/usb_storage/drivers/usb:usb-storage', '../../../bus/usb/drivers/usb-storage') +d('sys/module/usb_storage/parameters', 0o775) +f('sys/module/usb_storage/parameters/swi_tru_install', 0o664, b'1\n') +f('sys/module/usb_storage/parameters/delay_use', 0o664, b'5\n') +d('sys/module/usb_storage/sections', 0o775) +f('sys/module/usb_storage/sections/.smp_locks', 0o664, b'0xffffffffa02e1820\n') +f('sys/module/usb_storage/sections/.exit.text', 0o664, b'0xffffffffa02e056c\n') +f('sys/module/usb_storage/sections/.note.gnu.build-id', 0o664, b'0xffffffffa02e0580\n') +f('sys/module/usb_storage/sections/.strtab', 0o664, b'0xffffffffa02e42d0\n') +f('sys/module/usb_storage/sections/.rodata', 0o664, b'0xffffffffa02e05b0\n') +f('sys/module/usb_storage/sections/__param', 0o664, b'0xffffffffa02e18b0\n') +f('sys/module/usb_storage/sections/.bss', 0o664, b'0xffffffffa02e9400\n') +f('sys/module/usb_storage/sections/.text', 0o664, b'0xffffffffa02dd000\n') +f('sys/module/usb_storage/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/usb_storage/sections/.data', 0o664, b'0xffffffffa02e5dc0\n') +f('sys/module/usb_storage/sections/.symtab', 0o664, b'0xffffffffa02e1900\n') +f('sys/module/usb_storage/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02e9040\n') +f('sys/module/usb_storage/sections/.rodata.str1.1', 0o664, b'0xffffffffa02e0ab1\n') +d('sys/module/usb_storage/notes', 0o775) +f('sys/module/usb_storage/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00B~(&&u\xc4Ax\xd8|\x80n\xc4G(i\xf3kG') +d('sys/module/acpi_cpufreq', 0o775) +f('sys/module/acpi_cpufreq/initstate', 0o664, b'live\n') +f('sys/module/acpi_cpufreq/srcversion', 0o664, b'09166B6001DCE2189668F16\n') +f('sys/module/acpi_cpufreq/refcnt', 0o664, b'1\n') +d('sys/module/acpi_cpufreq/parameters', 0o775) +f('sys/module/acpi_cpufreq/parameters/acpi_pstate_strict', 0o664, b'0\n') +d('sys/module/acpi_cpufreq/sections', 0o775) +f('sys/module/acpi_cpufreq/sections/.smp_locks', 0o664, b'0xffffffffa0254d68\n') +f('sys/module/acpi_cpufreq/sections/.exit.text', 0o664, b'0xffffffffa0254c4c\n') +f('sys/module/acpi_cpufreq/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0254c6c\n') +f('sys/module/acpi_cpufreq/sections/.strtab', 0o664, b'0xffffffffa0255620\n') +f('sys/module/acpi_cpufreq/sections/.rodata', 0o664, b'0xffffffffa0254ca0\n') +f('sys/module/acpi_cpufreq/sections/__param', 0o664, b'0xffffffffa0254d70\n') +f('sys/module/acpi_cpufreq/sections/.bss', 0o664, b'0xffffffffa0256000\n') +f('sys/module/acpi_cpufreq/sections/.text', 0o664, b'0xffffffffa0254000\n') +f('sys/module/acpi_cpufreq/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/acpi_cpufreq/sections/.data', 0o664, b'0xffffffffa0255bc0\n') +f('sys/module/acpi_cpufreq/sections/.symtab', 0o664, b'0xffffffffa0254dc8\n') +f('sys/module/acpi_cpufreq/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0255c40\n') +f('sys/module/acpi_cpufreq/sections/.rodata.str1.1', 0o664, b'0xffffffffa0254d98\n') +d('sys/module/acpi_cpufreq/notes', 0o775) +f('sys/module/acpi_cpufreq/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xa4\xfd\x13\xe7*\xbd\x99\x95\x99C\xf6\x95\x04\xf1r\xf9\xf7}aL') +d('sys/module/button', 0o775) +f('sys/module/button/initstate', 0o664, b'live\n') +f('sys/module/button/srcversion', 0o664, b'2713981C971D8EC4C059338\n') +f('sys/module/button/refcnt', 0o664, b'0\n') +d('sys/module/button/sections', 0o775) +f('sys/module/button/sections/.smp_locks', 0o664, b'0xffffffffa00a7c98\n') +f('sys/module/button/sections/.exit.text', 0o664, b'0xffffffffa00a781c\n') +f('sys/module/button/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00a7898\n') +f('sys/module/button/sections/.strtab', 0o664, b'0xffffffffa00a84d8\n') +f('sys/module/button/sections/.rodata', 0o664, b'0xffffffffa00a78c0\n') +f('sys/module/button/sections/.bss', 0o664, b'0xffffffffa00a8f40\n') +f('sys/module/button/sections/.text', 0o664, b'0xffffffffa00a7000\n') +f('sys/module/button/sections/.init.text', 0o664, b'0xffffffffa00aa000\n') +f('sys/module/button/sections/.data', 0o664, b'0xffffffffa00a89e0\n') +f('sys/module/button/sections/.symtab', 0o664, b'0xffffffffa00a7cb0\n') +f('sys/module/button/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00a8b80\n') +f('sys/module/button/sections/.rodata.str1.1', 0o664, b'0xffffffffa00a7b60\n') +d('sys/module/button/notes', 0o775) +f('sys/module/button/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00;\xc1\xa4qIi\xa7\xa0g\x7fb\xcb\xb4\xba\x80\xb1\x17Z#\xb5') +d('sys/module/processor', 0o775) +f('sys/module/processor/initstate', 0o664, b'live\n') +f('sys/module/processor/srcversion', 0o664, b'8A1C302AFF80867DBAC4684\n') +f('sys/module/processor/refcnt', 0o664, b'4\n') +d('sys/module/processor/holders', 0o775) +l('sys/module/processor/holders/acpi_cpufreq', '../../acpi_cpufreq') +l('sys/module/processor/holders/thermal', '../../thermal') +d('sys/module/processor/parameters', 0o775) +f('sys/module/processor/parameters/ignore_ppc', 0o664, b'0\n') +f('sys/module/processor/parameters/latency_factor', 0o664, b'2\n') +d('sys/module/processor/sections', 0o775) +f('sys/module/processor/sections/.smp_locks', 0o664, b'0xffffffffa0077788\n') +f('sys/module/processor/sections/__ex_table', 0o664, b'0xffffffffa0077768\n') +f('sys/module/processor/sections/__bug_table', 0o664, b'0xffffffffa0077621\n') +f('sys/module/processor/sections/__ksymtab_strings', 0o664, b'0xffffffffa00776b8\n') +f('sys/module/processor/sections/.exit.text', 0o664, b'0xffffffffa00763a9\n') +f('sys/module/processor/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00765c4\n') +f('sys/module/processor/sections/.strtab', 0o664, b'0xffffffffa0079438\n') +f('sys/module/processor/sections/.fixup', 0o664, b'0xffffffffa00765ad\n') +f('sys/module/processor/sections/__ksymtab', 0o664, b'0xffffffffa0077640\n') +f('sys/module/processor/sections/.rodata', 0o664, b'0xffffffffa00765f0\n') +f('sys/module/processor/sections/.data.read_mostly', 0o664, b'0xffffffffa007b7d8\n') +f('sys/module/processor/sections/__param', 0o664, b'0xffffffffa00777f0\n') +f('sys/module/processor/sections/.bss', 0o664, b'0xffffffffa007bbc0\n') +f('sys/module/processor/sections/.text', 0o664, b'0xffffffffa0072000\n') +f('sys/module/processor/sections/.init.text', 0o664, b'0xffffffffa007d000\n') +f('sys/module/processor/sections/__kcrctab', 0o664, b'0xffffffffa0077690\n') +f('sys/module/processor/sections/.data', 0o664, b'0xffffffffa007ab90\n') +f('sys/module/processor/sections/.cpuinit.data', 0o664, b'0xffffffffa007b040\n') +f('sys/module/processor/sections/.symtab', 0o664, b'0xffffffffa0077890\n') +f('sys/module/processor/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa007b800\n') +f('sys/module/processor/sections/.rodata.str1.1', 0o664, b'0xffffffffa0076863\n') +f('sys/module/processor/sections/.cpuinit.text', 0o664, b'0xffffffffa0075abc\n') +f('sys/module/processor/sections/.ref.text', 0o664, b'0xffffffffa007641a\n') +d('sys/module/processor/notes', 0o775) +f('sys/module/processor/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xa1\x01$C\tS,+Ue\\\x8cg\xb0Z\xe9\xa1\xaf[\xe5') +d('sys/module/oprofile', 0o775) +d('sys/module/oprofile/parameters', 0o775) +f('sys/module/oprofile/parameters/timer', 0o664, b'0\n') +d('sys/module/spurious', 0o775) +d('sys/module/spurious/parameters', 0o775) +f('sys/module/spurious/parameters/noirqdebug', 0o664, b'N\n') +f('sys/module/spurious/parameters/irqfixup', 0o664, b'0\n') +d('sys/module/raid1', 0o775) +f('sys/module/raid1/initstate', 0o664, b'live\n') +f('sys/module/raid1/srcversion', 0o664, b'EA08FDD37C2EEFA95DE4413\n') +f('sys/module/raid1/refcnt', 0o664, b'1\n') +d('sys/module/raid1/sections', 0o775) +f('sys/module/raid1/sections/.smp_locks', 0o664, b'0xffffffffa0236438\n') +f('sys/module/raid1/sections/__bug_table', 0o664, b'0xffffffffa02369c0\n') +f('sys/module/raid1/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0236414\n') +f('sys/module/raid1/sections/.strtab', 0o664, b'0xffffffffa02376f8\n') +f('sys/module/raid1/sections/.bss', 0o664, b'0xffffffffa0238280\n') +f('sys/module/raid1/sections/.text', 0o664, b'0xffffffffa0232000\n') +f('sys/module/raid1/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/raid1/sections/.data', 0o664, b'0xffffffffa0237e20\n') +f('sys/module/raid1/sections/.symtab', 0o664, b'0xffffffffa0236a08\n') +f('sys/module/raid1/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0237ec0\n') +f('sys/module/raid1/sections/.rodata.str1.1', 0o664, b'0xffffffffa0236618\n') +d('sys/module/raid1/notes', 0o775) +f('sys/module/raid1/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xcd\xdf0\xe8v}\x0cuP}\x93\xe1\x19\xcd\xed~\xf7\x14\xdd@') +d('sys/module/edd', 0o775) +f('sys/module/edd/version', 0o664, b'0.16\n') +f('sys/module/edd/initstate', 0o664, b'live\n') +f('sys/module/edd/srcversion', 0o664, b'ED68C1ACC4B2D1B19C7BEA7\n') +f('sys/module/edd/refcnt', 0o664, b'0\n') +d('sys/module/edd/sections', 0o775) +f('sys/module/edd/sections/.exit.text', 0o664, b'0xffffffffa02a1de8\n') +f('sys/module/edd/sections/.note.gnu.build-id', 0o664, b'0xffffffffa02a1e6c\n') +f('sys/module/edd/sections/.strtab', 0o664, b'0xffffffffa02a2b88\n') +f('sys/module/edd/sections/.rodata', 0o664, b'0xffffffffa02a1ea0\n') +f('sys/module/edd/sections/.bss', 0o664, b'0xffffffffa02a3880\n') +f('sys/module/edd/sections/.text', 0o664, b'0xffffffffa02a1000\n') +f('sys/module/edd/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/edd/sections/.data', 0o664, b'0xffffffffa02a3120\n') +f('sys/module/edd/sections/.symtab', 0o664, b'0xffffffffa02a22b8\n') +f('sys/module/edd/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02a34c0\n') +f('sys/module/edd/sections/.rodata.str1.1', 0o664, b'0xffffffffa02a1f18\n') +d('sys/module/edd/notes', 0o775) +f('sys/module/edd/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xbe\x92\xcfW\xc8l\x08\xaf\xb6\x1a\xb7!E\xb8\xd1\x9eU\xd2\xddM') +d('sys/module/hwmon', 0o775) +f('sys/module/hwmon/initstate', 0o664, b'live\n') +f('sys/module/hwmon/srcversion', 0o664, b'9344A0FAA4A298DC9AEBDC8\n') +f('sys/module/hwmon/refcnt', 0o664, b'1\n') +d('sys/module/hwmon/holders', 0o775) +l('sys/module/hwmon/holders/thinkpad_acpi', '../../thinkpad_acpi') +d('sys/module/hwmon/sections', 0o775) +f('sys/module/hwmon/sections/__ksymtab_gpl', 0o664, b'0xffffffffa007d1d0\n') +f('sys/module/hwmon/sections/__ksymtab_strings', 0o664, b'0xffffffffa007d200\n') +f('sys/module/hwmon/sections/.exit.text', 0o664, b'0xffffffffa007d138\n') +f('sys/module/hwmon/sections/.note.gnu.build-id', 0o664, b'0xffffffffa007d14c\n') +f('sys/module/hwmon/sections/.strtab', 0o664, b'0xffffffffa007d770\n') +f('sys/module/hwmon/sections/.bss', 0o664, b'0xffffffffa007de80\n') +f('sys/module/hwmon/sections/.text', 0o664, b'0xffffffffa007d000\n') +f('sys/module/hwmon/sections/.init.text', 0o664, b'0xffffffffa009a000\n') +f('sys/module/hwmon/sections/.data', 0o664, b'0xffffffffa007da20\n') +f('sys/module/hwmon/sections/.symtab', 0o664, b'0xffffffffa007d230\n') +f('sys/module/hwmon/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa007dac0\n') +f('sys/module/hwmon/sections/.rodata.str1.1', 0o664, b'0xffffffffa007d170\n') +f('sys/module/hwmon/sections/__kcrctab_gpl', 0o664, b'0xffffffffa007d1f0\n') +d('sys/module/hwmon/notes', 0o775) +f('sys/module/hwmon/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\x0fR\x0b\x94!\x19\xde\x14\x93\xac\x9e@\xa2&\xcam,\xba\x12\xd1') +d('sys/module/backlight', 0o775) +f('sys/module/backlight/initstate', 0o664, b'live\n') +f('sys/module/backlight/srcversion', 0o664, b'AFD1565C65F3DA6D942CB52\n') +f('sys/module/backlight/refcnt', 0o664, b'1\n') +d('sys/module/backlight/holders', 0o775) +l('sys/module/backlight/holders/thinkpad_acpi', '../../thinkpad_acpi') +d('sys/module/backlight/sections', 0o775) +f('sys/module/backlight/sections/__ksymtab_strings', 0o664, b'0xffffffffa0131700\n') +f('sys/module/backlight/sections/.exit.text', 0o664, b'0xffffffffa01315ec\n') +f('sys/module/backlight/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0131600\n') +f('sys/module/backlight/sections/.strtab', 0o664, b'0xffffffffa0131de0\n') +f('sys/module/backlight/sections/__ksymtab', 0o664, b'0xffffffffa01316d0\n') +f('sys/module/backlight/sections/.bss', 0o664, b'0xffffffffa01326c0\n') +f('sys/module/backlight/sections/.text', 0o664, b'0xffffffffa0131000\n') +f('sys/module/backlight/sections/.init.text', 0o664, b'0xffffffffa0070000\n') +f('sys/module/backlight/sections/__kcrctab', 0o664, b'0xffffffffa01316f0\n') +f('sys/module/backlight/sections/.data', 0o664, b'0xffffffffa0132220\n') +f('sys/module/backlight/sections/.symtab', 0o664, b'0xffffffffa0131738\n') +f('sys/module/backlight/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0132300\n') +f('sys/module/backlight/sections/.rodata.str1.1', 0o664, b'0xffffffffa0131624\n') +d('sys/module/backlight/notes', 0o775) +f('sys/module/backlight/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00d\xb6_\xb64[\x83\x90Fm(\x91J\xb1\xce\xf5\xaa\xd2\xf4}') +d('sys/module/snd', 0o775) +f('sys/module/snd/initstate', 0o664, b'live\n') +f('sys/module/snd/srcversion', 0o664, b'D48337942305C9A41A7CC12\n') +f('sys/module/snd/refcnt', 0o664, b'13\n') +d('sys/module/snd/holders', 0o775) +l('sys/module/snd/holders/snd_seq', '../../snd_seq') +l('sys/module/snd/holders/snd_timer', '../../snd_timer') +l('sys/module/snd/holders/snd_pcm', '../../snd_pcm') +l('sys/module/snd/holders/snd_hda_intel', '../../snd_hda_intel') +l('sys/module/snd/holders/snd_mixer_oss', '../../snd_mixer_oss') +l('sys/module/snd/holders/snd_pcm_oss', '../../snd_pcm_oss') +l('sys/module/snd/holders/snd_seq_device', '../../snd_seq_device') +d('sys/module/snd/parameters', 0o775) +f('sys/module/snd/parameters/slots', 0o664, b'snd-hda-intel,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>\n') +f('sys/module/snd/parameters/major', 0o664, b'116\n') +f('sys/module/snd/parameters/cards_limit', 0o664, b'1\n') +d('sys/module/snd/sections', 0o775) +f('sys/module/snd/sections/__ksymtab_strings', 0o664, b'0xffffffffa00d32e8\n') +f('sys/module/snd/sections/.exit.text', 0o664, b'0xffffffffa00d1bc4\n') +f('sys/module/snd/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00d1c8c\n') +f('sys/module/snd/sections/.strtab', 0o664, b'0xffffffffa00d6cc8\n') +f('sys/module/snd/sections/__ksymtab', 0o664, b'0xffffffffa00d2d00\n') +f('sys/module/snd/sections/.rodata', 0o664, b'0xffffffffa00d1cc0\n') +f('sys/module/snd/sections/__param', 0o664, b'0xffffffffa00d3270\n') +f('sys/module/snd/sections/.bss', 0o664, b'0xffffffffa00da480\n') +f('sys/module/snd/sections/.text', 0o664, b'0xffffffffa00ca000\n') +f('sys/module/snd/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/snd/sections/__kcrctab', 0o664, b'0xffffffffa00d30a0\n') +f('sys/module/snd/sections/.data', 0o664, b'0xffffffffa00d9be0\n') +f('sys/module/snd/sections/.symtab', 0o664, b'0xffffffffa00d3770\n') +f('sys/module/snd/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00da0c0\n') +f('sys/module/snd/sections/.rodata.str1.1', 0o664, b'0xffffffffa00d2558\n') +d('sys/module/snd/notes', 0o775) +f('sys/module/snd/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xee\x11+\xc0\xd4\x8f\x10\x02v\xf8\t\xb4\xa8\xf6[z\xd3\xb3\xb7\x87') +d('sys/module/mac80211', 0o775) +f('sys/module/mac80211/initstate', 0o664, b'live\n') +f('sys/module/mac80211/srcversion', 0o664, b'330E8FB2F2933F478C444A4\n') +f('sys/module/mac80211/refcnt', 0o664, b'1\n') +d('sys/module/mac80211/holders', 0o775) +l('sys/module/mac80211/holders/iwl3945', '../../iwl3945') +d('sys/module/mac80211/parameters', 0o775) +f('sys/module/mac80211/parameters/ieee80211_default_rc_algo', 0o664, b'pid\n') +d('sys/module/mac80211/sections', 0o775) +f('sys/module/mac80211/sections/__ksymtab_gpl', 0o664, b'0xffffffffa0127a50\n') +f('sys/module/mac80211/sections/.smp_locks', 0o664, b'0xffffffffa01270a0\n') +f('sys/module/mac80211/sections/__bug_table', 0o664, b'0xffffffffa0124183\n') +f('sys/module/mac80211/sections/__ksymtab_strings', 0o664, b'0xffffffffa0127630\n') +f('sys/module/mac80211/sections/.exit.text', 0o664, b'0xffffffffa0122de4\n') +f('sys/module/mac80211/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0122df4\n') +f('sys/module/mac80211/sections/.strtab', 0o664, b'0xffffffffa012b890\n') +f('sys/module/mac80211/sections/__ksymtab', 0o664, b'0xffffffffa01272a0\n') +f('sys/module/mac80211/sections/.rodata', 0o664, b'0xffffffffa0122e20\n') +f('sys/module/mac80211/sections/__param', 0o664, b'0xffffffffa0127a28\n') +f('sys/module/mac80211/sections/.bss', 0o664, b'0xffffffffa012fa40\n') +f('sys/module/mac80211/sections/.text', 0o664, b'0xffffffffa0109000\n') +f('sys/module/mac80211/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/mac80211/sections/__kcrctab', 0o664, b'0xffffffffa0127500\n') +f('sys/module/mac80211/sections/.data', 0o664, b'0xffffffffa012f340\n') +f('sys/module/mac80211/sections/.symtab', 0o664, b'0xffffffffa0127a80\n') +f('sys/module/mac80211/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa012f680\n') +f('sys/module/mac80211/sections/.rodata.str1.1', 0o664, b'0xffffffffa0123c40\n') +f('sys/module/mac80211/sections/__kcrctab_gpl', 0o664, b'0xffffffffa0127a70\n') +d('sys/module/mac80211/notes', 0o775) +f('sys/module/mac80211/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00"i\xe2\xa0\x92\xbc7\xc4#\xbc\xda\xf11\x02\x13\xd5\x155\x1cS') +d('sys/module/printk', 0o775) +d('sys/module/printk/parameters', 0o775) +f('sys/module/printk/parameters/time', 0o664, b'N\n') +d('sys/module/rtc_lib', 0o775) +f('sys/module/rtc_lib/initstate', 0o664, b'live\n') +f('sys/module/rtc_lib/srcversion', 0o664, b'7884E7FF8728D88C6BD1427\n') +f('sys/module/rtc_lib/refcnt', 0o664, b'1\n') +d('sys/module/rtc_lib/holders', 0o775) +l('sys/module/rtc_lib/holders/rtc_core', '../../rtc_core') +d('sys/module/rtc_lib/sections', 0o775) +f('sys/module/rtc_lib/sections/__ksymtab_strings', 0o664, b'0xffffffffa009c3f8\n') +f('sys/module/rtc_lib/sections/.note.gnu.build-id', 0o664, b'0xffffffffa009c31c\n') +f('sys/module/rtc_lib/sections/.strtab', 0o664, b'0xffffffffa009c8f0\n') +f('sys/module/rtc_lib/sections/__ksymtab', 0o664, b'0xffffffffa009c380\n') +f('sys/module/rtc_lib/sections/.rodata', 0o664, b'0xffffffffa009c340\n') +f('sys/module/rtc_lib/sections/.bss', 0o664, b'0xffffffffa009cf80\n') +f('sys/module/rtc_lib/sections/.text', 0o664, b'0xffffffffa009c000\n') +f('sys/module/rtc_lib/sections/__kcrctab', 0o664, b'0xffffffffa009c3d0\n') +f('sys/module/rtc_lib/sections/.data', 0o664, b'0xffffffffa009cba8\n') +f('sys/module/rtc_lib/sections/.symtab', 0o664, b'0xffffffffa009c440\n') +f('sys/module/rtc_lib/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa009cbc0\n') +d('sys/module/rtc_lib/notes', 0o775) +f('sys/module/rtc_lib/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xb4\xe2\xcfLw\x17j\xb2\xc7\xf1 \xfa\xc7G\x99+b^+S') +d('sys/module/mousedev', 0o775) +d('sys/module/mousedev/parameters', 0o775) +f('sys/module/mousedev/parameters/tap_time', 0o664, b'200\n') +f('sys/module/mousedev/parameters/yres', 0o664, b'768\n') +f('sys/module/mousedev/parameters/xres', 0o664, b'1024\n') +d('sys/module/rtc_cmos', 0o775) +f('sys/module/rtc_cmos/initstate', 0o664, b'live\n') +f('sys/module/rtc_cmos/srcversion', 0o664, b'7BE4B8C2A52556D0C62CB0B\n') +f('sys/module/rtc_cmos/refcnt', 0o664, b'0\n') +d('sys/module/rtc_cmos/sections', 0o775) +f('sys/module/rtc_cmos/sections/.exit.text', 0o664, b'0xffffffffa00fe370\n') +f('sys/module/rtc_cmos/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00fe4e4\n') +f('sys/module/rtc_cmos/sections/.strtab', 0o664, b'0xffffffffa00ff1a8\n') +f('sys/module/rtc_cmos/sections/.rodata', 0o664, b'0xffffffffa00fe520\n') +f('sys/module/rtc_cmos/sections/.bss', 0o664, b'0xffffffffa00ffd40\n') +f('sys/module/rtc_cmos/sections/.text', 0o664, b'0xffffffffa00fd000\n') +f('sys/module/rtc_cmos/sections/.init.text', 0o664, b'0xffffffffa007d000\n') +f('sys/module/rtc_cmos/sections/.data', 0o664, b'0xffffffffa00ff800\n') +f('sys/module/rtc_cmos/sections/.devinit.text', 0o664, b'0xffffffffa00fe44f\n') +f('sys/module/rtc_cmos/sections/.symtab', 0o664, b'0xffffffffa00fe6e0\n') +f('sys/module/rtc_cmos/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00ff980\n') +f('sys/module/rtc_cmos/sections/.rodata.str1.1', 0o664, b'0xffffffffa00fe6a2\n') +d('sys/module/rtc_cmos/notes', 0o775) +f('sys/module/rtc_cmos/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xf4\x82\xed4\xe7\x10\xb9\x7f\xa9 \x0c\xedIf0\x86u\xd41\x87') +d('sys/module/battery', 0o775) +f('sys/module/battery/initstate', 0o664, b'live\n') +f('sys/module/battery/srcversion', 0o664, b'5A2CE8D302B31A112CFB57A\n') +f('sys/module/battery/refcnt', 0o664, b'0\n') +d('sys/module/battery/parameters', 0o775) +f('sys/module/battery/parameters/cache_time', 0o664, b'1000\n') +d('sys/module/battery/sections', 0o775) +f('sys/module/battery/sections/.exit.text', 0o664, b'0xffffffffa008008c\n') +f('sys/module/battery/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00800ac\n') +f('sys/module/battery/sections/.strtab', 0o664, b'0xffffffffa0081318\n') +f('sys/module/battery/sections/.rodata', 0o664, b'0xffffffffa00800d0\n') +f('sys/module/battery/sections/__param', 0o664, b'0xffffffffa0080798\n') +f('sys/module/battery/sections/.bss', 0o664, b'0xffffffffa0082440\n') +f('sys/module/battery/sections/.text', 0o664, b'0xffffffffa007f000\n') +f('sys/module/battery/sections/.init.text', 0o664, b'0xffffffffa0084000\n') +f('sys/module/battery/sections/.data', 0o664, b'0xffffffffa0081a90\n') +f('sys/module/battery/sections/.symtab', 0o664, b'0xffffffffa00807c0\n') +f('sys/module/battery/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0082080\n') +f('sys/module/battery/sections/.rodata.str1.1', 0o664, b'0xffffffffa008025b\n') +d('sys/module/battery/notes', 0o775) +f('sys/module/battery/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xe3\xa8\xcc.j\xb3\xda\xc8\x88\x03\xca\xf6\xf0*\x9c-\xffE!\xd3') +d('sys/module/yenta_socket', 0o775) +f('sys/module/yenta_socket/initstate', 0o664, b'live\n') +f('sys/module/yenta_socket/srcversion', 0o664, b'B0538CB6E6ED071E80A4575\n') +f('sys/module/yenta_socket/refcnt', 0o664, b'1\n') +d('sys/module/yenta_socket/drivers', 0o775) +l('sys/module/yenta_socket/drivers/pci:yenta_cardbus', '../../../bus/pci/drivers/yenta_cardbus') +d('sys/module/yenta_socket/parameters', 0o775) +f('sys/module/yenta_socket/parameters/isa_probe', 0o664, b'Y\n') +f('sys/module/yenta_socket/parameters/disable_clkrun', 0o664, b'N\n') +f('sys/module/yenta_socket/parameters/pwr_irqs_off', 0o664, b'N\n') +d('sys/module/yenta_socket/sections', 0o775) +f('sys/module/yenta_socket/sections/__bug_table', 0o664, b'0xffffffffa0104aa6\n') +f('sys/module/yenta_socket/sections/.exit.text', 0o664, b'0xffffffffa0103c44\n') +f('sys/module/yenta_socket/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0104330\n') +f('sys/module/yenta_socket/sections/.strtab', 0o664, b'0xffffffffa0105e80\n') +f('sys/module/yenta_socket/sections/.rodata', 0o664, b'0xffffffffa0104354\n') +f('sys/module/yenta_socket/sections/__param', 0o664, b'0xffffffffa0104ad8\n') +f('sys/module/yenta_socket/sections/.bss', 0o664, b'0xffffffffa0107800\n') +f('sys/module/yenta_socket/sections/.text', 0o664, b'0xffffffffa0101000\n') +f('sys/module/yenta_socket/sections/.init.text', 0o664, b'0xffffffffa0084000\n') +f('sys/module/yenta_socket/sections/.data', 0o664, b'0xffffffffa0106ac0\n') +f('sys/module/yenta_socket/sections/.devinit.text', 0o664, b'0xffffffffa0103c60\n') +f('sys/module/yenta_socket/sections/.symtab', 0o664, b'0xffffffffa0104b78\n') +f('sys/module/yenta_socket/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0107440\n') +f('sys/module/yenta_socket/sections/.rodata.str1.1', 0o664, b'0xffffffffa0104388\n') +d('sys/module/yenta_socket/notes', 0o775) +f('sys/module/yenta_socket/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00H\xa8\xe9\xf1\x06e\xb4\xe4\xd7\xa1\x7f\xf8G)\x1a\xa3\xec\xe7m<') +d('sys/module/acpi', 0o775) +d('sys/module/acpi/parameters', 0o775) +f('sys/module/acpi/parameters/acpica_version', 0o664, b'20080609\n') +d('sys/module/cdc_acm', 0o775) +f('sys/module/cdc_acm/initstate', 0o664, b'live\n') +f('sys/module/cdc_acm/srcversion', 0o664, b'5DED3866AA046376E4E36DD\n') +f('sys/module/cdc_acm/refcnt', 0o664, b'0\n') +d('sys/module/cdc_acm/drivers', 0o775) +l('sys/module/cdc_acm/drivers/usb:cdc_acm', '../../../bus/usb/drivers/cdc_acm') +d('sys/module/cdc_acm/sections', 0o775) +f('sys/module/cdc_acm/sections/.smp_locks', 0o664, b'0xffffffffa02d9660\n') +f('sys/module/cdc_acm/sections/.exit.text', 0o664, b'0xffffffffa02d949c\n') +f('sys/module/cdc_acm/sections/.note.gnu.build-id', 0o664, b'0xffffffffa02d94c8\n') +f('sys/module/cdc_acm/sections/.strtab', 0o664, b'0xffffffffa02da838\n') +f('sys/module/cdc_acm/sections/.rodata', 0o664, b'0xffffffffa02d9500\n') +f('sys/module/cdc_acm/sections/.bss', 0o664, b'0xffffffffa02db8c0\n') +f('sys/module/cdc_acm/sections/.text', 0o664, b'0xffffffffa02d7000\n') +f('sys/module/cdc_acm/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/cdc_acm/sections/.data', 0o664, b'0xffffffffa02db0e0\n') +f('sys/module/cdc_acm/sections/.symtab', 0o664, b'0xffffffffa02d9968\n') +f('sys/module/cdc_acm/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02db500\n') +f('sys/module/cdc_acm/sections/.rodata.str1.1', 0o664, b'0xffffffffa02d9698\n') +d('sys/module/cdc_acm/notes', 0o775) +f('sys/module/cdc_acm/notes/.note.gnu.build-id', 0o664, b"\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xe1=\x89\xe9\xe8L\t\xfe|o\x9c+\xfe\x81\xe8\xc6P'\xa4$") +d('sys/module/snd_timer', 0o775) +f('sys/module/snd_timer/initstate', 0o664, b'live\n') +f('sys/module/snd_timer/srcversion', 0o664, b'1F1836030C5B604CF478CFC\n') +f('sys/module/snd_timer/refcnt', 0o664, b'2\n') +d('sys/module/snd_timer/holders', 0o775) +l('sys/module/snd_timer/holders/snd_seq', '../../snd_seq') +l('sys/module/snd_timer/holders/snd_pcm', '../../snd_pcm') +d('sys/module/snd_timer/parameters', 0o775) +f('sys/module/snd_timer/parameters/timer_tstamp_monotonic', 0o664, b'1\n') +f('sys/module/snd_timer/parameters/timer_limit', 0o664, b'1\n') +d('sys/module/snd_timer/sections', 0o775) +f('sys/module/snd_timer/sections/.smp_locks', 0o664, b'0xffffffffa00f8908\n') +f('sys/module/snd_timer/sections/__bug_table', 0o664, b'0xffffffffa00f888f\n') +f('sys/module/snd_timer/sections/__ksymtab_strings', 0o664, b'0xffffffffa00f8a98\n') +f('sys/module/snd_timer/sections/.exit.text', 0o664, b'0xffffffffa00f8520\n') +f('sys/module/snd_timer/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00f8590\n') +f('sys/module/snd_timer/sections/.strtab', 0o664, b'0xffffffffa00f9e90\n') +f('sys/module/snd_timer/sections/__ksymtab', 0o664, b'0xffffffffa00f8910\n') +f('sys/module/snd_timer/sections/.rodata', 0o664, b'0xffffffffa00f85c0\n') +f('sys/module/snd_timer/sections/__param', 0o664, b'0xffffffffa00f8a48\n') +f('sys/module/snd_timer/sections/.bss', 0o664, b'0xffffffffa00fb200\n') +f('sys/module/snd_timer/sections/.text', 0o664, b'0xffffffffa00f5000\n') +f('sys/module/snd_timer/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/snd_timer/sections/__kcrctab', 0o664, b'0xffffffffa00f89e0\n') +f('sys/module/snd_timer/sections/.data', 0o664, b'0xffffffffa00fad00\n') +f('sys/module/snd_timer/sections/.symtab', 0o664, b'0xffffffffa00f8b88\n') +f('sys/module/snd_timer/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00fae40\n') +f('sys/module/snd_timer/sections/.rodata.str1.1', 0o664, b'0xffffffffa00f8723\n') +d('sys/module/snd_timer/notes', 0o775) +f('sys/module/snd_timer/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xb2uP\xf49\x98_\xdcY\xc1\xbfY\xa4yn\xb0\xbe\x9c\xf2F') +d('sys/module/e1000e', 0o775) +f('sys/module/e1000e/version', 0o664, b'0.3.3.3-k2\n') +f('sys/module/e1000e/initstate', 0o664, b'live\n') +f('sys/module/e1000e/srcversion', 0o664, b'5B93BF2B618524ED19305C8\n') +f('sys/module/e1000e/refcnt', 0o664, b'0\n') +d('sys/module/e1000e/drivers', 0o775) +l('sys/module/e1000e/drivers/pci:e1000e', '../../../bus/pci/drivers/e1000e') +d('sys/module/e1000e/parameters', 0o775) +f('sys/module/e1000e/parameters/copybreak', 0o664, b'256\n') +d('sys/module/e1000e/sections', 0o775) +f('sys/module/e1000e/sections/.devinit.data', 0o664, b'0xffffffffa0024fe0\n') +f('sys/module/e1000e/sections/.smp_locks', 0o664, b'0xffffffffa001e730\n') +f('sys/module/e1000e/sections/__bug_table', 0o664, b'0xffffffffa001e590\n') +f('sys/module/e1000e/sections/.exit.text', 0o664, b'0xffffffffa001c64f\n') +f('sys/module/e1000e/sections/.note.gnu.build-id', 0o664, b'0xffffffffa001c750\n') +f('sys/module/e1000e/sections/.strtab', 0o664, b'0xffffffffa0021ac0\n') +f('sys/module/e1000e/sections/.devexit.text', 0o664, b'0xffffffffa001c672\n') +f('sys/module/e1000e/sections/.rodata', 0o664, b'0xffffffffa001c780\n') +f('sys/module/e1000e/sections/__param', 0o664, b'0xffffffffa001e5f0\n') +f('sys/module/e1000e/sections/.bss', 0o664, b'0xffffffffa0025800\n') +f('sys/module/e1000e/sections/.text', 0o664, b'0xffffffffa0009000\n') +f('sys/module/e1000e/sections/.init.text', 0o664, b'0xffffffffa0027000\n') +f('sys/module/e1000e/sections/.data', 0o664, b'0xffffffffa00243c0\n') +f('sys/module/e1000e/sections/.devinit.text', 0o664, b'0xffffffffa001b380\n') +f('sys/module/e1000e/sections/.symtab', 0o664, b'0xffffffffa001e8b0\n') +f('sys/module/e1000e/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0025440\n') +f('sys/module/e1000e/sections/.rodata.str1.1', 0o664, b'0xffffffffa001d6f0\n') +d('sys/module/e1000e/notes', 0o775) +f('sys/module/e1000e/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xcbJ\xb1\x8eG^\xf7\xba\xbf\xa6\x1b\x03\xfasqDl\xf7"\xf1') +d('sys/module/aes_x86_64', 0o775) +f('sys/module/aes_x86_64/initstate', 0o664, b'live\n') +f('sys/module/aes_x86_64/srcversion', 0o664, b'4E315E23114A08593D5D731\n') +f('sys/module/aes_x86_64/refcnt', 0o664, b'2\n') +d('sys/module/aes_x86_64/sections', 0o775) +f('sys/module/aes_x86_64/sections/.exit.text', 0o664, b'0xffffffffa02d471c\n') +f('sys/module/aes_x86_64/sections/.note.gnu.build-id', 0o664, b'0xffffffffa02d4730\n') +f('sys/module/aes_x86_64/sections/.strtab', 0o664, b'0xffffffffa02d4b60\n') +f('sys/module/aes_x86_64/sections/.bss', 0o664, b'0xffffffffa02d5200\n') +f('sys/module/aes_x86_64/sections/.text', 0o664, b'0xffffffffa02d3000\n') +f('sys/module/aes_x86_64/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/aes_x86_64/sections/.data', 0o664, b'0xffffffffa02d4d20\n') +f('sys/module/aes_x86_64/sections/.symtab', 0o664, b'0xffffffffa02d4758\n') +f('sys/module/aes_x86_64/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02d4e40\n') +d('sys/module/aes_x86_64/notes', 0o775) +f('sys/module/aes_x86_64/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\x1e3\x8c\xa9\xdd\xa1\xeb\\\xcf\xd3\x0f\xd1\xfc\xaa\xd2y\x08+f\xca') +d('sys/module/dm_mod', 0o775) +f('sys/module/dm_mod/initstate', 0o664, b'live\n') +f('sys/module/dm_mod/srcversion', 0o664, b'458AEB289C7AA031FFD0011\n') +f('sys/module/dm_mod/refcnt', 0o664, b'0\n') +d('sys/module/dm_mod/sections', 0o775) +f('sys/module/dm_mod/sections/__ksymtab_gpl', 0o664, b'0xffffffffa02122b0\n') +f('sys/module/dm_mod/sections/.smp_locks', 0o664, b'0xffffffffa0210eb8\n') +f('sys/module/dm_mod/sections/__bug_table', 0o664, b'0xffffffffa0211f54\n') +f('sys/module/dm_mod/sections/__ksymtab_strings', 0o664, b'0xffffffffa0212310\n') +f('sys/module/dm_mod/sections/.exit.text', 0o664, b'0xffffffffa0210c20\n') +f('sys/module/dm_mod/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0210c54\n') +f('sys/module/dm_mod/sections/.strtab', 0o664, b'0xffffffffa02151f0\n') +f('sys/module/dm_mod/sections/__ksymtab', 0o664, b'0xffffffffa02120d0\n') +f('sys/module/dm_mod/sections/.rodata', 0o664, b'0xffffffffa0210c80\n') +f('sys/module/dm_mod/sections/__param', 0o664, b'0xffffffffa02120a8\n') +f('sys/module/dm_mod/sections/.bss', 0o664, b'0xffffffffa02177c0\n') +f('sys/module/dm_mod/sections/.text', 0o664, b'0xffffffffa0209000\n') +f('sys/module/dm_mod/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/dm_mod/sections/__kcrctab', 0o664, b'0xffffffffa0212210\n') +f('sys/module/dm_mod/sections/.data', 0o664, b'0xffffffffa0216f40\n') +f('sys/module/dm_mod/sections/.init.data', 0o664, b'0xffffffffa00652c0\n') +f('sys/module/dm_mod/sections/.symtab', 0o664, b'0xffffffffa02124a8\n') +f('sys/module/dm_mod/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0217400\n') +f('sys/module/dm_mod/sections/.rodata.str1.1', 0o664, b'0xffffffffa0211c4d\n') +f('sys/module/dm_mod/sections/__kcrctab_gpl', 0o664, b'0xffffffffa02122f0\n') +d('sys/module/dm_mod/notes', 0o775) +f('sys/module/dm_mod/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00^(\xdd\x16OD6\xfb\x89\xe6\xca3Vl\xb0\xd7MBp\x84') +d('sys/module/usbhid', 0o775) +f('sys/module/usbhid/initstate', 0o664, b'live\n') +f('sys/module/usbhid/srcversion', 0o664, b'3D7B82FE16E5E534DE4C12B\n') +f('sys/module/usbhid/refcnt', 0o664, b'0\n') +d('sys/module/usbhid/drivers', 0o775) +l('sys/module/usbhid/drivers/usb:usbhid', '../../../bus/usb/drivers/usbhid') +d('sys/module/usbhid/parameters', 0o775) +f('sys/module/usbhid/parameters/mousepoll', 0o664, b'0\n') +f('sys/module/usbhid/parameters/rdesc_quirks', 0o664, b'<NULL>,<NULL>,<NULL>,<NULL>\n') +f('sys/module/usbhid/parameters/quirks', 0o664, b'<NULL>,<NULL>,<NULL>,<NULL>\n') +d('sys/module/usbhid/sections', 0o775) +f('sys/module/usbhid/sections/__ksymtab_gpl', 0o664, b'0xffffffffa0201e60\n') +f('sys/module/usbhid/sections/.smp_locks', 0o664, b'0xffffffffa0201700\n') +f('sys/module/usbhid/sections/__ksymtab_strings', 0o664, b'0xffffffffa0201e78\n') +f('sys/module/usbhid/sections/.exit.text', 0o664, b'0xffffffffa0200c6c\n') +f('sys/module/usbhid/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0200c84\n') +f('sys/module/usbhid/sections/.strtab', 0o664, b'0xffffffffa0202e68\n') +f('sys/module/usbhid/sections/.rodata', 0o664, b'0xffffffffa0200cc0\n') +f('sys/module/usbhid/sections/__param', 0o664, b'0xffffffffa0201de0\n') +f('sys/module/usbhid/sections/.bss', 0o664, b'0xffffffffa0203d80\n') +f('sys/module/usbhid/sections/.text', 0o664, b'0xffffffffa01fe000\n') +f('sys/module/usbhid/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/usbhid/sections/.data', 0o664, b'0xffffffffa02037c0\n') +f('sys/module/usbhid/sections/.symtab', 0o664, b'0xffffffffa0201e90\n') +f('sys/module/usbhid/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02039c0\n') +f('sys/module/usbhid/sections/.rodata.str1.1', 0o664, b'0xffffffffa02017a8\n') +f('sys/module/usbhid/sections/__kcrctab_gpl', 0o664, b'0xffffffffa0201e70\n') +d('sys/module/usbhid/notes', 0o775) +f('sys/module/usbhid/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00F\xd8\xa9\xb5\x91:~\xd6KY>\x94\xe1\x1d\xab\xf6\xe5\xeeu*') +d('sys/module/iwl3945', 0o775) +f('sys/module/iwl3945/version', 0o664, b'1.2.26ks\n') +f('sys/module/iwl3945/initstate', 0o664, b'live\n') +f('sys/module/iwl3945/srcversion', 0o664, b'5C079549ABD48E07B20F3C7\n') +f('sys/module/iwl3945/refcnt', 0o664, b'0\n') +d('sys/module/iwl3945/drivers', 0o775) +l('sys/module/iwl3945/drivers/pci:iwl3945', '../../../bus/pci/drivers/iwl3945') +d('sys/module/iwl3945/parameters', 0o775) +f('sys/module/iwl3945/parameters/disable_hw_scan', 0o664, b'0\n') +f('sys/module/iwl3945/parameters/queues_num', 0o664, b'8\n') +f('sys/module/iwl3945/parameters/debug', 0o664, b'0\n') +f('sys/module/iwl3945/parameters/disable', 0o664, b'0\n') +f('sys/module/iwl3945/parameters/hwcrypto', 0o664, b'0\n') +f('sys/module/iwl3945/parameters/antenna', 0o664, b'0\n') +f('sys/module/iwl3945/parameters/qos_enable', 0o664, b'1\n') +d('sys/module/iwl3945/sections', 0o775) +f('sys/module/iwl3945/sections/.smp_locks', 0o664, b'0xffffffffa015e0e0\n') +f('sys/module/iwl3945/sections/__bug_table', 0o664, b'0xffffffffa015e300\n') +f('sys/module/iwl3945/sections/.exit.text', 0o664, b'0xffffffffa015b2e4\n') +f('sys/module/iwl3945/sections/.note.gnu.build-id', 0o664, b'0xffffffffa015b2fc\n') +f('sys/module/iwl3945/sections/.strtab', 0o664, b'0xffffffffa0160f20\n') +f('sys/module/iwl3945/sections/.devexit.text', 0o664, b'0xffffffffa015b044\n') +f('sys/module/iwl3945/sections/.rodata', 0o664, b'0xffffffffa015b320\n') +f('sys/module/iwl3945/sections/__param', 0o664, b'0xffffffffa015e4b0\n') +f('sys/module/iwl3945/sections/.bss', 0o664, b'0xffffffffa0163d80\n') +f('sys/module/iwl3945/sections/.text', 0o664, b'0xffffffffa014b000\n') +f('sys/module/iwl3945/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/iwl3945/sections/.data', 0o664, b'0xffffffffa0162f00\n') +f('sys/module/iwl3945/sections/.symtab', 0o664, b'0xffffffffa015e5c8\n') +f('sys/module/iwl3945/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa01639c0\n') +f('sys/module/iwl3945/sections/.rodata.str1.1', 0o664, b'0xffffffffa015bc0c\n') +d('sys/module/iwl3945/notes', 0o775) +f('sys/module/iwl3945/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xd1^"`\xf9\xf2&\x0b\xe0T\x9b\xe1,\xab\x88\x9bos\x0b\xdb') +d('sys/module/rsrc_nonstatic', 0o775) +f('sys/module/rsrc_nonstatic/initstate', 0o664, b'live\n') +f('sys/module/rsrc_nonstatic/srcversion', 0o664, b'8554CBDFE6293476856E830\n') +f('sys/module/rsrc_nonstatic/refcnt', 0o664, b'1\n') +d('sys/module/rsrc_nonstatic/holders', 0o775) +l('sys/module/rsrc_nonstatic/holders/yenta_socket', '../../yenta_socket') +d('sys/module/rsrc_nonstatic/parameters', 0o775) +f('sys/module/rsrc_nonstatic/parameters/probe_mem', 0o664, b'1\n') +d('sys/module/rsrc_nonstatic/sections', 0o775) +f('sys/module/rsrc_nonstatic/sections/__ksymtab_strings', 0o664, b'0xffffffffa00ef8a0\n') +f('sys/module/rsrc_nonstatic/sections/.exit.text', 0o664, b'0xffffffffa00ef624\n') +f('sys/module/rsrc_nonstatic/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00ef69c\n') +f('sys/module/rsrc_nonstatic/sections/.strtab', 0o664, b'0xffffffffa00f0260\n') +f('sys/module/rsrc_nonstatic/sections/__ksymtab', 0o664, b'0xffffffffa00ef860\n') +f('sys/module/rsrc_nonstatic/sections/.devexit.text', 0o664, b'0xffffffffa00ef636\n') +f('sys/module/rsrc_nonstatic/sections/.rodata', 0o664, b'0xffffffffa00ef6c0\n') +f('sys/module/rsrc_nonstatic/sections/__param', 0o664, b'0xffffffffa00ef878\n') +f('sys/module/rsrc_nonstatic/sections/.bss', 0o664, b'0xffffffffa00f0dc0\n') +f('sys/module/rsrc_nonstatic/sections/.text', 0o664, b'0xffffffffa00ee000\n') +f('sys/module/rsrc_nonstatic/sections/.init.text', 0o664, b'0xffffffffa0084000\n') +f('sys/module/rsrc_nonstatic/sections/__kcrctab', 0o664, b'0xffffffffa00ef870\n') +f('sys/module/rsrc_nonstatic/sections/.ref.data', 0o664, b'0xffffffffa00f09c0\n') +f('sys/module/rsrc_nonstatic/sections/.data', 0o664, b'0xffffffffa00f0820\n') +f('sys/module/rsrc_nonstatic/sections/.devinit.text', 0o664, b'0xffffffffa00ef665\n') +f('sys/module/rsrc_nonstatic/sections/.symtab', 0o664, b'0xffffffffa00ef8b8\n') +f('sys/module/rsrc_nonstatic/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00f0a00\n') +f('sys/module/rsrc_nonstatic/sections/.rodata.str1.1', 0o664, b'0xffffffffa00ef78d\n') +d('sys/module/rsrc_nonstatic/notes', 0o775) +f('sys/module/rsrc_nonstatic/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xd5n\x94\x07\x89\xe1\x08\xe3\x07C\xb9\x83\x0c\x19*6\xe8\xe3\x10R') +d('sys/module/thinkpad_acpi', 0o775) +f('sys/module/thinkpad_acpi/version', 0o664, b'0.21\n') +f('sys/module/thinkpad_acpi/initstate', 0o664, b'live\n') +f('sys/module/thinkpad_acpi/srcversion', 0o664, b'FA276F7EFAA90BF39100654\n') +f('sys/module/thinkpad_acpi/refcnt', 0o664, b'0\n') +d('sys/module/thinkpad_acpi/drivers', 0o775) +l('sys/module/thinkpad_acpi/drivers/platform:thinkpad_hwmon', '../../../bus/platform/drivers/thinkpad_hwmon') +l('sys/module/thinkpad_acpi/drivers/platform:thinkpad_acpi', '../../../bus/platform/drivers/thinkpad_acpi') +d('sys/module/thinkpad_acpi/sections', 0o775) +f('sys/module/thinkpad_acpi/sections/.smp_locks', 0o664, b'0xffffffffa01e6088\n') +f('sys/module/thinkpad_acpi/sections/__bug_table', 0o664, b'0xffffffffa01e60e0\n') +f('sys/module/thinkpad_acpi/sections/.note.gnu.build-id', 0o664, b'0xffffffffa01e3a80\n') +f('sys/module/thinkpad_acpi/sections/.strtab', 0o664, b'0xffffffffa01e98b8\n') +f('sys/module/thinkpad_acpi/sections/.rodata', 0o664, b'0xffffffffa01e3ac0\n') +f('sys/module/thinkpad_acpi/sections/__param', 0o664, b'0xffffffffa01e61a0\n') +f('sys/module/thinkpad_acpi/sections/.bss', 0o664, b'0xffffffffa01ed600\n') +f('sys/module/thinkpad_acpi/sections/.text', 0o664, b'0xffffffffa01dd000\n') +f('sys/module/thinkpad_acpi/sections/.init.text', 0o664, b'0xffffffffa01ef000\n') +f('sys/module/thinkpad_acpi/sections/.data', 0o664, b'0xffffffffa01ebd60\n') +f('sys/module/thinkpad_acpi/sections/.init.data', 0o664, b'0xffffffffa01f1700\n') +f('sys/module/thinkpad_acpi/sections/.symtab', 0o664, b'0xffffffffa01e6498\n') +f('sys/module/thinkpad_acpi/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa01ed240\n') +f('sys/module/thinkpad_acpi/sections/.rodata.str1.1', 0o664, b'0xffffffffa01e3df0\n') +d('sys/module/thinkpad_acpi/notes', 0o775) +f('sys/module/thinkpad_acpi/notes/.note.gnu.build-id', 0o664, b"\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00]\xca\x1f\xba\xb1J'\xa8\x14\x83cj=h\x11\xe60;\x08\xd6") +d('sys/module/psmouse', 0o775) +d('sys/module/psmouse/drivers', 0o775) +l('sys/module/psmouse/drivers/serio:psmouse', '../../../bus/serio/drivers/psmouse') +d('sys/module/psmouse/parameters', 0o775) +f('sys/module/psmouse/parameters/proto', 0o664, b'''auto + +''') +f('sys/module/psmouse/parameters/resync_time', 0o664, b'0\n') +f('sys/module/psmouse/parameters/resolution', 0o664, b'200\n') +f('sys/module/psmouse/parameters/resetafter', 0o664, b'5\n') +f('sys/module/psmouse/parameters/rate', 0o664, b'100\n') +f('sys/module/psmouse/parameters/smartscroll', 0o664, b'Y\n') +d('sys/module/md_mod', 0o775) +f('sys/module/md_mod/initstate', 0o664, b'live\n') +f('sys/module/md_mod/srcversion', 0o664, b'1DB954BE8FA97D4755DC15B\n') +f('sys/module/md_mod/refcnt', 0o664, b'1\n') +d('sys/module/md_mod/holders', 0o775) +l('sys/module/md_mod/holders/raid1', '../../raid1') +d('sys/module/md_mod/parameters', 0o775) +f('sys/module/md_mod/parameters/start_ro', 0o664, b'0\n') +f('sys/module/md_mod/parameters/start_dirty_degraded', 0o664, b'0\n') +d('sys/module/md_mod/sections', 0o775) +f('sys/module/md_mod/sections/__ksymtab_gpl', 0o664, b'0xffffffffa022a790\n') +f('sys/module/md_mod/sections/.smp_locks', 0o664, b'0xffffffffa022a038\n') +f('sys/module/md_mod/sections/__bug_table', 0o664, b'0xffffffffa022a4b8\n') +f('sys/module/md_mod/sections/__ksymtab_strings', 0o664, b'0xffffffffa022a7f0\n') +f('sys/module/md_mod/sections/.exit.text', 0o664, b'0xffffffffa02283a0\n') +f('sys/module/md_mod/sections/.note.gnu.build-id', 0o664, b'0xffffffffa02284c8\n') +f('sys/module/md_mod/sections/.strtab', 0o664, b'0xffffffffa022d7a0\n') +f('sys/module/md_mod/sections/__ksymtab', 0o664, b'0xffffffffa022a590\n') +f('sys/module/md_mod/sections/.rodata', 0o664, b'0xffffffffa0228500\n') +f('sys/module/md_mod/sections/__param', 0o664, b'0xffffffffa022a740\n') +f('sys/module/md_mod/sections/.bss', 0o664, b'0xffffffffa0230880\n') +f('sys/module/md_mod/sections/.text', 0o664, b'0xffffffffa021a000\n') +f('sys/module/md_mod/sections/.init.text', 0o664, b'0xffffffffa0070000\n') +f('sys/module/md_mod/sections/__kcrctab', 0o664, b'0xffffffffa022a6b0\n') +f('sys/module/md_mod/sections/.data', 0o664, b'0xffffffffa022f660\n') +f('sys/module/md_mod/sections/.symtab', 0o664, b'0xffffffffa022a968\n') +f('sys/module/md_mod/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02304c0\n') +f('sys/module/md_mod/sections/.rodata.str1.1', 0o664, b'0xffffffffa022869e\n') +f('sys/module/md_mod/sections/__kcrctab_gpl', 0o664, b'0xffffffffa022a7d0\n') +d('sys/module/md_mod/notes', 0o775) +f('sys/module/md_mod/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xbd\xb6!\x84\x88Z\x8bnL\x0f\xf0\xbe\xf0]\n"\xd8\xf3\xb0*') +d('sys/module/snd_pcm', 0o775) +f('sys/module/snd_pcm/initstate', 0o664, b'live\n') +f('sys/module/snd_pcm/srcversion', 0o664, b'96530AD1426FF7F73757C4F\n') +f('sys/module/snd_pcm/refcnt', 0o664, b'2\n') +d('sys/module/snd_pcm/holders', 0o775) +l('sys/module/snd_pcm/holders/snd_hda_intel', '../../snd_hda_intel') +l('sys/module/snd_pcm/holders/snd_pcm_oss', '../../snd_pcm_oss') +d('sys/module/snd_pcm/parameters', 0o775) +f('sys/module/snd_pcm/parameters/preallocate_dma', 0o664, b'1\n') +f('sys/module/snd_pcm/parameters/maximum_substreams', 0o664, b'4\n') +d('sys/module/snd_pcm/sections', 0o775) +f('sys/module/snd_pcm/sections/.smp_locks', 0o664, b'0xffffffffa0141af8\n') +f('sys/module/snd_pcm/sections/__ex_table', 0o664, b'0xffffffffa0141b30\n') +f('sys/module/snd_pcm/sections/__ksymtab_strings', 0o664, b'0xffffffffa01415f0\n') +f('sys/module/snd_pcm/sections/.exit.text', 0o664, b'0xffffffffa01401d4\n') +f('sys/module/snd_pcm/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0140260\n') +f('sys/module/snd_pcm/sections/.strtab', 0o664, b'0xffffffffa0145428\n') +f('sys/module/snd_pcm/sections/.fixup', 0o664, b'0xffffffffa01401fe\n') +f('sys/module/snd_pcm/sections/__ksymtab', 0o664, b'0xffffffffa01410b0\n') +f('sys/module/snd_pcm/sections/.rodata', 0o664, b'0xffffffffa01402a0\n') +f('sys/module/snd_pcm/sections/__param', 0o664, b'0xffffffffa0141bb0\n') +f('sys/module/snd_pcm/sections/.bss', 0o664, b'0xffffffffa0149640\n') +f('sys/module/snd_pcm/sections/.text', 0o664, b'0xffffffffa0134000\n') +f('sys/module/snd_pcm/sections/.init.text', 0o664, b'0xffffffffa007d000\n') +f('sys/module/snd_pcm/sections/__kcrctab', 0o664, b'0xffffffffa0141430\n') +f('sys/module/snd_pcm/sections/.data', 0o664, b'0xffffffffa0148b60\n') +f('sys/module/snd_pcm/sections/.symtab', 0o664, b'0xffffffffa0141c00\n') +f('sys/module/snd_pcm/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0149280\n') +f('sys/module/snd_pcm/sections/.rodata.str1.1', 0o664, b'0xffffffffa0140930\n') +d('sys/module/snd_pcm/notes', 0o775) +f('sys/module/snd_pcm/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xc8N\x86\x9c\x8dq\x14\x04\xe7\xed\xee\x9b\xe0\x8f\xe4\x8fvF{\xfe') +d('sys/module/snd_hda_intel', 0o775) +f('sys/module/snd_hda_intel/initstate', 0o664, b'live\n') +f('sys/module/snd_hda_intel/srcversion', 0o664, b'B76633A09F11336101E5480\n') +f('sys/module/snd_hda_intel/refcnt', 0o664, b'3\n') +d('sys/module/snd_hda_intel/drivers', 0o775) +l('sys/module/snd_hda_intel/drivers/pci:HDA Intel', '../../../bus/pci/drivers/HDA Intel') +d('sys/module/snd_hda_intel/parameters', 0o775) +f('sys/module/snd_hda_intel/parameters/bdl_pos_adj', 0o664, b'1,-1,-1,-1,-1,-1,-1,-1\n') +f('sys/module/snd_hda_intel/parameters/enable', 0o664, b'Y,Y,Y,Y,Y,Y,Y,Y\n') +f('sys/module/snd_hda_intel/parameters/id', 0o664, b'<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>\n') +f('sys/module/snd_hda_intel/parameters/probe_mask', 0o664, b'1,-1,-1,-1,-1,-1,-1,-1\n') +f('sys/module/snd_hda_intel/parameters/enable_msi', 0o664, b'0\n') +f('sys/module/snd_hda_intel/parameters/index', 0o664, b'-1,-1,-1,-1,-1,-1,-1,-1\n') +f('sys/module/snd_hda_intel/parameters/single_cmd', 0o664, b'N\n') +f('sys/module/snd_hda_intel/parameters/model', 0o664, b'<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>\n') +f('sys/module/snd_hda_intel/parameters/position_fix', 0o664, b'0,0,0,0,0,0,0,0\n') +d('sys/module/snd_hda_intel/sections', 0o775) +f('sys/module/snd_hda_intel/sections/.devinit.data', 0o664, b'0xffffffffa01d7340\n') +f('sys/module/snd_hda_intel/sections/.exit.text', 0o664, b'0xffffffffa0182a58\n') +f('sys/module/snd_hda_intel/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0183f4c\n') +f('sys/module/snd_hda_intel/sections/.strtab', 0o664, b'0xffffffffa0193910\n') +f('sys/module/snd_hda_intel/sections/.devexit.text', 0o664, b'0xffffffffa0182a6a\n') +f('sys/module/snd_hda_intel/sections/.rodata', 0o664, b'0xffffffffa0183f80\n') +f('sys/module/snd_hda_intel/sections/__param', 0o664, b'0xffffffffa0189de8\n') +f('sys/module/snd_hda_intel/sections/.bss', 0o664, b'0xffffffffa01d7800\n') +f('sys/module/snd_hda_intel/sections/.text', 0o664, b'0xffffffffa0165000\n') +f('sys/module/snd_hda_intel/sections/.init.text', 0o664, b'0xffffffffa0070000\n') +f('sys/module/snd_hda_intel/sections/.data', 0o664, b'0xffffffffa019bd40\n') +f('sys/module/snd_hda_intel/sections/.devinit.text', 0o664, b'0xffffffffa0182aa0\n') +f('sys/module/snd_hda_intel/sections/.symtab', 0o664, b'0xffffffffa0189f50\n') +f('sys/module/snd_hda_intel/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa01d7440\n') +f('sys/module/snd_hda_intel/sections/.rodata.str1.1', 0o664, b'0xffffffffa0186d8b\n') +d('sys/module/snd_hda_intel/notes', 0o775) +f('sys/module/snd_hda_intel/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x002\xfe\x91\xd2K\x86\x1d\x92P\xdcX/c\x07=\xf3\xceY\xbc-') +d('sys/module/ehci_hcd', 0o775) +f('sys/module/ehci_hcd/initstate', 0o664, b'live\n') +f('sys/module/ehci_hcd/srcversion', 0o664, b'6EBBF13EC8AD467D8AB11A4\n') +f('sys/module/ehci_hcd/refcnt', 0o664, b'0\n') +d('sys/module/ehci_hcd/drivers', 0o775) +l('sys/module/ehci_hcd/drivers/pci:ehci_hcd', '../../../bus/pci/drivers/ehci_hcd') +d('sys/module/ehci_hcd/parameters', 0o775) +f('sys/module/ehci_hcd/parameters/park', 0o664, b'0\n') +f('sys/module/ehci_hcd/parameters/ignore_oc', 0o664, b'N\n') +f('sys/module/ehci_hcd/parameters/log2_irq_thresh', 0o664, b'0\n') +d('sys/module/ehci_hcd/sections', 0o775) +f('sys/module/ehci_hcd/sections/.smp_locks', 0o664, b'0xffffffffa00e4048\n') +f('sys/module/ehci_hcd/sections/__bug_table', 0o664, b'0xffffffffa00e3f22\n') +f('sys/module/ehci_hcd/sections/.exit.text', 0o664, b'0xffffffffa00e3b98\n') +f('sys/module/ehci_hcd/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00e3bac\n') +f('sys/module/ehci_hcd/sections/.strtab', 0o664, b'0xffffffffa00e54a8\n') +f('sys/module/ehci_hcd/sections/.rodata', 0o664, b'0xffffffffa00e3be0\n') +f('sys/module/ehci_hcd/sections/__param', 0o664, b'0xffffffffa00e42f0\n') +f('sys/module/ehci_hcd/sections/.bss', 0o664, b'0xffffffffa00e6480\n') +f('sys/module/ehci_hcd/sections/.text', 0o664, b'0xffffffffa00dd000\n') +f('sys/module/ehci_hcd/sections/.init.text', 0o664, b'0xffffffffa006b000\n') +f('sys/module/ehci_hcd/sections/.data', 0o664, b'0xffffffffa00e5f40\n') +f('sys/module/ehci_hcd/sections/.symtab', 0o664, b'0xffffffffa00e4368\n') +f('sys/module/ehci_hcd/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00e60c0\n') +f('sys/module/ehci_hcd/sections/.rodata.str1.1', 0o664, b'0xffffffffa00e3dd0\n') +d('sys/module/ehci_hcd/notes', 0o775) +f('sys/module/ehci_hcd/notes/.note.gnu.build-id', 0o664, b"\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00 \xc7\x01\xa9Mi;\xcaNB'\x08T\xc4\xf9\x80\xd7\x10\xb3h") +d('sys/module/sg', 0o775) +f('sys/module/sg/version', 0o664, b'3.5.34\n') +f('sys/module/sg/initstate', 0o664, b'live\n') +f('sys/module/sg/srcversion', 0o664, b'DC7DE342543B6D7AB46D718\n') +f('sys/module/sg/refcnt', 0o664, b'0\n') +d('sys/module/sg/parameters', 0o775) +f('sys/module/sg/parameters/allow_dio', 0o664, b'0\n') +f('sys/module/sg/parameters/scatter_elem_sz', 0o664, b'32768\n') +f('sys/module/sg/parameters/def_reserved_size', 0o664, b'32768\n') +d('sys/module/sg/sections', 0o775) +f('sys/module/sg/sections/.smp_locks', 0o664, b'0xffffffffa00054d8\n') +f('sys/module/sg/sections/__ex_table', 0o664, b'0xffffffffa0005530\n') +f('sys/module/sg/sections/__bug_table', 0o664, b'0xffffffffa00054e8\n') +f('sys/module/sg/sections/.exit.text', 0o664, b'0xffffffffa00049f0\n') +f('sys/module/sg/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0004afc\n') +f('sys/module/sg/sections/.strtab', 0o664, b'0xffffffffa0006710\n') +f('sys/module/sg/sections/.fixup', 0o664, b'0xffffffffa0004a33\n') +f('sys/module/sg/sections/.rodata', 0o664, b'0xffffffffa0004b20\n') +f('sys/module/sg/sections/__param', 0o664, b'0xffffffffa0005630\n') +f('sys/module/sg/sections/.bss', 0o664, b'0xffffffffa0007640\n') +f('sys/module/sg/sections/.text', 0o664, b'0xffffffffa0000000\n') +f('sys/module/sg/sections/.init.text', 0o664, b'0xffffffffa0009000\n') +f('sys/module/sg/sections/.data', 0o664, b'0xffffffffa0007040\n') +f('sys/module/sg/sections/.symtab', 0o664, b'0xffffffffa00056a8\n') +f('sys/module/sg/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0007280\n') +f('sys/module/sg/sections/.rodata.str1.1', 0o664, b'0xffffffffa0004bc0\n') +d('sys/module/sg/notes', 0o775) +f('sys/module/sg/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00q\x06\xb5<\xb3\x13\xd4\xe6\xc5W\xbb;{\x14\x93\xd5\x07\xc7\x13\xfa') +d('sys/module/snd_mixer_oss', 0o775) +f('sys/module/snd_mixer_oss/initstate', 0o664, b'live\n') +f('sys/module/snd_mixer_oss/srcversion', 0o664, b'9D2BFE821DD0ACFA2CFF364\n') +f('sys/module/snd_mixer_oss/refcnt', 0o664, b'1\n') +d('sys/module/snd_mixer_oss/holders', 0o775) +l('sys/module/snd_mixer_oss/holders/snd_pcm_oss', '../../snd_pcm_oss') +d('sys/module/snd_mixer_oss/sections', 0o775) +f('sys/module/snd_mixer_oss/sections/__ksymtab_strings', 0o664, b'0xffffffffa02bba78\n') +f('sys/module/snd_mixer_oss/sections/.exit.text', 0o664, b'0xffffffffa02bb508\n') +f('sys/module/snd_mixer_oss/sections/.note.gnu.build-id', 0o664, b'0xffffffffa02bb54c\n') +f('sys/module/snd_mixer_oss/sections/.strtab', 0o664, b'0xffffffffa02bc470\n') +f('sys/module/snd_mixer_oss/sections/__ksymtab', 0o664, b'0xffffffffa02bba60\n') +f('sys/module/snd_mixer_oss/sections/.rodata', 0o664, b'0xffffffffa02bb580\n') +f('sys/module/snd_mixer_oss/sections/.bss', 0o664, b'0xffffffffa02bd240\n') +f('sys/module/snd_mixer_oss/sections/.text', 0o664, b'0xffffffffa02b9000\n') +f('sys/module/snd_mixer_oss/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/snd_mixer_oss/sections/__kcrctab', 0o664, b'0xffffffffa02bba70\n') +f('sys/module/snd_mixer_oss/sections/.data', 0o664, b'0xffffffffa02bcb20\n') +f('sys/module/snd_mixer_oss/sections/.symtab', 0o664, b'0xffffffffa02bba98\n') +f('sys/module/snd_mixer_oss/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02bce80\n') +f('sys/module/snd_mixer_oss/sections/.rodata.str1.1', 0o664, b'0xffffffffa02bb760\n') +d('sys/module/snd_mixer_oss/notes', 0o775) +f('sys/module/snd_mixer_oss/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xc3u\x0b\x0eh,\x90W\xba\xf3S\xa9\x16\\<\x97u\x0f.\xa6') +d('sys/module/pcmcia', 0o775) +f('sys/module/pcmcia/initstate', 0o664, b'live\n') +f('sys/module/pcmcia/srcversion', 0o664, b'6544CB07B8D7D79F19A4CD6\n') +f('sys/module/pcmcia/refcnt', 0o664, b'0\n') +d('sys/module/pcmcia/parameters', 0o775) +f('sys/module/pcmcia/parameters/io_speed', 0o664, b'0\n') +d('sys/module/pcmcia/sections', 0o775) +f('sys/module/pcmcia/sections/__ksymtab_strings', 0o664, b'0xffffffffa01f9890\n') +f('sys/module/pcmcia/sections/.exit.text', 0o664, b'0xffffffffa01f85c4\n') +f('sys/module/pcmcia/sections/.note.gnu.build-id', 0o664, b'0xffffffffa01f86c8\n') +f('sys/module/pcmcia/sections/.strtab', 0o664, b'0xffffffffa01fb138\n') +f('sys/module/pcmcia/sections/__ksymtab', 0o664, b'0xffffffffa01f9710\n') +f('sys/module/pcmcia/sections/.rodata', 0o664, b'0xffffffffa01f8700\n') +f('sys/module/pcmcia/sections/__param', 0o664, b'0xffffffffa01f9a00\n') +f('sys/module/pcmcia/sections/.bss', 0o664, b'0xffffffffa01fcb40\n') +f('sys/module/pcmcia/sections/.text', 0o664, b'0xffffffffa01f5000\n') +f('sys/module/pcmcia/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/pcmcia/sections/__kcrctab', 0o664, b'0xffffffffa01f9810\n') +f('sys/module/pcmcia/sections/.ref.data', 0o664, b'0xffffffffa01fc720\n') +f('sys/module/pcmcia/sections/.data', 0o664, b'0xffffffffa01fc3a0\n') +f('sys/module/pcmcia/sections/.devinit.text', 0o664, b'0xffffffffa01f85e2\n') +f('sys/module/pcmcia/sections/.symtab', 0o664, b'0xffffffffa01f9a28\n') +f('sys/module/pcmcia/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa01fc780\n') +f('sys/module/pcmcia/sections/.rodata.str1.1', 0o664, b'0xffffffffa01f913d\n') +d('sys/module/pcmcia/notes', 0o775) +f('sys/module/pcmcia/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00v\xd6BR5q\xd2\xd4\x05y\xe0\x84j\x17\xab\xb2\xe6o\xd43') +d('sys/module/nvram', 0o775) +f('sys/module/nvram/initstate', 0o664, b'live\n') +f('sys/module/nvram/srcversion', 0o664, b'ECD12B2949BC771BDCE8146\n') +f('sys/module/nvram/refcnt', 0o664, b'1\n') +d('sys/module/nvram/holders', 0o775) +l('sys/module/nvram/holders/thinkpad_acpi', '../../thinkpad_acpi') +d('sys/module/nvram/sections', 0o775) +f('sys/module/nvram/sections/__ksymtab_strings', 0o664, b'0xffffffffa00ad2c0\n') +f('sys/module/nvram/sections/.exit.text', 0o664, b'0xffffffffa00ace3c\n') +f('sys/module/nvram/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00ace5c\n') +f('sys/module/nvram/sections/.strtab', 0o664, b'0xffffffffa00adc38\n') +f('sys/module/nvram/sections/__ksymtab', 0o664, b'0xffffffffa00ad230\n') +f('sys/module/nvram/sections/.rodata', 0o664, b'0xffffffffa00ace80\n') +f('sys/module/nvram/sections/.bss', 0o664, b'0xffffffffa00ae640\n') +f('sys/module/nvram/sections/.text', 0o664, b'0xffffffffa00ac000\n') +f('sys/module/nvram/sections/.init.text', 0o664, b'0xffffffffa00b0000\n') +f('sys/module/nvram/sections/__kcrctab', 0o664, b'0xffffffffa00ad290\n') +f('sys/module/nvram/sections/.data', 0o664, b'0xffffffffa00ae200\n') +f('sys/module/nvram/sections/.symtab', 0o664, b'0xffffffffa00ad338\n') +f('sys/module/nvram/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00ae280\n') +f('sys/module/nvram/sections/.rodata.str1.1', 0o664, b'0xffffffffa00acfb8\n') +d('sys/module/nvram/notes', 0o775) +f('sys/module/nvram/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\x00j\xf9\trf\x94M\xafD\\s\xced\xcc\x97c\xd5L\n') +d('sys/module/scsi_mod', 0o775) +d('sys/module/scsi_mod/parameters', 0o775) +f('sys/module/scsi_mod/parameters/scan', 0o664, b'sync\n') +f('sys/module/scsi_mod/parameters/default_dev_flags', 0o664, b'0\n') +f('sys/module/scsi_mod/parameters/scsi_logging_level', 0o664, b'0\n') +f('sys/module/scsi_mod/parameters/inq_timeout', 0o664, b'5\n') +f('sys/module/scsi_mod/parameters/max_luns', 0o664, b'512\n') +f('sys/module/scsi_mod/parameters/max_report_luns', 0o664, b'511\n') +d('sys/module/pcmcia_core', 0o775) +f('sys/module/pcmcia_core/initstate', 0o664, b'live\n') +f('sys/module/pcmcia_core/srcversion', 0o664, b'7C1220572DE8897E4D560EB\n') +f('sys/module/pcmcia_core/refcnt', 0o664, b'3\n') +d('sys/module/pcmcia_core/holders', 0o775) +l('sys/module/pcmcia_core/holders/yenta_socket', '../../yenta_socket') +l('sys/module/pcmcia_core/holders/rsrc_nonstatic', '../../rsrc_nonstatic') +l('sys/module/pcmcia_core/holders/pcmcia', '../../pcmcia') +d('sys/module/pcmcia_core/parameters', 0o775) +f('sys/module/pcmcia_core/parameters/setup_delay', 0o664, b'10\n') +f('sys/module/pcmcia_core/parameters/cis_speed', 0o664, b'300\n') +f('sys/module/pcmcia_core/parameters/unreset_delay', 0o664, b'10\n') +f('sys/module/pcmcia_core/parameters/shutdown_delay', 0o664, b'3\n') +f('sys/module/pcmcia_core/parameters/cis_width', 0o664, b'0\n') +f('sys/module/pcmcia_core/parameters/unreset_limit', 0o664, b'30\n') +f('sys/module/pcmcia_core/parameters/reset_time', 0o664, b'10\n') +f('sys/module/pcmcia_core/parameters/resume_delay', 0o664, b'20\n') +f('sys/module/pcmcia_core/parameters/unreset_check', 0o664, b'10\n') +f('sys/module/pcmcia_core/parameters/vcc_settle', 0o664, b'40\n') +d('sys/module/pcmcia_core/sections', 0o775) +f('sys/module/pcmcia_core/sections/__ksymtab_strings', 0o664, b'0xffffffffa0094310\n') +f('sys/module/pcmcia_core/sections/.exit.text', 0o664, b'0xffffffffa0093558\n') +f('sys/module/pcmcia_core/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0093668\n') +f('sys/module/pcmcia_core/sections/.strtab', 0o664, b'0xffffffffa0096898\n') +f('sys/module/pcmcia_core/sections/__ksymtab', 0o664, b'0xffffffffa0093e50\n') +f('sys/module/pcmcia_core/sections/.rodata', 0o664, b'0xffffffffa00936a0\n') +f('sys/module/pcmcia_core/sections/__param', 0o664, b'0xffffffffa0094180\n') +f('sys/module/pcmcia_core/sections/.bss', 0o664, b'0xffffffffa0098f40\n') +f('sys/module/pcmcia_core/sections/.text', 0o664, b'0xffffffffa008f000\n') +f('sys/module/pcmcia_core/sections/.init.text', 0o664, b'0xffffffffa009a000\n') +f('sys/module/pcmcia_core/sections/__kcrctab', 0o664, b'0xffffffffa0094070\n') +f('sys/module/pcmcia_core/sections/.data', 0o664, b'0xffffffffa0098700\n') +f('sys/module/pcmcia_core/sections/.symtab', 0o664, b'0xffffffffa00945d0\n') +f('sys/module/pcmcia_core/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0098b80\n') +f('sys/module/pcmcia_core/sections/.rodata.str1.1', 0o664, b'0xffffffffa0093a88\n') +f('sys/module/pcmcia_core/sections/.ref.text', 0o664, b'0xffffffffa0093580\n') +d('sys/module/pcmcia_core/notes', 0o775) +f('sys/module/pcmcia_core/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00M\xe5~\xb9\x10\x7f(\xb8\x18\xe2ma\xb4\xdc\x9a\x8er\xb2t\xbc') +d('sys/module/rtc_core', 0o775) +f('sys/module/rtc_core/initstate', 0o664, b'live\n') +f('sys/module/rtc_core/srcversion', 0o664, b'8684A14821938B7D8E50DB5\n') +f('sys/module/rtc_core/refcnt', 0o664, b'1\n') +d('sys/module/rtc_core/holders', 0o775) +l('sys/module/rtc_core/holders/rtc_cmos', '../../rtc_cmos') +d('sys/module/rtc_core/sections', 0o775) +f('sys/module/rtc_core/sections/__ksymtab_gpl', 0o664, b'0xffffffffa00ea380\n') +f('sys/module/rtc_core/sections/.smp_locks', 0o664, b'0xffffffffa00ea5b8\n') +f('sys/module/rtc_core/sections/__ksymtab_strings', 0o664, b'0xffffffffa00ea4d0\n') +f('sys/module/rtc_core/sections/.exit.text', 0o664, b'0xffffffffa00e9e60\n') +f('sys/module/rtc_core/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00e9ea4\n') +f('sys/module/rtc_core/sections/.strtab', 0o664, b'0xffffffffa00eb9c0\n') +f('sys/module/rtc_core/sections/.rodata', 0o664, b'0xffffffffa00e9ee0\n') +f('sys/module/rtc_core/sections/.bss', 0o664, b'0xffffffffa00ecd80\n') +f('sys/module/rtc_core/sections/.text', 0o664, b'0xffffffffa00e8000\n') +f('sys/module/rtc_core/sections/.init.text', 0o664, b'0xffffffffa007d000\n') +f('sys/module/rtc_core/sections/.data', 0o664, b'0xffffffffa00ec760\n') +f('sys/module/rtc_core/sections/.symtab', 0o664, b'0xffffffffa00ea5e0\n') +f('sys/module/rtc_core/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00ec9c0\n') +f('sys/module/rtc_core/sections/.rodata.str1.1', 0o664, b'0xffffffffa00ea098\n') +f('sys/module/rtc_core/sections/__kcrctab_gpl', 0o664, b'0xffffffffa00ea460\n') +d('sys/module/rtc_core/notes', 0o775) +f('sys/module/rtc_core/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xfbj\x90X\x98\xf7\x0e\x95\x19\xc6\xa1\xa1\xcd\xe0\x835$\x0e\x96\x17') +d('sys/module/led_class', 0o775) +f('sys/module/led_class/initstate', 0o664, b'live\n') +f('sys/module/led_class/srcversion', 0o664, b'B916A50F53ABBBB19DFF203\n') +f('sys/module/led_class/refcnt', 0o664, b'2\n') +d('sys/module/led_class/holders', 0o775) +l('sys/module/led_class/holders/iwl3945', '../../iwl3945') +l('sys/module/led_class/holders/thinkpad_acpi', '../../thinkpad_acpi') +d('sys/module/led_class/sections', 0o775) +f('sys/module/led_class/sections/__ksymtab_gpl', 0o664, b'0xffffffffa00f23c0\n') +f('sys/module/led_class/sections/__ksymtab_strings', 0o664, b'0xffffffffa00f2420\n') +f('sys/module/led_class/sections/.exit.text', 0o664, b'0xffffffffa00f2330\n') +f('sys/module/led_class/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00f2344\n') +f('sys/module/led_class/sections/.strtab', 0o664, b'0xffffffffa00f2bf8\n') +f('sys/module/led_class/sections/.bss', 0o664, b'0xffffffffa00f3500\n') +f('sys/module/led_class/sections/.text', 0o664, b'0xffffffffa00f2000\n') +f('sys/module/led_class/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/led_class/sections/.data', 0o664, b'0xffffffffa00f30c0\n') +f('sys/module/led_class/sections/.symtab', 0o664, b'0xffffffffa00f2478\n') +f('sys/module/led_class/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00f3140\n') +f('sys/module/led_class/sections/.rodata.str1.1', 0o664, b'0xffffffffa00f2368\n') +f('sys/module/led_class/sections/__kcrctab_gpl', 0o664, b'0xffffffffa00f2400\n') +d('sys/module/led_class/notes', 0o775) +f('sys/module/led_class/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00Iq;\xaf\xad\xf1\xe5\xcf8\xa5\x86u\xa9tMV\x02*\xfd\r') +d('sys/module/libata', 0o775) +d('sys/module/libata/parameters', 0o775) +f('sys/module/libata/parameters/acpi_gtf_filter', 0o664, b'7\n') +f('sys/module/libata/parameters/noacpi', 0o664, b'0\n') +f('sys/module/libata/parameters/atapi_passthru16', 0o664, b'1\n') +f('sys/module/libata/parameters/ata_probe_timeout', 0o664, b'0\n') +f('sys/module/libata/parameters/dma', 0o664, b'7\n') +f('sys/module/libata/parameters/atapi_dmadir', 0o664, b'0\n') +f('sys/module/libata/parameters/fua', 0o664, b'0\n') +f('sys/module/libata/parameters/ignore_hpa', 0o664, b'0\n') +f('sys/module/libata/parameters/atapi_enabled', 0o664, b'1\n') +f('sys/module/libata/parameters/allow_tpm', 0o664, b'0\n') +d('sys/module/thermal', 0o775) +f('sys/module/thermal/initstate', 0o664, b'live\n') +f('sys/module/thermal/srcversion', 0o664, b'1787CE9FEB053C917D031A9\n') +f('sys/module/thermal/refcnt', 0o664, b'0\n') +d('sys/module/thermal/parameters', 0o775) +f('sys/module/thermal/parameters/act', 0o664, b'0\n') +f('sys/module/thermal/parameters/tzp', 0o664, b'0\n') +f('sys/module/thermal/parameters/crt', 0o664, b'0\n') +f('sys/module/thermal/parameters/psv', 0o664, b'0\n') +d('sys/module/thermal/sections', 0o775) +f('sys/module/thermal/sections/.exit.text', 0o664, b'0xffffffffa00a1f14\n') +f('sys/module/thermal/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00a1f3c\n') +f('sys/module/thermal/sections/.strtab', 0o664, b'0xffffffffa00a3b28\n') +f('sys/module/thermal/sections/.rodata', 0o664, b'0xffffffffa00a1f60\n') +f('sys/module/thermal/sections/__param', 0o664, b'0xffffffffa00a29d0\n') +f('sys/module/thermal/sections/.bss', 0o664, b'0xffffffffa00a4bc0\n') +f('sys/module/thermal/sections/.text', 0o664, b'0xffffffffa00a0000\n') +f('sys/module/thermal/sections/.init.text', 0o664, b'0xffffffffa0070000\n') +f('sys/module/thermal/sections/.data', 0o664, b'0xffffffffa00a4640\n') +f('sys/module/thermal/sections/.init.data', 0o664, b'0xffffffffa0070090\n') +f('sys/module/thermal/sections/.symtab', 0o664, b'0xffffffffa00a2ac0\n') +f('sys/module/thermal/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00a4800\n') +f('sys/module/thermal/sections/.rodata.str1.1', 0o664, b'0xffffffffa00a242a\n') +d('sys/module/thermal/notes', 0o775) +f('sys/module/thermal/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\x97\xa9\xec\xf2\x01\x86!\x94\x89\xa4n%q\t\xb7\xb4\x97a\x1a\x85') +d('sys/module/keyboard', 0o775) +d('sys/module/keyboard/parameters', 0o775) +f('sys/module/keyboard/parameters/brl_nbchords', 0o664, b'1\n') +f('sys/module/keyboard/parameters/brl_timeout', 0o664, b'300\n') +d('sys/module/ahci', 0o775) +d('sys/module/ahci/drivers', 0o775) +l('sys/module/ahci/drivers/pci:ahci', '../../../bus/pci/drivers/ahci') +d('sys/module/ahci/parameters', 0o775) +f('sys/module/ahci/parameters/marvell_enable', 0o664, b'1\n') +f('sys/module/ahci/parameters/ahci_em_messages', 0o664, b'1\n') +f('sys/module/ahci/parameters/skip_host_reset', 0o664, b'0\n') +d('sys/module/snd_pcm_oss', 0o775) +f('sys/module/snd_pcm_oss/initstate', 0o664, b'live\n') +f('sys/module/snd_pcm_oss/srcversion', 0o664, b'E3D05A52B04130012283029\n') +f('sys/module/snd_pcm_oss/refcnt', 0o664, b'0\n') +d('sys/module/snd_pcm_oss/parameters', 0o775) +f('sys/module/snd_pcm_oss/parameters/dsp_map', 0o664, b'0,0,0,0,0,0,0,0\n') +f('sys/module/snd_pcm_oss/parameters/nonblock_open', 0o664, b'Y\n') +f('sys/module/snd_pcm_oss/parameters/adsp_map', 0o664, b'1,1,1,1,1,1,1,1\n') +d('sys/module/snd_pcm_oss/sections', 0o775) +f('sys/module/snd_pcm_oss/sections/.exit.text', 0o664, b'0xffffffffa02c6e7c\n') +f('sys/module/snd_pcm_oss/sections/.note.gnu.build-id', 0o664, b'0xffffffffa02c6e94\n') +f('sys/module/snd_pcm_oss/sections/.strtab', 0o664, b'0xffffffffa02c8818\n') +f('sys/module/snd_pcm_oss/sections/.rodata', 0o664, b'0xffffffffa02c6ec0\n') +f('sys/module/snd_pcm_oss/sections/__param', 0o664, b'0xffffffffa02c7378\n') +f('sys/module/snd_pcm_oss/sections/.bss', 0o664, b'0xffffffffa02c9b00\n') +f('sys/module/snd_pcm_oss/sections/.text', 0o664, b'0xffffffffa02bf000\n') +f('sys/module/snd_pcm_oss/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/snd_pcm_oss/sections/.data', 0o664, b'0xffffffffa02c96c0\n') +f('sys/module/snd_pcm_oss/sections/.symtab', 0o664, b'0xffffffffa02c73f0\n') +f('sys/module/snd_pcm_oss/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02c9740\n') +f('sys/module/snd_pcm_oss/sections/.rodata.str1.1', 0o664, b'0xffffffffa02c71a8\n') +d('sys/module/snd_pcm_oss/notes', 0o775) +f('sys/module/snd_pcm_oss/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xd7y|\xbf\xa5\x8aZm\x86\x85CF\x11s\xd3\xf5f\xbd7\xc6') +d('sys/module/ac', 0o775) +f('sys/module/ac/initstate', 0o664, b'live\n') +f('sys/module/ac/srcversion', 0o664, b'6E9CD20EE5BE8425A61B938\n') +f('sys/module/ac/refcnt', 0o664, b'0\n') +d('sys/module/ac/sections', 0o775) +f('sys/module/ac/sections/.exit.text', 0o664, b'0xffffffffa006d43c\n') +f('sys/module/ac/sections/.note.gnu.build-id', 0o664, b'0xffffffffa006d45c\n') +f('sys/module/ac/sections/.strtab', 0o664, b'0xffffffffa006dd28\n') +f('sys/module/ac/sections/.rodata', 0o664, b'0xffffffffa006d480\n') +f('sys/module/ac/sections/.bss', 0o664, b'0xffffffffa006e600\n') +f('sys/module/ac/sections/.text', 0o664, b'0xffffffffa006d000\n') +f('sys/module/ac/sections/.init.text', 0o664, b'0xffffffffa0070000\n') +f('sys/module/ac/sections/.data', 0o664, b'0xffffffffa006e0d0\n') +f('sys/module/ac/sections/.symtab', 0o664, b'0xffffffffa006d668\n') +f('sys/module/ac/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa006e240\n') +f('sys/module/ac/sections/.rodata.str1.1', 0o664, b'0xffffffffa006d5a0\n') +d('sys/module/ac/notes', 0o775) +f('sys/module/ac/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00^h\xf0\x19\xcc\x94"G\xf8\xbc\x1c\xf0\xa3\x8d?\xec\xa5\xc4\x95\x9f') +d('sys/module/dock', 0o775) +d('sys/module/dock/parameters', 0o775) +f('sys/module/dock/parameters/immediate_undock', 0o664, b'Y\n') +d('sys/module/pcie_aspm', 0o775) +d('sys/module/pcie_aspm/parameters', 0o775) +f('sys/module/pcie_aspm/parameters/policy', 0o664, b'[default] performance powersave \n') +d('sys/module/lockdep', 0o775) +d('sys/module/lockdep/parameters', 0o775) +f('sys/module/lockdep/parameters/lock_stat', 0o664, b'1\n') +d('sys/module/tcp_cubic', 0o775) +d('sys/module/tcp_cubic/parameters', 0o775) +f('sys/module/tcp_cubic/parameters/tcp_friendliness', 0o664, b'1\n') +f('sys/module/tcp_cubic/parameters/beta', 0o664, b'717\n') +f('sys/module/tcp_cubic/parameters/bic_scale', 0o664, b'41\n') +f('sys/module/tcp_cubic/parameters/fast_convergence', 0o664, b'1\n') +f('sys/module/tcp_cubic/parameters/initial_ssthresh', 0o664, b'0\n') +d('sys/module/ecb', 0o775) +f('sys/module/ecb/initstate', 0o664, b'live\n') +f('sys/module/ecb/srcversion', 0o664, b'5BBA8E5CDEA4EA8BA5ED31D\n') +f('sys/module/ecb/refcnt', 0o664, b'2\n') +d('sys/module/ecb/sections', 0o775) +f('sys/module/ecb/sections/.exit.text', 0o664, b'0xffffffffa0027300\n') +f('sys/module/ecb/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0027314\n') +f('sys/module/ecb/sections/.strtab', 0o664, b'0xffffffffa00277c0\n') +f('sys/module/ecb/sections/.bss', 0o664, b'0xffffffffa0027e80\n') +f('sys/module/ecb/sections/.text', 0o664, b'0xffffffffa0027000\n') +f('sys/module/ecb/sections/.init.text', 0o664, b'0xffffffffa006b000\n') +f('sys/module/ecb/sections/.data', 0o664, b'0xffffffffa0027a40\n') +f('sys/module/ecb/sections/.symtab', 0o664, b'0xffffffffa0027340\n') +f('sys/module/ecb/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0027ac0\n') +f('sys/module/ecb/sections/.rodata.str1.1', 0o664, b'0xffffffffa0027338\n') +d('sys/module/ecb/notes', 0o775) +f('sys/module/ecb/notes/.note.gnu.build-id', 0o664, b"\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xc20'\x18T\x8bW#\xf5\xe5\xf8JvI\xcb\xc4\x91\x95\nJ") +d('sys/module/snd_page_alloc', 0o775) +f('sys/module/snd_page_alloc/initstate', 0o664, b'live\n') +f('sys/module/snd_page_alloc/srcversion', 0o664, b'D9E59C27F28D5DA2B935016\n') +f('sys/module/snd_page_alloc/refcnt', 0o664, b'2\n') +d('sys/module/snd_page_alloc/holders', 0o775) +l('sys/module/snd_page_alloc/holders/snd_pcm', '../../snd_pcm') +l('sys/module/snd_page_alloc/holders/snd_hda_intel', '../../snd_hda_intel') +d('sys/module/snd_page_alloc/sections', 0o775) +f('sys/module/snd_page_alloc/sections/__ksymtab_strings', 0o664, b'0xffffffffa00350e8\n') +f('sys/module/snd_page_alloc/sections/.exit.text', 0o664, b'0xffffffffa0034cc0\n') +f('sys/module/snd_page_alloc/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0034cf8\n') +f('sys/module/snd_page_alloc/sections/.strtab', 0o664, b'0xffffffffa0035be8\n') +f('sys/module/snd_page_alloc/sections/__ksymtab', 0o664, b'0xffffffffa0035040\n') +f('sys/module/snd_page_alloc/sections/.rodata', 0o664, b'0xffffffffa0034d20\n') +f('sys/module/snd_page_alloc/sections/.bss', 0o664, b'0xffffffffa0036780\n') +f('sys/module/snd_page_alloc/sections/.text', 0o664, b'0xffffffffa0034000\n') +f('sys/module/snd_page_alloc/sections/.init.text', 0o664, b'0xffffffffa0038000\n') +f('sys/module/snd_page_alloc/sections/__kcrctab', 0o664, b'0xffffffffa00350b0\n') +f('sys/module/snd_page_alloc/sections/.data', 0o664, b'0xffffffffa0036300\n') +f('sys/module/snd_page_alloc/sections/.symtab', 0o664, b'0xffffffffa0035180\n') +f('sys/module/snd_page_alloc/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00363c0\n') +f('sys/module/snd_page_alloc/sections/.rodata.str1.1', 0o664, b'0xffffffffa0034fd5\n') +d('sys/module/snd_page_alloc/notes', 0o775) +f('sys/module/snd_page_alloc/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00s\xc1\x8a\x9a\xf7g\x83-x\xc0\xbe\x98\xb0[\x95"\xd7\x97Q=') +d('sys/module/loop', 0o775) +f('sys/module/loop/initstate', 0o664, b'live\n') +f('sys/module/loop/srcversion', 0o664, b'7595F5D46DFDB4A2D489DDD\n') +f('sys/module/loop/refcnt', 0o664, b'0\n') +d('sys/module/loop/sections', 0o775) +f('sys/module/loop/sections/__bug_table', 0o664, b'0xffffffffa023ca1f\n') +f('sys/module/loop/sections/__ksymtab_strings', 0o664, b'0xffffffffa023caf0\n') +f('sys/module/loop/sections/.exit.text', 0o664, b'0xffffffffa023c72c\n') +f('sys/module/loop/sections/.note.gnu.build-id', 0o664, b'0xffffffffa023c7e4\n') +f('sys/module/loop/sections/.strtab', 0o664, b'0xffffffffa023d960\n') +f('sys/module/loop/sections/__ksymtab', 0o664, b'0xffffffffa023ca70\n') +f('sys/module/loop/sections/.rodata', 0o664, b'0xffffffffa023c808\n') +f('sys/module/loop/sections/__param', 0o664, b'0xffffffffa023caa0\n') +f('sys/module/loop/sections/.bss', 0o664, b'0xffffffffa023e780\n') +f('sys/module/loop/sections/.text', 0o664, b'0xffffffffa023a000\n') +f('sys/module/loop/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/loop/sections/__kcrctab', 0o664, b'0xffffffffa023ca90\n') +f('sys/module/loop/sections/.data', 0o664, b'0xffffffffa023e180\n') +f('sys/module/loop/sections/.symtab', 0o664, b'0xffffffffa023cb20\n') +f('sys/module/loop/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa023e3c0\n') +f('sys/module/loop/sections/.rodata.str1.1', 0o664, b'0xffffffffa023c88a\n') +d('sys/module/loop/notes', 0o775) +f('sys/module/loop/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x007;\xf4\xa1\x0e\xe8\x13\xedX\xe6\xbc\xa4\xcd\xde_\x7fe\x84\x90\x85') +d('sys/module/aes_generic', 0o775) +f('sys/module/aes_generic/initstate', 0o664, b'live\n') +f('sys/module/aes_generic/srcversion', 0o664, b'CE7DEF557FD2F72DE36DE4A\n') +f('sys/module/aes_generic/refcnt', 0o664, b'1\n') +d('sys/module/aes_generic/holders', 0o775) +l('sys/module/aes_generic/holders/aes_x86_64', '../../aes_x86_64') +d('sys/module/aes_generic/sections', 0o775) +f('sys/module/aes_generic/sections/__ksymtab_gpl', 0o664, b'0xffffffffa02ccef0\n') +f('sys/module/aes_generic/sections/__ksymtab_strings', 0o664, b'0xffffffffa02ccf80\n') +f('sys/module/aes_generic/sections/.exit.text', 0o664, b'0xffffffffa02cceb8\n') +f('sys/module/aes_generic/sections/.note.gnu.build-id', 0o664, b'0xffffffffa02ccecc\n') +f('sys/module/aes_generic/sections/.strtab', 0o664, b'0xffffffffa02cd678\n') +f('sys/module/aes_generic/sections/.bss', 0o664, b'0xffffffffa02cdf80\n') +f('sys/module/aes_generic/sections/.text', 0o664, b'0xffffffffa02cb000\n') +f('sys/module/aes_generic/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/aes_generic/sections/.data', 0o664, b'0xffffffffa02cda80\n') +f('sys/module/aes_generic/sections/.init.data', 0o664, b'0xffffffffa0065300\n') +f('sys/module/aes_generic/sections/.symtab', 0o664, b'0xffffffffa02ccfe8\n') +f('sys/module/aes_generic/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02cdbc0\n') +f('sys/module/aes_generic/sections/__kcrctab_gpl', 0o664, b'0xffffffffa02ccf50\n') +d('sys/module/aes_generic/notes', 0o775) +f('sys/module/aes_generic/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00V@\xa6&\x10\xf7X\xe0q\xbf\xb9G\xd9d\x004\x06h\xe6\x13') +d('sys/module/snd_seq_device', 0o775) +f('sys/module/snd_seq_device/initstate', 0o664, b'live\n') +f('sys/module/snd_seq_device/srcversion', 0o664, b'A166653189DAF15E3F2B588\n') +f('sys/module/snd_seq_device/refcnt', 0o664, b'1\n') +d('sys/module/snd_seq_device/holders', 0o775) +l('sys/module/snd_seq_device/holders/snd_seq', '../../snd_seq') +d('sys/module/snd_seq_device/sections', 0o775) +f('sys/module/snd_seq_device/sections/__ksymtab_strings', 0o664, b'0xffffffffa02a5d10\n') +f('sys/module/snd_seq_device/sections/.exit.text', 0o664, b'0xffffffffa02a5a5c\n') +f('sys/module/snd_seq_device/sections/.note.gnu.build-id', 0o664, b'0xffffffffa02a5a90\n') +f('sys/module/snd_seq_device/sections/.strtab', 0o664, b'0xffffffffa02a66e0\n') +f('sys/module/snd_seq_device/sections/__ksymtab', 0o664, b'0xffffffffa02a5c80\n') +f('sys/module/snd_seq_device/sections/.bss', 0o664, b'0xffffffffa02a7280\n') +f('sys/module/snd_seq_device/sections/.text', 0o664, b'0xffffffffa02a5000\n') +f('sys/module/snd_seq_device/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/snd_seq_device/sections/__kcrctab', 0o664, b'0xffffffffa02a5ce0\n') +f('sys/module/snd_seq_device/sections/.data', 0o664, b'0xffffffffa02a6de0\n') +f('sys/module/snd_seq_device/sections/.symtab', 0o664, b'0xffffffffa02a5db0\n') +f('sys/module/snd_seq_device/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa02a6ec0\n') +f('sys/module/snd_seq_device/sections/.rodata.str1.1', 0o664, b'0xffffffffa02a5bd0\n') +d('sys/module/snd_seq_device/notes', 0o775) +f('sys/module/snd_seq_device/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xb6B\x93\xc2\xcc\x83\xa8\xfc\xc2r\xf6\x8c\xcej\n\xc5\x87ys\r') +d('sys/module/8250', 0o775) +d('sys/module/8250/parameters', 0o775) +f('sys/module/8250/parameters/share_irqs', 0o664, b'0\n') +f('sys/module/8250/parameters/nr_uarts', 0o664, b'4\n') +d('sys/module/ipv6', 0o775) +f('sys/module/ipv6/initstate', 0o664, b'live\n') +f('sys/module/ipv6/srcversion', 0o664, b'184C844E7A78529619B4C9D\n') +f('sys/module/ipv6/refcnt', 0o664, b'10\n') +d('sys/module/ipv6/sections', 0o775) +f('sys/module/ipv6/sections/__ksymtab_gpl', 0o664, b'0xffffffffa028ac10\n') +f('sys/module/ipv6/sections/.smp_locks', 0o664, b'0xffffffffa028a240\n') +f('sys/module/ipv6/sections/__bug_table', 0o664, b'0xffffffffa0288edd\n') +f('sys/module/ipv6/sections/__ksymtab_strings', 0o664, b'0xffffffffa028b108\n') +f('sys/module/ipv6/sections/.exit.text', 0o664, b'0xffffffffa0285e40\n') +f('sys/module/ipv6/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0286024\n') +f('sys/module/ipv6/sections/.strtab', 0o664, b'0xffffffffa02937f0\n') +f('sys/module/ipv6/sections/__ksymtab', 0o664, b'0xffffffffa028ad90\n') +f('sys/module/ipv6/sections/.rodata', 0o664, b'0xffffffffa0286060\n') +f('sys/module/ipv6/sections/.data.read_mostly', 0o664, b'0xffffffffa029cf20\n') +f('sys/module/ipv6/sections/.bss', 0o664, b'0xffffffffa029dd80\n') +f('sys/module/ipv6/sections/.text', 0o664, b'0xffffffffa0258000\n') +f('sys/module/ipv6/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/ipv6/sections/__kcrctab', 0o664, b'0xffffffffa028afe0\n') +f('sys/module/ipv6/sections/.data', 0o664, b'0xffffffffa02998c0\n') +f('sys/module/ipv6/sections/.init.data', 0o664, b'0xffffffffa0065d80\n') +f('sys/module/ipv6/sections/.symtab', 0o664, b'0xffffffffa028b4c8\n') +f('sys/module/ipv6/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa029d9c0\n') +f('sys/module/ipv6/sections/.rodata.str1.1', 0o664, b'0xffffffffa02883c0\n') +f('sys/module/ipv6/sections/.ref.text', 0o664, b'0xffffffffa0285f40\n') +f('sys/module/ipv6/sections/__kcrctab_gpl', 0o664, b'0xffffffffa028ad10\n') +d('sys/module/ipv6/notes', 0o775) +f('sys/module/ipv6/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\x90\x01\xde\xf3>\xfd_r\xbc\xbb\x16\xbd\xceIf\xc2vC\xbd\xc9') +d('sys/module/microcode', 0o775) +f('sys/module/microcode/initstate', 0o664, b'live\n') +f('sys/module/microcode/srcversion', 0o664, b'FC3DA13E858B639D12F2043\n') +f('sys/module/microcode/refcnt', 0o664, b'0\n') +d('sys/module/microcode/sections', 0o775) +f('sys/module/microcode/sections/__bug_table', 0o664, b'0xffffffffa02516f7\n') +f('sys/module/microcode/sections/.exit.text', 0o664, b'0xffffffffa0250ff6\n') +f('sys/module/microcode/sections/.note.gnu.build-id', 0o664, b'0xffffffffa0251040\n') +f('sys/module/microcode/sections/.strtab', 0o664, b'0xffffffffa02520b8\n') +f('sys/module/microcode/sections/.rodata', 0o664, b'0xffffffffa0251080\n') +f('sys/module/microcode/sections/.bss', 0o664, b'0xffffffffa0252c40\n') +f('sys/module/microcode/sections/.text', 0o664, b'0xffffffffa0250000\n') +f('sys/module/microcode/sections/.init.text', 0o664, b'0xffffffffa0065000\n') +f('sys/module/microcode/sections/.ref.data', 0o664, b'0xffffffffa0252850\n') +f('sys/module/microcode/sections/.data', 0o664, b'0xffffffffa0252600\n') +f('sys/module/microcode/sections/.symtab', 0o664, b'0xffffffffa0251740\n') +f('sys/module/microcode/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa0252880\n') +f('sys/module/microcode/sections/.rodata.str1.1', 0o664, b'0xffffffffa0251218\n') +f('sys/module/microcode/sections/.cpuinit.text', 0o664, b'0xffffffffa0250d90\n') +d('sys/module/microcode/notes', 0o775) +f('sys/module/microcode/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\x81 p\x0b\x99+\x14\x05\x9c\xb2\xf6{\xacs\xa9\xf3<\xb5\x99\x1a') +d('sys/module/i8042', 0o775) +d('sys/module/i8042/parameters', 0o775) +f('sys/module/i8042/parameters/debug', 0o664, b'N\n') +f('sys/module/i8042/parameters/panicblink', 0o664, b'500\n') +d('sys/module/usbcore', 0o775) +f('sys/module/usbcore/initstate', 0o664, b'live\n') +f('sys/module/usbcore/srcversion', 0o664, b'4FF77EB8DAB25F4076D7357\n') +f('sys/module/usbcore/refcnt', 0o664, b'5\n') +d('sys/module/usbcore/holders', 0o775) +l('sys/module/usbcore/holders/uhci_hcd', '../../uhci_hcd') +l('sys/module/usbcore/holders/usb_storage', '../../usb_storage') +l('sys/module/usbcore/holders/cdc_acm', '../../cdc_acm') +l('sys/module/usbcore/holders/usbhid', '../../usbhid') +l('sys/module/usbcore/holders/ehci_hcd', '../../ehci_hcd') +d('sys/module/usbcore/drivers', 0o775) +l('sys/module/usbcore/drivers/usb:usbfs', '../../../bus/usb/drivers/usbfs') +l('sys/module/usbcore/drivers/usb:usb', '../../../bus/usb/drivers/usb') +l('sys/module/usbcore/drivers/usb:hub', '../../../bus/usb/drivers/hub') +d('sys/module/usbcore/parameters', 0o775) +f('sys/module/usbcore/parameters/use_both_schemes', 0o664, b'Y\n') +f('sys/module/usbcore/parameters/blinkenlights', 0o664, b'N\n') +f('sys/module/usbcore/parameters/usbfs_snoop', 0o664, b'N\n') +f('sys/module/usbcore/parameters/autosuspend', 0o664, b'2\n') +f('sys/module/usbcore/parameters/nousb', 0o664, b'N\n') +f('sys/module/usbcore/parameters/old_scheme_first', 0o664, b'N\n') +d('sys/module/usbcore/sections', 0o775) +f('sys/module/usbcore/sections/__ksymtab_gpl', 0o664, b'0xffffffffa004ea30\n') +f('sys/module/usbcore/sections/.smp_locks', 0o664, b'0xffffffffa004f930\n') +f('sys/module/usbcore/sections/__ex_table', 0o664, b'0xffffffffa004fa58\n') +f('sys/module/usbcore/sections/__bug_table', 0o664, b'0xffffffffa004fa40\n') +f('sys/module/usbcore/sections/__ksymtab_strings', 0o664, b'0xffffffffa004f300\n') +f('sys/module/usbcore/sections/.exit.text', 0o664, b'0xffffffffa004ba30\n') +f('sys/module/usbcore/sections/.note.gnu.build-id', 0o664, b'0xffffffffa004bb30\n') +f('sys/module/usbcore/sections/.strtab', 0o664, b'0xffffffffa0055cf8\n') +f('sys/module/usbcore/sections/.fixup', 0o664, b'0xffffffffa004ba87\n') +f('sys/module/usbcore/sections/.rodata', 0o664, b'0xffffffffa004bb60\n') +f('sys/module/usbcore/sections/__param', 0o664, b'0xffffffffa004f210\n') +f('sys/module/usbcore/sections/.bss', 0o664, b'0xffffffffa005cec0\n') +f('sys/module/usbcore/sections/.text', 0o664, b'0xffffffffa0038000\n') +f('sys/module/usbcore/sections/.init.text', 0o664, b'0xffffffffa0027000\n') +f('sys/module/usbcore/sections/.data', 0o664, b'0xffffffffa005af00\n') +f('sys/module/usbcore/sections/.symtab', 0o664, b'0xffffffffa004fb18\n') +f('sys/module/usbcore/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa005cb00\n') +f('sys/module/usbcore/sections/.rodata.str1.1', 0o664, b'0xffffffffa004c044\n') +f('sys/module/usbcore/sections/__kcrctab_gpl', 0o664, b'0xffffffffa004ef70\n') +d('sys/module/usbcore/notes', 0o775) +f('sys/module/usbcore/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00!\xbeP\xa2@m\xffg\xff\x1b\xa8\x8f\xd2\xb3\x11\x14[\xb0\x89\x1e') +d('sys/module/intel_agp', 0o775) +f('sys/module/intel_agp/initstate', 0o664, b'live\n') +f('sys/module/intel_agp/srcversion', 0o664, b'98AFACFFF6A1ADC3A6FAB67\n') +f('sys/module/intel_agp/refcnt', 0o664, b'0\n') +d('sys/module/intel_agp/drivers', 0o775) +l('sys/module/intel_agp/drivers/pci:agpgart-intel', '../../../bus/pci/drivers/agpgart-intel') +d('sys/module/intel_agp/sections', 0o775) +f('sys/module/intel_agp/sections/.smp_locks', 0o664, b'0xffffffffa008ae38\n') +f('sys/module/intel_agp/sections/.exit.text', 0o664, b'0xffffffffa00893ac\n') +f('sys/module/intel_agp/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00896b0\n') +f('sys/module/intel_agp/sections/.strtab', 0o664, b'0xffffffffa008c1b8\n') +f('sys/module/intel_agp/sections/.devexit.text', 0o664, b'0xffffffffa00893be\n') +f('sys/module/intel_agp/sections/.rodata', 0o664, b'0xffffffffa00896e0\n') +f('sys/module/intel_agp/sections/.bss', 0o664, b'0xffffffffa008da00\n') +f('sys/module/intel_agp/sections/.text', 0o664, b'0xffffffffa0086000\n') +f('sys/module/intel_agp/sections/.init.text', 0o664, b'0xffffffffa008f000\n') +f('sys/module/intel_agp/sections/.data', 0o664, b'0xffffffffa008cf60\n') +f('sys/module/intel_agp/sections/.devinit.text', 0o664, b'0xffffffffa0089400\n') +f('sys/module/intel_agp/sections/.symtab', 0o664, b'0xffffffffa008ae50\n') +f('sys/module/intel_agp/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa008d640\n') +f('sys/module/intel_agp/sections/.rodata.str1.1', 0o664, b'0xffffffffa008a9c0\n') +d('sys/module/intel_agp/notes', 0o775) +f('sys/module/intel_agp/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xb0\xb5IU\x04F\xdb\x80\xdf\x9a8\xedq\x0b\xd4\xc7K\x851\x86') +d('sys/module/evdev', 0o775) +f('sys/module/evdev/initstate', 0o664, b'live\n') +f('sys/module/evdev/srcversion', 0o664, b'6F6934C1F95317926EA0520\n') +f('sys/module/evdev/refcnt', 0o664, b'5\n') +d('sys/module/evdev/sections', 0o775) +f('sys/module/evdev/sections/.exit.text', 0o664, b'0xffffffffa00b3724\n') +f('sys/module/evdev/sections/.note.gnu.build-id', 0o664, b'0xffffffffa00b3738\n') +f('sys/module/evdev/sections/.strtab', 0o664, b'0xffffffffa00b4610\n') +f('sys/module/evdev/sections/.rodata', 0o664, b'0xffffffffa00b3760\n') +f('sys/module/evdev/sections/.bss', 0o664, b'0xffffffffa00b50c0\n') +f('sys/module/evdev/sections/.text', 0o664, b'0xffffffffa00b2000\n') +f('sys/module/evdev/sections/.init.text', 0o664, b'0xffffffffa00b7000\n') +f('sys/module/evdev/sections/.data', 0o664, b'0xffffffffa00b4be0\n') +f('sys/module/evdev/sections/.symtab', 0o664, b'0xffffffffa00b3b60\n') +f('sys/module/evdev/sections/.gnu.linkonce.this_module', 0o664, b'0xffffffffa00b4d00\n') +f('sys/module/evdev/sections/.rodata.str1.1', 0o664, b'0xffffffffa00b3a38\n') +d('sys/module/evdev/notes', 0o775) +f('sys/module/evdev/notes/.note.gnu.build-id', 0o664, b'\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\x8d/u!\xb1\xf2\xe7\x10z\x8a\xf7\x0c\x88\x17\x1c4i\\2\xa8') +d('sys/module/atkbd', 0o775) +d('sys/module/atkbd/drivers', 0o775) +l('sys/module/atkbd/drivers/serio:atkbd', '../../../bus/serio/drivers/atkbd') +d('sys/class', 0o755) +d('sys/class/rfkill', 0o755) +l('sys/class/rfkill/rfkill0', '../../devices/platform/thinkpad_acpi/rfkill/rfkill0') +d('sys/class/rtc', 0o755) +l('sys/class/rtc/rtc0', '../../devices/pnp0/00:07/rtc/rtc0') +d('sys/class/usb_endpoint', 0o755) +l('sys/class/usb_endpoint/usbdev1.1_ep00', '../../devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00') +l('sys/class/usb_endpoint/usbdev4.3_ep83', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83') +l('sys/class/usb_endpoint/usbdev4.2_ep04', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04') +l('sys/class/usb_endpoint/usbdev1.1_ep81', '../../devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81') +l('sys/class/usb_endpoint/usbdev3.1_ep81', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81') +l('sys/class/usb_endpoint/usbdev4.1_ep00', '../../devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00') +l('sys/class/usb_endpoint/usbdev3.4_ep00', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00') +l('sys/class/usb_endpoint/usbdev4.2_ep00', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00') +l('sys/class/usb_endpoint/usbdev5.7_ep81', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81') +l('sys/class/usb_endpoint/usbdev5.9_ep81', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81') +l('sys/class/usb_endpoint/usbdev5.9_ep83', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83') +l('sys/class/usb_endpoint/usbdev5.9_ep84', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84') +l('sys/class/usb_endpoint/usbdev5.9_ep00', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00') +l('sys/class/usb_endpoint/usbdev4.2_ep03', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03') +l('sys/class/usb_endpoint/usbdev4.2_ep84', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84') +l('sys/class/usb_endpoint/usbdev3.1_ep00', '../../devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00') +l('sys/class/usb_endpoint/usbdev4.2_ep83', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83') +l('sys/class/usb_endpoint/usbdev4.2_ep02', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02') +l('sys/class/usb_endpoint/usbdev4.3_ep00', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00') +l('sys/class/usb_endpoint/usbdev5.7_ep00', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00') +l('sys/class/usb_endpoint/usbdev4.1_ep81', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81') +l('sys/class/usb_endpoint/usbdev5.9_ep02', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02') +l('sys/class/usb_endpoint/usbdev4.2_ep82', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82') +l('sys/class/usb_endpoint/usbdev2.1_ep81', '../../devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81') +l('sys/class/usb_endpoint/usbdev4.3_ep81', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81') +l('sys/class/usb_endpoint/usbdev2.1_ep00', '../../devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00') +l('sys/class/usb_endpoint/usbdev5.1_ep81', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81') +l('sys/class/usb_endpoint/usbdev4.2_ep81', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81') +l('sys/class/usb_endpoint/usbdev3.4_ep81', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81') +l('sys/class/usb_endpoint/usbdev4.3_ep02', '../../devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02') +l('sys/class/usb_endpoint/usbdev5.7_ep02', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02') +l('sys/class/usb_endpoint/usbdev5.1_ep00', '../../devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00') +l('sys/class/usb_endpoint/usbdev5.9_ep01', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01') +l('sys/class/usb_endpoint/usbdev5.9_ep82', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82') +d('sys/class/ieee80211', 0o755) +l('sys/class/ieee80211/phy0', '../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0') +d('sys/class/scsi_disk', 0o755) +l('sys/class/scsi_disk/7:0:0:0', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0') +l('sys/class/scsi_disk/0:0:0:0', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0') +d('sys/class/vc', 0o755) +l('sys/class/vc/vcsa3', '../../devices/virtual/vc/vcsa3') +l('sys/class/vc/vcsa6', '../../devices/virtual/vc/vcsa6') +l('sys/class/vc/vcsa2', '../../devices/virtual/vc/vcsa2') +l('sys/class/vc/vcsa', '../../devices/virtual/vc/vcsa') +l('sys/class/vc/vcs2', '../../devices/virtual/vc/vcs2') +l('sys/class/vc/vcs7', '../../devices/virtual/vc/vcs7') +l('sys/class/vc/vcsa5', '../../devices/virtual/vc/vcsa5') +l('sys/class/vc/vcsa10', '../../devices/virtual/vc/vcsa10') +l('sys/class/vc/vcs10', '../../devices/virtual/vc/vcs10') +l('sys/class/vc/vcsa1', '../../devices/virtual/vc/vcsa1') +l('sys/class/vc/vcsa4', '../../devices/virtual/vc/vcsa4') +l('sys/class/vc/vcs', '../../devices/virtual/vc/vcs') +l('sys/class/vc/vcs1', '../../devices/virtual/vc/vcs1') +l('sys/class/vc/vcs4', '../../devices/virtual/vc/vcs4') +l('sys/class/vc/vcsa7', '../../devices/virtual/vc/vcsa7') +l('sys/class/vc/vcs6', '../../devices/virtual/vc/vcs6') +l('sys/class/vc/vcs3', '../../devices/virtual/vc/vcs3') +l('sys/class/vc/vcs5', '../../devices/virtual/vc/vcs5') +d('sys/class/mem', 0o755) +l('sys/class/mem/zero', '../../devices/virtual/mem/zero') +l('sys/class/mem/kmsg', '../../devices/virtual/mem/kmsg') +l('sys/class/mem/mem', '../../devices/virtual/mem/mem') +l('sys/class/mem/urandom', '../../devices/virtual/mem/urandom') +l('sys/class/mem/port', '../../devices/virtual/mem/port') +l('sys/class/mem/null', '../../devices/virtual/mem/null') +l('sys/class/mem/kmem', '../../devices/virtual/mem/kmem') +l('sys/class/mem/full', '../../devices/virtual/mem/full') +l('sys/class/mem/random', '../../devices/virtual/mem/random') +d('sys/class/pci_bus', 0o755) +l('sys/class/pci_bus/0000:00', '../../devices/pci0000:00/pci_bus/0000:00') +l('sys/class/pci_bus/0000:01', '../../devices/pci0000:00/0000:00:01.0/pci_bus/0000:01') +l('sys/class/pci_bus/0000:03', '../../devices/pci0000:00/0000:00:1c.1/pci_bus/0000:03') +l('sys/class/pci_bus/0000:0c', '../../devices/pci0000:00/0000:00:1c.3/pci_bus/0000:0c') +l('sys/class/pci_bus/0000:16', '../../devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pci_bus/0000:16') +l('sys/class/pci_bus/0000:04', '../../devices/pci0000:00/0000:00:1c.2/pci_bus/0000:04') +l('sys/class/pci_bus/0000:02', '../../devices/pci0000:00/0000:00:1c.0/pci_bus/0000:02') +l('sys/class/pci_bus/0000:15', '../../devices/pci0000:00/0000:00:1e.0/pci_bus/0000:15') +d('sys/class/hwmon', 0o755) +l('sys/class/hwmon/hwmon0', '../../devices/platform/thinkpad_hwmon/hwmon/hwmon0') +d('sys/class/net', 0o755) +l('sys/class/net/wmaster0', '../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0') +l('sys/class/net/wlan0', '../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0') +l('sys/class/net/lo', '../../devices/virtual/net/lo') +l('sys/class/net/eth0', '../../devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0') +d('sys/class/dmi', 0o755) +l('sys/class/dmi/id', '../../devices/virtual/dmi/id') +d('sys/class/firmware', 0o755) +f('sys/class/firmware/timeout', 0o644, b'60\n') +d('sys/class/scsi_generic', 0o755) +l('sys/class/scsi_generic/sg0', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_generic/sg0') +l('sys/class/scsi_generic/sg1', '../../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_generic/sg1') +l('sys/class/scsi_generic/sg2', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_generic/sg2') +d('sys/class/bdi', 0o755) +l('sys/class/bdi/7:1', '../../devices/virtual/bdi/7:1') +l('sys/class/bdi/7:0', '../../devices/virtual/bdi/7:0') +l('sys/class/bdi/7:2', '../../devices/virtual/bdi/7:2') +l('sys/class/bdi/7:4', '../../devices/virtual/bdi/7:4') +l('sys/class/bdi/7:3', '../../devices/virtual/bdi/7:3') +l('sys/class/bdi/11:0', '../../devices/virtual/bdi/11:0') +l('sys/class/bdi/7:5', '../../devices/virtual/bdi/7:5') +l('sys/class/bdi/8:0', '../../devices/virtual/bdi/8:0') +l('sys/class/bdi/default', '../../devices/virtual/bdi/default') +l('sys/class/bdi/0:16', '../../devices/virtual/bdi/0:16') +l('sys/class/bdi/8:16', '../../devices/virtual/bdi/8:16') +l('sys/class/bdi/9:0', '../../devices/virtual/bdi/9:0') +l('sys/class/bdi/7:7', '../../devices/virtual/bdi/7:7') +l('sys/class/bdi/7:6', '../../devices/virtual/bdi/7:6') +d('sys/class/leds', 0o755) +l('sys/class/leds/iwl-phy0:TX', '../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:TX') +l('sys/class/leds/tpacpi::bay_active', '../../devices/platform/thinkpad_acpi/leds/tpacpi::bay_active') +l('sys/class/leds/tpacpi:orange:batt', '../../devices/platform/thinkpad_acpi/leds/tpacpi:orange:batt') +l('sys/class/leds/tpacpi::dock_active', '../../devices/platform/thinkpad_acpi/leds/tpacpi::dock_active') +l('sys/class/leds/tpacpi::unknown_led', '../../devices/platform/thinkpad_acpi/leds/tpacpi::unknown_led') +l('sys/class/leds/iwl-phy0:assoc', '../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:assoc') +l('sys/class/leds/tpacpi:green:batt', '../../devices/platform/thinkpad_acpi/leds/tpacpi:green:batt') +l('sys/class/leds/iwl-phy0:radio', '../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:radio') +l('sys/class/leds/iwl-phy0:RX', '../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:RX') +l('sys/class/leds/tpacpi::dock_batt', '../../devices/platform/thinkpad_acpi/leds/tpacpi::dock_batt') +l('sys/class/leds/tpacpi::thinklight', '../../devices/platform/thinkpad_acpi/leds/tpacpi::thinklight') +l('sys/class/leds/tpacpi::power', '../../devices/platform/thinkpad_acpi/leds/tpacpi::power') +l('sys/class/leds/tpacpi::standby', '../../devices/platform/thinkpad_acpi/leds/tpacpi::standby') +d('sys/class/usb_host', 0o755) +l('sys/class/usb_host/usb_host1', '../../devices/pci0000:00/0000:00:1d.0/usb_host/usb_host1') +l('sys/class/usb_host/usb_host2', '../../devices/pci0000:00/0000:00:1d.1/usb_host/usb_host2') +l('sys/class/usb_host/usb_host4', '../../devices/pci0000:00/0000:00:1d.3/usb_host/usb_host4') +l('sys/class/usb_host/usb_host5', '../../devices/pci0000:00/0000:00:1d.7/usb_host/usb_host5') +l('sys/class/usb_host/usb_host3', '../../devices/pci0000:00/0000:00:1d.2/usb_host/usb_host3') +d('sys/class/pcmcia_socket', 0o755) +l('sys/class/pcmcia_socket/pcmcia_socket0', '../../devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0') +d('sys/class/sound', 0o755) +l('sys/class/sound/audio', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/audio') +l('sys/class/sound/dsp', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/dsp') +l('sys/class/sound/timer', '../../devices/virtual/sound/timer') +l('sys/class/sound/card0', '../../devices/pci0000:00/0000:00:1b.0/sound/card0') +l('sys/class/sound/seq', '../../devices/virtual/sound/seq') +l('sys/class/sound/mixer', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/mixer') +l('sys/class/sound/pcmC0D0p', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p') +l('sys/class/sound/controlC0', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0') +l('sys/class/sound/pcmC0D0c', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c') +l('sys/class/sound/adsp', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/adsp') +l('sys/class/sound/pcmC0D1p', '../../devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p') +d('sys/class/misc', 0o755) +l('sys/class/misc/uinput', '../../devices/virtual/misc/uinput') +l('sys/class/misc/fuse', '../../devices/virtual/misc/fuse') +l('sys/class/misc/hpet', '../../devices/virtual/misc/hpet') +l('sys/class/misc/cpu_dma_latency', '../../devices/virtual/misc/cpu_dma_latency') +l('sys/class/misc/mcelog', '../../devices/virtual/misc/mcelog') +l('sys/class/misc/device-mapper', '../../devices/virtual/misc/device-mapper') +l('sys/class/misc/psaux', '../../devices/virtual/misc/psaux') +l('sys/class/misc/nvram', '../../devices/virtual/misc/nvram') +l('sys/class/misc/network_latency', '../../devices/virtual/misc/network_latency') +l('sys/class/misc/network_throughput', '../../devices/virtual/misc/network_throughput') +l('sys/class/misc/microcode', '../../devices/virtual/misc/microcode') +d('sys/class/vtconsole', 0o755) +l('sys/class/vtconsole/vtcon1', '../../devices/virtual/vtconsole/vtcon1') +l('sys/class/vtconsole/vtcon0', '../../devices/virtual/vtconsole/vtcon0') +d('sys/class/bsg', 0o755) +l('sys/class/bsg/7:0:0:0', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/bsg/7:0:0:0') +l('sys/class/bsg/0:0:0:0', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0') +l('sys/class/bsg/4:0:0:0', '../../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0') +d('sys/class/input', 0o755) +l('sys/class/input/event0', '../../devices/platform/i8042/serio0/input/input0/event0') +l('sys/class/input/input0', '../../devices/platform/i8042/serio0/input/input0') +l('sys/class/input/event4', '../../devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/event4') +l('sys/class/input/mouse0', '../../devices/platform/i8042/serio1/input/input1/mouse0') +l('sys/class/input/mouse1', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/mouse1') +l('sys/class/input/event2', '../../devices/platform/pcspkr/input/input2/event2') +l('sys/class/input/input2', '../../devices/platform/pcspkr/input/input2') +l('sys/class/input/input5', '../../devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5') +l('sys/class/input/input8', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8') +l('sys/class/input/input3', '../../devices/LNXSYSTM:00/LNXPWRBN:00/input/input3') +l('sys/class/input/input1', '../../devices/platform/i8042/serio1/input/input1') +l('sys/class/input/mice', '../../devices/virtual/input/mice') +l('sys/class/input/event6', '../../devices/virtual/input/input6/event6') +l('sys/class/input/input6', '../../devices/virtual/input/input6') +l('sys/class/input/event3', '../../devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/event3') +l('sys/class/input/event1', '../../devices/platform/i8042/serio1/input/input1/event1') +l('sys/class/input/input4', '../../devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4') +l('sys/class/input/event7', '../../devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/event7') +l('sys/class/input/event5', '../../devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/event5') +d('sys/class/thermal', 0o755) +l('sys/class/thermal/thermal_zone1', '../../devices/virtual/thermal/thermal_zone1') +l('sys/class/thermal/cooling_device1', '../../devices/virtual/thermal/cooling_device1') +l('sys/class/thermal/cooling_device0', '../../devices/virtual/thermal/cooling_device0') +l('sys/class/thermal/thermal_zone0', '../../devices/virtual/thermal/thermal_zone0') +d('sys/class/power_supply', 0o755) +l('sys/class/power_supply/AC', '../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power_supply/AC') +l('sys/class/power_supply/BAT0', '../../devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0') +d('sys/class/block', 0o755) +l('sys/class/block/loop1', '../../devices/virtual/block/loop1') +l('sys/class/block/loop7', '../../devices/virtual/block/loop7') +l('sys/class/block/loop0', '../../devices/virtual/block/loop0') +l('sys/class/block/sda10', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10') +l('sys/class/block/sr0', '../../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0') +l('sys/class/block/loop5', '../../devices/virtual/block/loop5') +l('sys/class/block/loop3', '../../devices/virtual/block/loop3') +l('sys/class/block/sda9', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9') +l('sys/class/block/sda7', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7') +l('sys/class/block/loop6', '../../devices/virtual/block/loop6') +l('sys/class/block/sdb', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb') +l('sys/class/block/sda1', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1') +l('sys/class/block/loop2', '../../devices/virtual/block/loop2') +l('sys/class/block/sda8', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8') +l('sys/class/block/sda5', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5') +l('sys/class/block/loop4', '../../devices/virtual/block/loop4') +l('sys/class/block/sda6', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6') +l('sys/class/block/sda', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda') +l('sys/class/block/md0', '../../devices/virtual/block/md0') +l('sys/class/block/sdb1', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1') +d('sys/class/scsi_host', 0o755) +l('sys/class/scsi_host/host0', '../../devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0') +l('sys/class/scsi_host/host5', '../../devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5') +l('sys/class/scsi_host/host1', '../../devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1') +l('sys/class/scsi_host/host4', '../../devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4') +l('sys/class/scsi_host/host2', '../../devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2') +l('sys/class/scsi_host/host7', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7') +l('sys/class/scsi_host/host3', '../../devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3') +d('sys/class/graphics', 0o755) +l('sys/class/graphics/fbcon', '../../devices/virtual/graphics/fbcon') +l('sys/class/graphics/fb0', '../../devices/platform/vesafb.0/graphics/fb0') +d('sys/class/tty', 0o755) +l('sys/class/tty/tty51', '../../devices/virtual/tty/tty51') +l('sys/class/tty/tty24', '../../devices/virtual/tty/tty24') +l('sys/class/tty/tty61', '../../devices/virtual/tty/tty61') +l('sys/class/tty/ttyS1', '../../devices/platform/serial8250/tty/ttyS1') +l('sys/class/tty/tty40', '../../devices/virtual/tty/tty40') +l('sys/class/tty/tty60', '../../devices/virtual/tty/tty60') +l('sys/class/tty/tty15', '../../devices/virtual/tty/tty15') +l('sys/class/tty/tty27', '../../devices/virtual/tty/tty27') +l('sys/class/tty/tty7', '../../devices/virtual/tty/tty7') +l('sys/class/tty/tty43', '../../devices/virtual/tty/tty43') +l('sys/class/tty/tty23', '../../devices/virtual/tty/tty23') +l('sys/class/tty/tty14', '../../devices/virtual/tty/tty14') +l('sys/class/tty/tty56', '../../devices/virtual/tty/tty56') +l('sys/class/tty/tty3', '../../devices/virtual/tty/tty3') +l('sys/class/tty/ttyS3', '../../devices/platform/serial8250/tty/ttyS3') +l('sys/class/tty/tty49', '../../devices/virtual/tty/tty49') +l('sys/class/tty/tty47', '../../devices/virtual/tty/tty47') +l('sys/class/tty/tty57', '../../devices/virtual/tty/tty57') +l('sys/class/tty/tty30', '../../devices/virtual/tty/tty30') +l('sys/class/tty/tty45', '../../devices/virtual/tty/tty45') +l('sys/class/tty/tty22', '../../devices/virtual/tty/tty22') +l('sys/class/tty/tty55', '../../devices/virtual/tty/tty55') +l('sys/class/tty/tty11', '../../devices/virtual/tty/tty11') +l('sys/class/tty/tty53', '../../devices/virtual/tty/tty53') +l('sys/class/tty/tty12', '../../devices/virtual/tty/tty12') +l('sys/class/tty/tty28', '../../devices/virtual/tty/tty28') +l('sys/class/tty/tty58', '../../devices/virtual/tty/tty58') +l('sys/class/tty/tty32', '../../devices/virtual/tty/tty32') +l('sys/class/tty/tty44', '../../devices/virtual/tty/tty44') +l('sys/class/tty/tty6', '../../devices/virtual/tty/tty6') +l('sys/class/tty/tty9', '../../devices/virtual/tty/tty9') +l('sys/class/tty/tty26', '../../devices/virtual/tty/tty26') +l('sys/class/tty/tty10', '../../devices/virtual/tty/tty10') +l('sys/class/tty/tty39', '../../devices/virtual/tty/tty39') +l('sys/class/tty/tty0', '../../devices/virtual/tty/tty0') +l('sys/class/tty/tty36', '../../devices/virtual/tty/tty36') +l('sys/class/tty/tty34', '../../devices/virtual/tty/tty34') +l('sys/class/tty/tty16', '../../devices/virtual/tty/tty16') +l('sys/class/tty/tty25', '../../devices/virtual/tty/tty25') +l('sys/class/tty/tty13', '../../devices/virtual/tty/tty13') +l('sys/class/tty/tty52', '../../devices/virtual/tty/tty52') +l('sys/class/tty/ttyS0', '../../devices/platform/serial8250/tty/ttyS0') +l('sys/class/tty/tty31', '../../devices/virtual/tty/tty31') +l('sys/class/tty/tty35', '../../devices/virtual/tty/tty35') +l('sys/class/tty/tty54', '../../devices/virtual/tty/tty54') +l('sys/class/tty/tty63', '../../devices/virtual/tty/tty63') +l('sys/class/tty/tty1', '../../devices/virtual/tty/tty1') +l('sys/class/tty/tty33', '../../devices/virtual/tty/tty33') +l('sys/class/tty/tty18', '../../devices/virtual/tty/tty18') +l('sys/class/tty/ttyACM0', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0') +l('sys/class/tty/tty42', '../../devices/virtual/tty/tty42') +l('sys/class/tty/tty8', '../../devices/virtual/tty/tty8') +l('sys/class/tty/tty37', '../../devices/virtual/tty/tty37') +l('sys/class/tty/tty5', '../../devices/virtual/tty/tty5') +l('sys/class/tty/tty48', '../../devices/virtual/tty/tty48') +l('sys/class/tty/tty17', '../../devices/virtual/tty/tty17') +l('sys/class/tty/tty62', '../../devices/virtual/tty/tty62') +l('sys/class/tty/tty59', '../../devices/virtual/tty/tty59') +l('sys/class/tty/tty50', '../../devices/virtual/tty/tty50') +l('sys/class/tty/tty21', '../../devices/virtual/tty/tty21') +l('sys/class/tty/ttyS2', '../../devices/platform/serial8250/tty/ttyS2') +l('sys/class/tty/tty19', '../../devices/virtual/tty/tty19') +l('sys/class/tty/ptmx', '../../devices/virtual/tty/ptmx') +l('sys/class/tty/tty46', '../../devices/virtual/tty/tty46') +l('sys/class/tty/tty2', '../../devices/virtual/tty/tty2') +l('sys/class/tty/console', '../../devices/virtual/tty/console') +l('sys/class/tty/tty41', '../../devices/virtual/tty/tty41') +l('sys/class/tty/tty4', '../../devices/virtual/tty/tty4') +l('sys/class/tty/tty29', '../../devices/virtual/tty/tty29') +l('sys/class/tty/tty', '../../devices/virtual/tty/tty') +l('sys/class/tty/tty38', '../../devices/virtual/tty/tty38') +l('sys/class/tty/tty20', '../../devices/virtual/tty/tty20') +d('sys/class/scsi_device', 0o755) +l('sys/class/scsi_device/7:0:0:0', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_device/7:0:0:0') +l('sys/class/scsi_device/0:0:0:0', '../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0') +l('sys/class/scsi_device/4:0:0:0', '../../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0') +d('sys/block', 0o755) +l('sys/block/loop1', '../devices/virtual/block/loop1') +l('sys/block/loop7', '../devices/virtual/block/loop7') +l('sys/block/loop0', '../devices/virtual/block/loop0') +l('sys/block/sr0', '../devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0') +l('sys/block/loop5', '../devices/virtual/block/loop5') +l('sys/block/loop3', '../devices/virtual/block/loop3') +l('sys/block/loop6', '../devices/virtual/block/loop6') +l('sys/block/sdb', '../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb') +l('sys/block/loop2', '../devices/virtual/block/loop2') +l('sys/block/loop4', '../devices/virtual/block/loop4') +l('sys/block/sda', '../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda') +l('sys/block/md0', '../devices/virtual/block/md0') +d('sys/devices', 0o755) +d('sys/devices/system', 0o755) +d('sys/devices/system/machinecheck', 0o755) +d('sys/devices/system/machinecheck/machinecheck1', 0o755) +f('sys/devices/system/machinecheck/machinecheck1/trigger', 0o644, b'\n') +f('sys/devices/system/machinecheck/machinecheck1/bank0ctl', 0o644, b'ffffffffffffffff\n') +f('sys/devices/system/machinecheck/machinecheck1/check_interval', 0o644, b'12c\n') +f('sys/devices/system/machinecheck/machinecheck1/tolerant', 0o644, b'1\n') +f('sys/devices/system/machinecheck/machinecheck1/bank1ctl', 0o644, b'ffffffffffffffff\n') +f('sys/devices/system/machinecheck/machinecheck1/bank5ctl', 0o644, b'ffffffffffffffff\n') +f('sys/devices/system/machinecheck/machinecheck1/bank3ctl', 0o644, b'ffffffffffffffff\n') +f('sys/devices/system/machinecheck/machinecheck1/bank2ctl', 0o644, b'ffffffffffffffff\n') +f('sys/devices/system/machinecheck/machinecheck1/bank4ctl', 0o644, b'ffffffffffffffff\n') +d('sys/devices/system/machinecheck/machinecheck0', 0o755) +f('sys/devices/system/machinecheck/machinecheck0/trigger', 0o644, b'\n') +f('sys/devices/system/machinecheck/machinecheck0/bank0ctl', 0o644, b'ffffffffffffffff\n') +f('sys/devices/system/machinecheck/machinecheck0/check_interval', 0o644, b'12c\n') +f('sys/devices/system/machinecheck/machinecheck0/tolerant', 0o644, b'1\n') +f('sys/devices/system/machinecheck/machinecheck0/bank1ctl', 0o644, b'ffffffffffffffff\n') +f('sys/devices/system/machinecheck/machinecheck0/bank5ctl', 0o644, b'ffffffffffffffff\n') +f('sys/devices/system/machinecheck/machinecheck0/bank3ctl', 0o644, b'ffffffffffffffff\n') +f('sys/devices/system/machinecheck/machinecheck0/bank2ctl', 0o644, b'ffffffffffffffff\n') +f('sys/devices/system/machinecheck/machinecheck0/bank4ctl', 0o644, b'ffffffffffffffff\n') +d('sys/devices/system/clocksource', 0o755) +d('sys/devices/system/clocksource/clocksource0', 0o755) +f('sys/devices/system/clocksource/clocksource0/available_clocksource', 0o644, b'hpet acpi_pm jiffies tsc \n') +f('sys/devices/system/clocksource/clocksource0/current_clocksource', 0o644, b'hpet\n') +d('sys/devices/system/cpu', 0o755) +f('sys/devices/system/cpu/possible', 0o644, b'0-1\n') +f('sys/devices/system/cpu/online', 0o644, b'0-1\n') +f('sys/devices/system/cpu/present', 0o644, b'0-1\n') +f('sys/devices/system/cpu/sched_mc_power_savings', 0o644, b'1\n') +d('sys/devices/system/cpu/cpu0', 0o755) +f('sys/devices/system/cpu/cpu0/crash_notes', 0o644, b'7fb20920\n') +d('sys/devices/system/cpu/cpu0/topology', 0o755) +f('sys/devices/system/cpu/cpu0/topology/thread_siblings', 0o644, b'01\n') +f('sys/devices/system/cpu/cpu0/topology/thread_siblings_list', 0o644, b'0\n') +f('sys/devices/system/cpu/cpu0/topology/core_siblings_list', 0o644, b'0-1\n') +f('sys/devices/system/cpu/cpu0/topology/core_siblings', 0o644, b'03\n') +f('sys/devices/system/cpu/cpu0/topology/core_id', 0o644, b'0\n') +f('sys/devices/system/cpu/cpu0/topology/physical_package_id', 0o644, b'0\n') +d('sys/devices/system/cpu/cpu0/thermal_throttle', 0o755) +f('sys/devices/system/cpu/cpu0/thermal_throttle/count', 0o644, b'0\n') +d('sys/devices/system/cpu/cpu0/cache', 0o755) +d('sys/devices/system/cpu/cpu0/cache/index0', 0o755) +f('sys/devices/system/cpu/cpu0/cache/index0/ways_of_associativity', 0o644, b'8\n') +f('sys/devices/system/cpu/cpu0/cache/index0/type', 0o644, b'Data\n') +f('sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size', 0o644, b'64\n') +f('sys/devices/system/cpu/cpu0/cache/index0/number_of_sets', 0o644, b'64\n') +f('sys/devices/system/cpu/cpu0/cache/index0/size', 0o644, b'32K\n') +f('sys/devices/system/cpu/cpu0/cache/index0/physical_line_partition', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu0/cache/index0/shared_cpu_map', 0o644, b'01\n') +f('sys/devices/system/cpu/cpu0/cache/index0/level', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu0/cache/index0/shared_cpu_list', 0o644, b'0\n') +d('sys/devices/system/cpu/cpu0/cache/index2', 0o755) +f('sys/devices/system/cpu/cpu0/cache/index2/ways_of_associativity', 0o644, b'16\n') +f('sys/devices/system/cpu/cpu0/cache/index2/type', 0o644, b'Unified\n') +f('sys/devices/system/cpu/cpu0/cache/index2/coherency_line_size', 0o644, b'64\n') +f('sys/devices/system/cpu/cpu0/cache/index2/number_of_sets', 0o644, b'4096\n') +f('sys/devices/system/cpu/cpu0/cache/index2/size', 0o644, b'4096K\n') +f('sys/devices/system/cpu/cpu0/cache/index2/physical_line_partition', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu0/cache/index2/shared_cpu_map', 0o644, b'03\n') +f('sys/devices/system/cpu/cpu0/cache/index2/level', 0o644, b'2\n') +f('sys/devices/system/cpu/cpu0/cache/index2/shared_cpu_list', 0o644, b'0-1\n') +d('sys/devices/system/cpu/cpu0/cache/index1', 0o755) +f('sys/devices/system/cpu/cpu0/cache/index1/ways_of_associativity', 0o644, b'8\n') +f('sys/devices/system/cpu/cpu0/cache/index1/type', 0o644, b'Instruction\n') +f('sys/devices/system/cpu/cpu0/cache/index1/coherency_line_size', 0o644, b'64\n') +f('sys/devices/system/cpu/cpu0/cache/index1/number_of_sets', 0o644, b'64\n') +f('sys/devices/system/cpu/cpu0/cache/index1/size', 0o644, b'32K\n') +f('sys/devices/system/cpu/cpu0/cache/index1/physical_line_partition', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu0/cache/index1/shared_cpu_map', 0o644, b'01\n') +f('sys/devices/system/cpu/cpu0/cache/index1/level', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu0/cache/index1/shared_cpu_list', 0o644, b'0\n') +d('sys/devices/system/cpu/cpu0/cpuidle', 0o755) +d('sys/devices/system/cpu/cpu0/cpuidle/state2', 0o755) +f('sys/devices/system/cpu/cpu0/cpuidle/state2/desc', 0o644, b'ACPI FFH INTEL MWAIT 0x10\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state2/power', 0o644, b'500\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state2/latency', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state2/usage', 0o644, b'689\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state2/name', 0o644, b'C2\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state2/time', 0o644, b'209561\n') +d('sys/devices/system/cpu/cpu0/cpuidle/state3', 0o755) +f('sys/devices/system/cpu/cpu0/cpuidle/state3/desc', 0o644, b'ACPI FFH INTEL MWAIT 0x30\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state3/power', 0o644, b'100\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state3/latency', 0o644, b'57\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state3/usage', 0o644, b'11774\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state3/name', 0o644, b'C3\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state3/time', 0o644, b'116651688\n') +d('sys/devices/system/cpu/cpu0/cpuidle/state1', 0o755) +f('sys/devices/system/cpu/cpu0/cpuidle/state1/desc', 0o644, b'ACPI FFH INTEL MWAIT 0x0\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state1/power', 0o644, b'1000\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state1/latency', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state1/usage', 0o644, b'2\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state1/name', 0o644, b'C1\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state1/time', 0o644, b'1044\n') +d('sys/devices/system/cpu/cpu0/cpuidle/state0', 0o755) +f('sys/devices/system/cpu/cpu0/cpuidle/state0/desc', 0o644, b'<null>\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state0/power', 0o644, b'4294967295\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state0/latency', 0o644, b'0\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state0/usage', 0o644, b'0\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state0/name', 0o644, b'<null>\n') +f('sys/devices/system/cpu/cpu0/cpuidle/state0/time', 0o644, b'0\n') +d('sys/devices/system/cpu/cpu0/cpufreq', 0o755) +f('sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq', 0o644, b'1000000\n') +f('sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq', 0o644, b'2333000\n') +f('sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies', 0o644, b'2333000 2000000 1667000 1333000 1000000 \n') +f('sys/devices/system/cpu/cpu0/cpufreq/scaling_governor', 0o644, b'ondemand\n') +f('sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors', 0o644, b'ondemand performance \n') +f('sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq', 0o644, b'1000000\n') +f('sys/devices/system/cpu/cpu0/cpufreq/affected_cpus', 0o644, b'0 1\n') +f('sys/devices/system/cpu/cpu0/cpufreq/related_cpus', 0o644, b'0 1\n') +f('sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed', 0o644, b'<unsupported>\n') +f('sys/devices/system/cpu/cpu0/cpufreq/scaling_driver', 0o644, b'acpi-cpufreq\n') +f('sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq', 0o644, b'1000000\n') +f('sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq', 0o644, b'1000000\n') +f('sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq', 0o644, b'1000000\n') +d('sys/devices/system/cpu/cpu0/cpufreq/stats', 0o755) +f('sys/devices/system/cpu/cpu0/cpufreq/stats/total_trans', 0o644, b'12627\n') +f('sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state', 0o644, b'''2333000 92206 +2000000 442 +1667000 1009 +1333000 1713 +1000000 740740 +''') +d('sys/devices/system/cpu/cpu0/cpufreq/ondemand', 0o755) +f('sys/devices/system/cpu/cpu0/cpufreq/ondemand/powersave_bias', 0o644, b'0\n') +f('sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate_max', 0o644, b'10000000\n') +f('sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate', 0o644, b'20000\n') +f('sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold', 0o644, b'90\n') +f('sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate_min', 0o644, b'10000\n') +d('sys/devices/system/cpu/cpu0/microcode', 0o755) +f('sys/devices/system/cpu/cpu0/microcode/version', 0o644, b'0xc7\n') +f('sys/devices/system/cpu/cpu0/microcode/processor_flags', 0o644, b'0x20\n') +d('sys/devices/system/cpu/cpuidle', 0o755) +f('sys/devices/system/cpu/cpuidle/current_driver', 0o644, b'acpi_idle\n') +f('sys/devices/system/cpu/cpuidle/current_governor_ro', 0o644, b'menu\n') +d('sys/devices/system/cpu/cpu1', 0o755) +l('sys/devices/system/cpu/cpu1/cpufreq', '../cpu0/cpufreq') +f('sys/devices/system/cpu/cpu1/crash_notes', 0o644, b'7fb20b68\n') +f('sys/devices/system/cpu/cpu1/online', 0o644, b'1\n') +d('sys/devices/system/cpu/cpu1/topology', 0o755) +f('sys/devices/system/cpu/cpu1/topology/thread_siblings', 0o644, b'02\n') +f('sys/devices/system/cpu/cpu1/topology/thread_siblings_list', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu1/topology/core_siblings_list', 0o644, b'0-1\n') +f('sys/devices/system/cpu/cpu1/topology/core_siblings', 0o644, b'03\n') +f('sys/devices/system/cpu/cpu1/topology/core_id', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu1/topology/physical_package_id', 0o644, b'0\n') +d('sys/devices/system/cpu/cpu1/thermal_throttle', 0o755) +f('sys/devices/system/cpu/cpu1/thermal_throttle/count', 0o644, b'0\n') +d('sys/devices/system/cpu/cpu1/cache', 0o755) +d('sys/devices/system/cpu/cpu1/cache/index0', 0o755) +f('sys/devices/system/cpu/cpu1/cache/index0/ways_of_associativity', 0o644, b'8\n') +f('sys/devices/system/cpu/cpu1/cache/index0/type', 0o644, b'Data\n') +f('sys/devices/system/cpu/cpu1/cache/index0/coherency_line_size', 0o644, b'64\n') +f('sys/devices/system/cpu/cpu1/cache/index0/number_of_sets', 0o644, b'64\n') +f('sys/devices/system/cpu/cpu1/cache/index0/size', 0o644, b'32K\n') +f('sys/devices/system/cpu/cpu1/cache/index0/physical_line_partition', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu1/cache/index0/shared_cpu_map', 0o644, b'02\n') +f('sys/devices/system/cpu/cpu1/cache/index0/level', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu1/cache/index0/shared_cpu_list', 0o644, b'1\n') +d('sys/devices/system/cpu/cpu1/cache/index2', 0o755) +f('sys/devices/system/cpu/cpu1/cache/index2/ways_of_associativity', 0o644, b'16\n') +f('sys/devices/system/cpu/cpu1/cache/index2/type', 0o644, b'Unified\n') +f('sys/devices/system/cpu/cpu1/cache/index2/coherency_line_size', 0o644, b'64\n') +f('sys/devices/system/cpu/cpu1/cache/index2/number_of_sets', 0o644, b'4096\n') +f('sys/devices/system/cpu/cpu1/cache/index2/size', 0o644, b'4096K\n') +f('sys/devices/system/cpu/cpu1/cache/index2/physical_line_partition', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu1/cache/index2/shared_cpu_map', 0o644, b'03\n') +f('sys/devices/system/cpu/cpu1/cache/index2/level', 0o644, b'2\n') +f('sys/devices/system/cpu/cpu1/cache/index2/shared_cpu_list', 0o644, b'0-1\n') +d('sys/devices/system/cpu/cpu1/cache/index1', 0o755) +f('sys/devices/system/cpu/cpu1/cache/index1/ways_of_associativity', 0o644, b'8\n') +f('sys/devices/system/cpu/cpu1/cache/index1/type', 0o644, b'Instruction\n') +f('sys/devices/system/cpu/cpu1/cache/index1/coherency_line_size', 0o644, b'64\n') +f('sys/devices/system/cpu/cpu1/cache/index1/number_of_sets', 0o644, b'64\n') +f('sys/devices/system/cpu/cpu1/cache/index1/size', 0o644, b'32K\n') +f('sys/devices/system/cpu/cpu1/cache/index1/physical_line_partition', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu1/cache/index1/shared_cpu_map', 0o644, b'02\n') +f('sys/devices/system/cpu/cpu1/cache/index1/level', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu1/cache/index1/shared_cpu_list', 0o644, b'1\n') +d('sys/devices/system/cpu/cpu1/cpuidle', 0o755) +d('sys/devices/system/cpu/cpu1/cpuidle/state2', 0o755) +f('sys/devices/system/cpu/cpu1/cpuidle/state2/desc', 0o644, b'ACPI FFH INTEL MWAIT 0x10\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state2/power', 0o644, b'500\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state2/latency', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state2/usage', 0o644, b'271\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state2/name', 0o644, b'C2\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state2/time', 0o644, b'47233\n') +d('sys/devices/system/cpu/cpu1/cpuidle/state3', 0o755) +f('sys/devices/system/cpu/cpu1/cpuidle/state3/desc', 0o644, b'ACPI FFH INTEL MWAIT 0x30\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state3/power', 0o644, b'100\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state3/latency', 0o644, b'57\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state3/usage', 0o644, b'10601\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state3/name', 0o644, b'C3\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state3/time', 0o644, b'117038054\n') +d('sys/devices/system/cpu/cpu1/cpuidle/state1', 0o755) +f('sys/devices/system/cpu/cpu1/cpuidle/state1/desc', 0o644, b'ACPI FFH INTEL MWAIT 0x0\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state1/power', 0o644, b'1000\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state1/latency', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state1/usage', 0o644, b'1\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state1/name', 0o644, b'C1\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state1/time', 0o644, b'8\n') +d('sys/devices/system/cpu/cpu1/cpuidle/state0', 0o755) +f('sys/devices/system/cpu/cpu1/cpuidle/state0/desc', 0o644, b'<null>\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state0/power', 0o644, b'4294967295\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state0/latency', 0o644, b'0\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state0/usage', 0o644, b'0\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state0/name', 0o644, b'<null>\n') +f('sys/devices/system/cpu/cpu1/cpuidle/state0/time', 0o644, b'0\n') +d('sys/devices/system/cpu/cpu1/microcode', 0o755) +f('sys/devices/system/cpu/cpu1/microcode/version', 0o644, b'0xc7\n') +f('sys/devices/system/cpu/cpu1/microcode/processor_flags', 0o644, b'0x20\n') +d('sys/devices/pnp0', 0o755) +f('sys/devices/pnp0/uevent', 0o644, b'') +d('sys/devices/pnp0/00:04', 0o755) +l('sys/devices/pnp0/00:04/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00') +l('sys/devices/pnp0/00:04/subsystem', '../../../bus/pnp') +f('sys/devices/pnp0/00:04/options', 0o644, b'') +f('sys/devices/pnp0/00:04/id', 0o644, b'PNP0200\n') +f('sys/devices/pnp0/00:04/resources', 0o644, b'''state = active +io 0x0-0xf +io 0x80-0x8f +io 0xc0-0xdf +dma 4 +''') +f('sys/devices/pnp0/00:04/uevent', 0o644, b'') +d('sys/devices/pnp0/00:04/power', 0o755) +f('sys/devices/pnp0/00:04/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/00:0a', 0o755) +l('sys/devices/pnp0/00:0a/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00') +l('sys/devices/pnp0/00:0a/subsystem', '../../../bus/pnp') +f('sys/devices/pnp0/00:0a/options', 0o644, b'') +f('sys/devices/pnp0/00:0a/id', 0o644, b'''ATM1200 +PNP0c31 +''') +f('sys/devices/pnp0/00:0a/resources', 0o644, b'''state = active +mem 0xfed40000-0xfed40fff +''') +f('sys/devices/pnp0/00:0a/uevent', 0o644, b'') +d('sys/devices/pnp0/00:0a/power', 0o755) +f('sys/devices/pnp0/00:0a/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/00:03', 0o755) +l('sys/devices/pnp0/00:03/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00') +l('sys/devices/pnp0/00:03/subsystem', '../../../bus/pnp') +f('sys/devices/pnp0/00:03/options', 0o644, b'') +f('sys/devices/pnp0/00:03/id', 0o644, b'PNP0103\n') +f('sys/devices/pnp0/00:03/resources', 0o644, b'''state = active +mem 0xfed00000-0xfed003ff +''') +f('sys/devices/pnp0/00:03/uevent', 0o644, b'') +d('sys/devices/pnp0/00:03/power', 0o755) +f('sys/devices/pnp0/00:03/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/00:02', 0o755) +l('sys/devices/pnp0/00:02/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00') +l('sys/devices/pnp0/00:02/subsystem', '../../../bus/pnp') +l('sys/devices/pnp0/00:02/driver', '../../../bus/pnp/drivers/system') +f('sys/devices/pnp0/00:02/options', 0o644, b'') +f('sys/devices/pnp0/00:02/id', 0o644, b'PNP0c02\n') +f('sys/devices/pnp0/00:02/resources', 0o644, b'''state = active +io 0x10-0x1f +io 0x90-0x9f +io 0x24-0x25 +io 0x28-0x29 +io 0x2c-0x2d +io 0x30-0x31 +io 0x34-0x35 +io 0x38-0x39 +io 0x3c-0x3d +io 0xa4-0xa5 +io 0xa8-0xa9 +io 0xac-0xad +io 0xb0-0xb5 +io 0xb8-0xb9 +io 0xbc-0xbd +io 0x50-0x53 +io 0x72-0x77 +io 0x164e-0x164f +io 0x2e-0x2f +io 0x1000-0x107f +io 0x1180-0x11bf +io 0x800-0x80f +io 0x15e0-0x15ef +io 0x1600-0x165f +mem 0xf0000000-0xf3ffffff +mem 0xfed1c000-0xfed1ffff +mem 0xfed14000-0xfed17fff +mem 0xfed18000-0xfed18fff +mem 0xfed19000-0xfed19fff +''') +f('sys/devices/pnp0/00:02/uevent', 0o644, b'DRIVER=system\n') +d('sys/devices/pnp0/00:02/power', 0o755) +f('sys/devices/pnp0/00:02/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/00:00', 0o755) +l('sys/devices/pnp0/00:00/firmware_node', '../../LNXSYSTM:00/device:00/PNP0C01:00') +l('sys/devices/pnp0/00:00/subsystem', '../../../bus/pnp') +l('sys/devices/pnp0/00:00/driver', '../../../bus/pnp/drivers/system') +f('sys/devices/pnp0/00:00/options', 0o644, b'') +f('sys/devices/pnp0/00:00/id', 0o644, b'PNP0c01\n') +f('sys/devices/pnp0/00:00/resources', 0o644, b'''state = active +mem 0x0-0x9ffff +mem 0xc0000-0xc3fff +mem 0xc4000-0xc7fff +mem 0xc8000-0xcbfff +mem 0xcc000-0xcffff +mem disabled +mem disabled +mem disabled +mem 0xdc000-0xdffff +mem 0xe0000-0xe3fff +mem 0xe4000-0xe7fff +mem 0xe8000-0xebfff +mem 0xec000-0xeffff +mem 0xf0000-0xfffff +mem 0x100000-0x7fffffff +mem 0xfec00000-0xfed3ffff +mem 0xfed41000-0xffffffff +''') +f('sys/devices/pnp0/00:00/uevent', 0o644, b'DRIVER=system\n') +d('sys/devices/pnp0/00:00/power', 0o755) +f('sys/devices/pnp0/00:00/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/power', 0o755) +f('sys/devices/pnp0/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/00:09', 0o755) +l('sys/devices/pnp0/00:09/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00') +l('sys/devices/pnp0/00:09/subsystem', '../../../bus/pnp') +l('sys/devices/pnp0/00:09/driver', '../../../bus/pnp/drivers/i8042 aux') +f('sys/devices/pnp0/00:09/options', 0o644, b'') +f('sys/devices/pnp0/00:09/id', 0o644, b'''IBM0057 +PNP0f13 +''') +f('sys/devices/pnp0/00:09/resources', 0o644, b'''state = active +irq 12 +''') +f('sys/devices/pnp0/00:09/uevent', 0o644, b'DRIVER=i8042 aux\n') +d('sys/devices/pnp0/00:09/power', 0o755) +f('sys/devices/pnp0/00:09/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/00:07', 0o755) +l('sys/devices/pnp0/00:07/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00') +l('sys/devices/pnp0/00:07/subsystem', '../../../bus/pnp') +l('sys/devices/pnp0/00:07/driver', '../../../bus/pnp/drivers/rtc_cmos') +f('sys/devices/pnp0/00:07/options', 0o644, b'') +f('sys/devices/pnp0/00:07/id', 0o644, b'PNP0b00\n') +f('sys/devices/pnp0/00:07/nvram', 0o644, b'\x00\x00\x00\x00\x00\x00\x03\x80\x02\x00\xfc\x01\x00\x03\x00\x9f\x16\x00\x00\x02\x00\x00\x00\x01\x05\x00\x00\x11\x11\x01\x00\x00\x02e\x00\xfc \x8c\xc1\x01\x00|\x00\x00\x00\x00\x00\x00\x00\x00\x08D\xb0\x11\x00c\x11T/\x06\xd00\x80\x00\x00\x00\x00\x00\xc0\x05R\xfc\x01\x1d\x00[\x0f\x02\x03\x00\x00\x04\x04\x00\xdf8\xd3\xa0\x13r\xf2\x06\x13\xf9\xa7\xf1\x0e\x00\xc5\xfe\x00\x00\xf1\xff\xff\xff\xff\x00\x00\x00IS\xb2\x00') +f('sys/devices/pnp0/00:07/resources', 0o644, b'''state = active +io 0x70-0x71 +irq 8 +''') +f('sys/devices/pnp0/00:07/uevent', 0o644, b'DRIVER=rtc_cmos\n') +d('sys/devices/pnp0/00:07/rtc', 0o755) +d('sys/devices/pnp0/00:07/rtc/rtc0', 0o755) +l('sys/devices/pnp0/00:07/rtc/rtc0/subsystem', '../../../../../class/rtc') +l('sys/devices/pnp0/00:07/rtc/rtc0/device', '../../../00:07') +f('sys/devices/pnp0/00:07/rtc/rtc0/date', 0o644, b'2008-09-29\n') +f('sys/devices/pnp0/00:07/rtc/rtc0/dev', 0o644, b'253:0\n') +f('sys/devices/pnp0/00:07/rtc/rtc0/max_user_freq', 0o644, b'64\n') +f('sys/devices/pnp0/00:07/rtc/rtc0/wakealarm', 0o644, b'') +f('sys/devices/pnp0/00:07/rtc/rtc0/since_epoch', 0o644, b'1222655451\n') +f('sys/devices/pnp0/00:07/rtc/rtc0/name', 0o644, b'rtc_cmos\n') +f('sys/devices/pnp0/00:07/rtc/rtc0/time', 0o644, b'02:30:51\n') +f('sys/devices/pnp0/00:07/rtc/rtc0/uevent', 0o644, b'''MAJOR=253 +MINOR=0 +''') +d('sys/devices/pnp0/00:07/rtc/rtc0/power', 0o755) +f('sys/devices/pnp0/00:07/rtc/rtc0/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/00:07/power', 0o755) +f('sys/devices/pnp0/00:07/power/wakeup', 0o644, b'enabled\n') +d('sys/devices/pnp0/00:06', 0o755) +l('sys/devices/pnp0/00:06/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00') +l('sys/devices/pnp0/00:06/subsystem', '../../../bus/pnp') +f('sys/devices/pnp0/00:06/options', 0o644, b'') +f('sys/devices/pnp0/00:06/id', 0o644, b'PNP0c04\n') +f('sys/devices/pnp0/00:06/resources', 0o644, b'''state = active +io 0xf0-0xf0 +irq 13 +''') +f('sys/devices/pnp0/00:06/uevent', 0o644, b'') +d('sys/devices/pnp0/00:06/power', 0o755) +f('sys/devices/pnp0/00:06/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/00:08', 0o755) +l('sys/devices/pnp0/00:08/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00') +l('sys/devices/pnp0/00:08/subsystem', '../../../bus/pnp') +l('sys/devices/pnp0/00:08/driver', '../../../bus/pnp/drivers/i8042 kbd') +f('sys/devices/pnp0/00:08/options', 0o644, b'') +f('sys/devices/pnp0/00:08/id', 0o644, b'PNP0303\n') +f('sys/devices/pnp0/00:08/resources', 0o644, b'''state = active +io 0x60-0x60 +io 0x64-0x64 +irq 1 +''') +f('sys/devices/pnp0/00:08/uevent', 0o644, b'DRIVER=i8042 kbd\n') +d('sys/devices/pnp0/00:08/power', 0o755) +f('sys/devices/pnp0/00:08/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/00:05', 0o755) +l('sys/devices/pnp0/00:05/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00') +l('sys/devices/pnp0/00:05/subsystem', '../../../bus/pnp') +f('sys/devices/pnp0/00:05/options', 0o644, b'') +f('sys/devices/pnp0/00:05/id', 0o644, b'PNP0800\n') +f('sys/devices/pnp0/00:05/resources', 0o644, b'''state = active +io 0x61-0x61 +''') +f('sys/devices/pnp0/00:05/uevent', 0o644, b'') +d('sys/devices/pnp0/00:05/power', 0o755) +f('sys/devices/pnp0/00:05/power/wakeup', 0o644, b'\n') +d('sys/devices/pnp0/00:01', 0o755) +l('sys/devices/pnp0/00:01/subsystem', '../../../bus/pnp') +f('sys/devices/pnp0/00:01/options', 0o644, b'') +f('sys/devices/pnp0/00:01/id', 0o644, b'''PNP0a08 +PNP0a03 +''') +f('sys/devices/pnp0/00:01/resources', 0o644, b'''state = active +io 0xcf8-0xcff +''') +f('sys/devices/pnp0/00:01/uevent', 0o644, b'') +d('sys/devices/pnp0/00:01/power', 0o755) +f('sys/devices/pnp0/00:01/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00', 0o755) +l('sys/devices/pci0000:00/firmware_node', '../LNXSYSTM:00/device:00/PNP0A08:00') +f('sys/devices/pci0000:00/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1d.3', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:20') +l('sys/devices/pci0000:00/0000:00:1d.3/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1d.3/driver', '../../../bus/pci/drivers/uhci_hcd') +f('sys/devices/pci0000:00/0000:00:1d.3/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1d.3/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/modalias', 0o644, b'pci:v00008086d000027CBsv000017AAsd0000200Abc0Csc03i00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000001860 0x000000000000187f 0x0000000000020101 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/config', 0o644, b"\x86\x80\xcb'\x05\x00\x80\x02\x02\x00\x03\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\n \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1d.3/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1d.3/subsystem_device', 0o644, b'0x200a\n') +f('sys/devices/pci0000:00/0000:00:1d.3/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1d.3/irq', 0o644, b'19\n') +f('sys/devices/pci0000:00/0000:00:1d.3/pools', 0o644, b'''poolinfo - 0.1 +uhci_qh 13 32 128 1 +uhci_td 3 64 64 1 +buffer-2048 0 0 2048 0 +buffer-512 0 0 512 0 +buffer-128 0 0 128 0 +buffer-32 1 128 32 1 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/device', 0o644, b'0x27cb\n') +f('sys/devices/pci0000:00/0000:00:1d.3/class', 0o644, b'0x0c0300\n') +f('sys/devices/pci0000:00/0000:00:1d.3/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.3/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1d.3/uevent', 0o644, b'''DRIVER=uhci_hcd +PCI_CLASS=C0300 +PCI_ID=8086:27CB +PCI_SUBSYS_ID=17AA:200A +PCI_SLOT_NAME=0000:00:1d.3 +MODALIAS=pci:v00008086d000027CBsv000017AAsd0000200Abc0Csc03i00 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/resource4', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.3/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1d.3/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.3/usb_host/usb_host4', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb_host/usb_host4/subsystem', '../../../../../class/usb_host') +l('sys/devices/pci0000:00/0000:00:1d.3/usb_host/usb_host4/device', '../../../0000:00:1d.3') +f('sys/devices/pci0000:00/0000:00:1d.3/usb_host/usb_host4/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1d.3/usb_host/usb_host4/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb_host/usb_host4/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/subsystem', '../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/driver', '../../../../bus/usb/drivers/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/ep_00', 'usb_endpoint/usbdev4.1_ep00') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/version', 0o644, b' 1.10\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/authorized_default', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/maxchild', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/bDeviceClass', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/bcdDevice', 0o644, b'0206\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/devnum', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/bDeviceProtocol', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/idProduct', 0o644, b'0001\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/product', 0o644, b'UHCI Host Controller\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/bDeviceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/configuration', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/dev', 0o644, b'189:384\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/urbnum', 0o644, b'62\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/authorized', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/descriptors', 0o644, b'\x12\x01\x10\x01\t\x00\x00@k\x1d\x01\x00\x06\x02\x03\x02\x01\x01\t\x02\x19\x00\x01\x01\x00\xe0\x00\t\x04\x00\x00\x01\t\x00\x00\x00\x07\x05\x81\x03\x02\x00\xff') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/bNumConfigurations', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/serial', 0o644, b'0000:00:1d.3\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/speed', 0o644, b'12\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/bMaxPacketSize0', 0o644, b'64\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/bmAttributes', 0o644, b'e0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/busnum', 0o644, b'4\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/quirks', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/bConfigurationValue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/uevent', 0o644, b'''MAJOR=189 +MINOR=384 +DEVTYPE=usb_device +DRIVER=usb +PRODUCT=1d6b/1/206 +TYPE=9/0/0 +BUSNUM=004 +DEVNUM=001 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/manufacturer', 0o644, b'Linux 2.6.27-rc7-00106-g6ef190c-dirty uhci_hcd\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/idVendor', 0o644, b'1d6b\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/bNumInterfaces', 0o644, b' 1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/bMaxPower', 0o644, b' 0mA\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/subsystem', '../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/device', '../../../usb4') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/bEndpointAddress', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/type', 0o644, b'Control\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/dev', 0o644, b'252:7\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/direction', 0o644, b'both\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/bmAttributes', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/uevent', 0o644, b'''MAJOR=252 +MINOR=7 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/usb_endpoint/usbdev4.1_ep00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/subsystem', '../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/driver', '../../../../../bus/usb/drivers/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/ep_00', 'usb_endpoint/usbdev4.3_ep00') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/version', 0o644, b' 1.00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/maxchild', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/bDeviceClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/bcdDevice', 0o644, b'0001\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/devnum', 0o644, b'3\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/bDeviceProtocol', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/idProduct', 0o644, b'2016\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/product', 0o644, b'Biometric Coprocessor\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/bDeviceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/configuration', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/dev', 0o644, b'189:386\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/urbnum', 0o644, b'9\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/authorized', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/descriptors', 0o644, b"\x12\x01\x00\x01\x00\x00\x00\x08\x83\x04\x16 \x01\x00\x01\x02\x00\x01\t\x02'\x00\x01\x01\x00\xa02\t\x04\x00\x00\x03\xff\x00\x00\x00\x07\x05\x81\x02@\x00\x00\x07\x05\x02\x02@\x00\x00\x07\x05\x83\x03\x04\x00\x14") +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/bNumConfigurations', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/speed', 0o644, b'12\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/bMaxPacketSize0', 0o644, b'8\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/bmAttributes', 0o644, b'a0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/busnum', 0o644, b'4\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/quirks', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/bConfigurationValue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/uevent', 0o644, b'''MAJOR=189 +MINOR=386 +DEVTYPE=usb_device +DRIVER=usb +PRODUCT=483/2016/1 +TYPE=0/0/0 +BUSNUM=004 +DEVNUM=003 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/manufacturer', 0o644, b'STMicroelectronics\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/idVendor', 0o644, b'0483\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/bNumInterfaces', 0o644, b' 1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/bMaxPower', 0o644, b'100mA\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/subsystem', '../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/device', '../../../4-2') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/bEndpointAddress', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/type', 0o644, b'Control\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/dev', 0o644, b'252:23\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/direction', 0o644, b'both\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/wMaxPacketSize', 0o644, b'0008\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/bmAttributes', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/uevent', 0o644, b'''MAJOR=252 +MINOR=23 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/usb_endpoint/usbdev4.3_ep00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/power/active_duration', 0o644, b'8370363\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/power/wakeup', 0o644, b'enabled\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/power/connected_duration', 0o644, b'8370362\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/power/autosuspend', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/power/persist', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/power/level', 0o644, b'on\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/subsystem', '../../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/ep_83', 'usb_endpoint/usbdev4.3_ep83') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/ep_81', 'usb_endpoint/usbdev4.3_ep81') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/ep_02', 'usb_endpoint/usbdev4.3_ep02') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/modalias', 0o644, b'usb:v0483p2016d0001dc00dsc00dp00icFFisc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/bInterfaceNumber', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/bNumEndpoints', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/bInterfaceClass', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=483/2016/1 +TYPE=0/0/0 +INTERFACE=255/0/0 +MODALIAS=usb:v0483p2016d0001dc00dsc00dp00icFFisc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/device', '../../../4-2:1.0') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/interval', 0o644, b'20ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/bEndpointAddress', 0o644, b'83\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/type', 0o644, b'Interrupt\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/dev', 0o644, b'252:22\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/wMaxPacketSize', 0o644, b'0004\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/bmAttributes', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/uevent', 0o644, b'''MAJOR=252 +MINOR=22 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/bInterval', 0o644, b'14\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep83/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/device', '../../../4-2:1.0') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/bEndpointAddress', 0o644, b'81\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/dev', 0o644, b'252:20\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/uevent', 0o644, b'''MAJOR=252 +MINOR=20 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep81/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/device', '../../../4-2:1.0') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/bEndpointAddress', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/dev', 0o644, b'252:21\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/direction', 0o644, b'out\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/uevent', 0o644, b'''MAJOR=252 +MINOR=21 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.3_ep02/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/subsystem', '../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/ep_81', 'usb_endpoint/usbdev4.1_ep81') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/driver', '../../../../../bus/usb/drivers/hub') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/modalias', 0o644, b'usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/bInterfaceNumber', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/bNumEndpoints', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/bInterfaceClass', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/uevent', 0o644, b'''DEVTYPE=usb_interface +DRIVER=hub +PRODUCT=1d6b/1/206 +TYPE=9/0/0 +INTERFACE=9/0/0 +MODALIAS=usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/subsystem', '../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/device', '../../../4-0:1.0') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/interval', 0o644, b'255ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/bEndpointAddress', 0o644, b'81\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/type', 0o644, b'Interrupt\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/dev', 0o644, b'252:6\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/wMaxPacketSize', 0o644, b'0002\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/bmAttributes', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/uevent', 0o644, b'''MAJOR=252 +MINOR=6 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/bInterval', 0o644, b'ff\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-0:1.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/power/active_duration', 0o644, b'8372033\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/power/wakeup', 0o644, b'enabled\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/power/connected_duration', 0o644, b'8372033\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/power/autosuspend', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/power/level', 0o644, b'auto\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/subsystem', '../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/driver', '../../../../../bus/usb/drivers/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/ep_00', 'usb_endpoint/usbdev4.2_ep00') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/version', 0o644, b' 2.00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/maxchild', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/bDeviceClass', 0o644, b'e0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/bcdDevice', 0o644, b'0100\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/devnum', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/bDeviceProtocol', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/idProduct', 0o644, b'2110\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/product', 0o644, b'BCM2045B\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/bDeviceSubClass', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/configuration', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/dev', 0o644, b'189:385\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/urbnum', 0o644, b'12\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/authorized', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/descriptors', 0o644, b'\x12\x01\x00\x02\xe0\x01\x01@\\\n\x10!\x00\x01\x01\x02\x00\x01\t\x02\xd8\x00\x04\x01\x00\xe0\x00\t\x04\x00\x00\x03\xe0\x01\x01\x00\x07\x05\x81\x03\x10\x00\x01\x07\x05\x82\x02@\x00\x01\x07\x05\x02\x02@\x00\x01\t\x04\x01\x00\x02\xe0\x01\x01\x00\x07\x05\x83\x01\x00\x00\x01\x07\x05\x03\x01\x00\x00\x01\t\x04\x01\x01\x02\xe0\x01\x01\x00\x07\x05\x83\x01\t\x00\x01\x07\x05\x03\x01\t\x00\x01\t\x04\x01\x02\x02\xe0\x01\x01\x00\x07\x05\x83\x01\x11\x00\x01\x07\x05\x03\x01\x11\x00\x01\t\x04\x01\x03\x02\xe0\x01\x01\x00\x07\x05\x83\x01 \x00\x01\x07\x05\x03\x01 \x00\x01\t\x04\x01\x04\x02\xe0\x01\x01\x00\x07\x05\x83\x01@\x00\x01\x07\x05\x03\x01@\x00\x01\t\x04\x01\x05\x02\xe0\x01\x01\x00\x07\x05\x83\x01@\x00\x01\x07\x05\x03\x01@\x00\x01\t\x04\x02\x00\x02\xff\xff\xff\x00\x07\x05\x84\x02 \x00\x01\x07\x05\x04\x02 \x00\x01\t\x04\x03\x00\x00\xfe\x01\x00\x00\x07!\x07\x88\x13@\x00') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/bNumConfigurations', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/speed', 0o644, b'12\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/bMaxPacketSize0', 0o644, b'64\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/bmAttributes', 0o644, b'e0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/busnum', 0o644, b'4\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/quirks', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/bConfigurationValue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/uevent', 0o644, b'''MAJOR=189 +MINOR=385 +DEVTYPE=usb_device +DRIVER=usb +PRODUCT=a5c/2110/100 +TYPE=224/1/1 +BUSNUM=004 +DEVNUM=002 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/manufacturer', 0o644, b'Broadcom Corp\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/idVendor', 0o644, b'0a5c\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/bNumInterfaces', 0o644, b' 4\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/bMaxPower', 0o644, b' 0mA\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/modalias', 0o644, b'usb:v0A5Cp2110d0100dcE0dsc01dp01icFEisc01ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/bInterfaceNumber', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/bInterfaceSubClass', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/bInterfaceClass', 0o644, b'fe\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=a5c/2110/100 +TYPE=224/1/1 +INTERFACE=254/1/0 +MODALIAS=usb:v0A5Cp2110d0100dcE0dsc01dp01icFEisc01ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.3/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/subsystem', '../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/device', '../../../4-1') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/bEndpointAddress', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/type', 0o644, b'Control\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/dev', 0o644, b'252:19\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/direction', 0o644, b'both\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/bmAttributes', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/uevent', 0o644, b'''MAJOR=252 +MINOR=19 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/usb_endpoint/usbdev4.2_ep00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/subsystem', '../../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/ep_81', 'usb_endpoint/usbdev4.2_ep81') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/ep_02', 'usb_endpoint/usbdev4.2_ep02') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/ep_82', 'usb_endpoint/usbdev4.2_ep82') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/modalias', 0o644, b'usb:v0A5Cp2110d0100dcE0dsc01dp01icE0isc01ip01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/bInterfaceNumber', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/bNumEndpoints', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/bInterfaceSubClass', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/bInterfaceClass', 0o644, b'e0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=a5c/2110/100 +TYPE=224/1/1 +INTERFACE=224/1/1 +MODALIAS=usb:v0A5Cp2110d0100dcE0dsc01dp01icE0isc01ip01 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/bInterfaceProtocol', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/device', '../../../4-1:1.0') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/bEndpointAddress', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/dev', 0o644, b'252:14\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/direction', 0o644, b'out\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/uevent', 0o644, b'''MAJOR=252 +MINOR=14 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/bInterval', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep02/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/device', '../../../4-1:1.0') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/bEndpointAddress', 0o644, b'82\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/dev', 0o644, b'252:13\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/uevent', 0o644, b'''MAJOR=252 +MINOR=13 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/bInterval', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep82/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/device', '../../../4-1:1.0') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/interval', 0o644, b'1ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/bEndpointAddress', 0o644, b'81\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/type', 0o644, b'Interrupt\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/dev', 0o644, b'252:12\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/wMaxPacketSize', 0o644, b'0010\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/bmAttributes', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/uevent', 0o644, b'''MAJOR=252 +MINOR=12 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/bInterval', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/usb_endpoint/usbdev4.2_ep81/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/power/active_duration', 0o644, b'8370651\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/power/wakeup', 0o644, b'enabled\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/power/connected_duration', 0o644, b'8370650\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/power/autosuspend', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/power/persist', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/power/level', 0o644, b'on\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/subsystem', '../../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/ep_84', 'usb_endpoint/usbdev4.2_ep84') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/ep_04', 'usb_endpoint/usbdev4.2_ep04') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/modalias', 0o644, b'usb:v0A5Cp2110d0100dcE0dsc01dp01icFFiscFFipFF\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/bInterfaceNumber', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/bNumEndpoints', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/bInterfaceSubClass', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/bInterfaceClass', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=a5c/2110/100 +TYPE=224/1/1 +INTERFACE=255/255/255 +MODALIAS=usb:v0A5Cp2110d0100dcE0dsc01dp01icFFiscFFipFF +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/bInterfaceProtocol', 0o644, b'ff\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/device', '../../../4-1:1.2') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/bEndpointAddress', 0o644, b'04\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/dev', 0o644, b'252:18\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/direction', 0o644, b'out\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/wMaxPacketSize', 0o644, b'0020\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/uevent', 0o644, b'''MAJOR=252 +MINOR=18 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/bInterval', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep04/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/device', '../../../4-1:1.2') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/bEndpointAddress', 0o644, b'84\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/dev', 0o644, b'252:17\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/wMaxPacketSize', 0o644, b'0020\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/uevent', 0o644, b'''MAJOR=252 +MINOR=17 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/bInterval', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/usb_endpoint/usbdev4.2_ep84/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.2/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/subsystem', '../../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/ep_83', 'usb_endpoint/usbdev4.2_ep83') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/ep_03', 'usb_endpoint/usbdev4.2_ep03') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/modalias', 0o644, b'usb:v0A5Cp2110d0100dcE0dsc01dp01icE0isc01ip01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/bInterfaceNumber', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/bNumEndpoints', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/bInterfaceSubClass', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/bInterfaceClass', 0o644, b'e0\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=a5c/2110/100 +TYPE=224/1/1 +INTERFACE=224/1/1 +MODALIAS=usb:v0A5Cp2110d0100dcE0dsc01dp01icE0isc01ip01 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/bInterfaceProtocol', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/device', '../../../4-1:1.1') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/interval', 0o644, b'1ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/bEndpointAddress', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/type', 0o644, b'Isoc\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/dev', 0o644, b'252:16\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/direction', 0o644, b'out\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/wMaxPacketSize', 0o644, b'0000\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/bmAttributes', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/uevent', 0o644, b'''MAJOR=252 +MINOR=16 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/bInterval', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep03/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/device', '../../../4-1:1.1') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/interval', 0o644, b'1ms\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/bEndpointAddress', 0o644, b'83\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/type', 0o644, b'Isoc\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/dev', 0o644, b'252:15\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/wMaxPacketSize', 0o644, b'0000\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/bmAttributes', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/uevent', 0o644, b'''MAJOR=252 +MINOR=15 +''') +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/bInterval', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/usb_endpoint/usbdev4.2_ep83/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.1/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.2', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.2/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:0d') +l('sys/devices/pci0000:00/0000:00:1c.2/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1c.2/driver', '../../../bus/pci/drivers/pcieport-driver') +f('sys/devices/pci0000:00/0000:00:1c.2/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1c.2/enable', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1c.2/modalias', 0o644, b'pci:v00008086d000027D4sv00000000sd00000000bc06sc04i00\n') +f('sys/devices/pci0000:00/0000:00:1c.2/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000006000 0x0000000000007fff 0x0000000000000100 +0x00000000e8000000 0x00000000e9ffffff 0x0000000000000200 +0x00000000e4100000 0x00000000e41fffff 0x0000000000001201 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1c.2/config', 0o644, b"\x86\x80\xd4'\x07\x05\x10\x00\x02\x00\x04\x06\x10\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x0b\x00`p\x00\x00\x00\xe8\xf0\xe9\x11\xe4\x11\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x0b\x03\x04\x00\x10\x80A\x01\xc0\x0f\x00\x00\x00\x00\x10\x00\x11L\x11\x03\x00\x00\x01\x10\xe0\xa0 \x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x90\x01\x00\x0c0\xe0\xfe\x89A\x00\x00\x00\x00\x00\x00\r\xa0\x00\x00\xaa\x17\x11 \x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x11\xc0\x00\x00\x00\x00\x00\x00\xc7\x00\x06\x07\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00\x02\x00\x01\x18\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x00\x00\x80\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x11\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x01\x00\x00\x01\x02\x03\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\xc0\xd1\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07`\x00`\x00\x00\x00\x00`\x02\x00\x00\x0c\x00\x06\x00\x00\x00\x00\x00[`\xc9\xc0\x00p&u\x00\x10\x00\x00\xff\x0f\x00\x00\x16\x00\x00\x14\xb5\xbcJ\xbc\x0b*\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x10\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1c.2/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1c.2/subsystem_device', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:1c.2/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1c.2/irq', 0o644, b'508\n') +f('sys/devices/pci0000:00/0000:00:1c.2/device', 0o644, b'0x27d4\n') +f('sys/devices/pci0000:00/0000:00:1c.2/class', 0o644, b'0x060400\n') +f('sys/devices/pci0000:00/0000:00:1c.2/msi_bus', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.2/subsystem_vendor', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:1c.2/uevent', 0o644, b'''DRIVER=pcieport-driver +PCI_CLASS=60400 +PCI_ID=8086:27D4 +PCI_SUBSYS_ID=0000:0000 +PCI_SLOT_NAME=0000:00:1c.2 +MODALIAS=pci:v00008086d000027D4sv00000000sd00000000bc06sc04i00 +''') +f('sys/devices/pci0000:00/0000:00:1c.2/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie02', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie02/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie02/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie02/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie02/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie00', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie00/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie00/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.2/pci_bus', 0o755) +d('sys/devices/pci0000:00/0000:00:1c.2/pci_bus/0000:04', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.2/pci_bus/0000:04/subsystem', '../../../../../class/pci_bus') +l('sys/devices/pci0000:00/0000:00:1c.2/pci_bus/0000:04/device', '../../../0000:00:1c.2') +f('sys/devices/pci0000:00/0000:00:1c.2/pci_bus/0000:04/cpuaffinity', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1c.2/pci_bus/0000:04/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.2/pci_bus/0000:04/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.2/pci_bus/0000:04/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.2/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie03', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie03/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie03/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie03/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.2/0000:00:1c.2:pcie03/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1b.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1b.0/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:25') +l('sys/devices/pci0000:00/0000:00:1b.0/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1b.0/driver', '../../../bus/pci/drivers/HDA Intel') +f('sys/devices/pci0000:00/0000:00:1b.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1b.0/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1b.0/modalias', 0o644, b'pci:v00008086d000027D8sv000017AAsd00002010bc04sc03i00\n') +f('sys/devices/pci0000:00/0000:00:1b.0/resource', 0o644, b'''0x00000000ee400000 0x00000000ee403fff 0x0000000000020204 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1b.0/config', 0o644, b"\x86\x80\xd8'\x06\x01\x10\x00\x02\x00\x03\x04\x10\x00\x00\x00\x04\x00@\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\x10 \x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\x03\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x01`B\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05p\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x91\x00\x00\x00\x00\x00\x00\x08\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00\x02\x00\x01\x13\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x01\x00\x00\x01\x02\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x00\xc0\xd1\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1b.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1b.0/subsystem_device', 0o644, b'0x2010\n') +f('sys/devices/pci0000:00/0000:00:1b.0/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1b.0/irq', 0o644, b'17\n') +f('sys/devices/pci0000:00/0000:00:1b.0/device', 0o644, b'0x27d8\n') +f('sys/devices/pci0000:00/0000:00:1b.0/class', 0o644, b'0x040300\n') +f('sys/devices/pci0000:00/0000:00:1b.0/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1b.0/resource0', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1b.0/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1b.0/uevent', 0o644, b'''DRIVER=HDA Intel +PCI_CLASS=40300 +PCI_ID=8086:27D8 +PCI_SUBSYS_ID=17AA:2010 +PCI_SLOT_NAME=0000:00:1b.0 +MODALIAS=pci:v00008086d000027D8sv000017AAsd00002010bc04sc03i00 +''') +f('sys/devices/pci0000:00/0000:00:1b.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1b.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1b.0/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1b.0/sound', 0o755) +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0', 0o755) +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/subsystem', '../../../../../class/sound') +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/device', '../../../0000:00:1b.0') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/audio', 0o755) +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/audio/subsystem', '../../../../../../class/sound') +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/audio/device', '../../card0') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/audio/dev', 0o644, b'14:4\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/audio/uevent', 0o644, b'''MAJOR=14 +MINOR=4 +''') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/audio/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/audio/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/dsp', 0o755) +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/dsp/subsystem', '../../../../../../class/sound') +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/dsp/device', '../../card0') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/dsp/dev', 0o644, b'14:3\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/dsp/uevent', 0o644, b'''MAJOR=14 +MINOR=3 +''') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/dsp/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/dsp/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/mixer', 0o755) +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/mixer/subsystem', '../../../../../../class/sound') +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/mixer/device', '../../card0') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/mixer/dev', 0o644, b'14:0\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/mixer/uevent', 0o644, b'''MAJOR=14 +MINOR=0 +''') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/mixer/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/mixer/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p', 0o755) +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p/subsystem', '../../../../../../class/sound') +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p/device', '../../card0') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p/pcm_class', 0o644, b'generic\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p/dev', 0o644, b'116:16\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p/uevent', 0o644, b'''MAJOR=116 +MINOR=16 +''') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0', 0o755) +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0/subsystem', '../../../../../../class/sound') +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0/device', '../../card0') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0/dev', 0o644, b'116:0\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0/uevent', 0o644, b'''MAJOR=116 +MINOR=0 +''') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c', 0o755) +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c/subsystem', '../../../../../../class/sound') +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c/device', '../../card0') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c/pcm_class', 0o644, b'generic\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c/dev', 0o644, b'116:24\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c/uevent', 0o644, b'''MAJOR=116 +MINOR=24 +''') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/adsp', 0o755) +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/adsp/subsystem', '../../../../../../class/sound') +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/adsp/device', '../../card0') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/adsp/dev', 0o644, b'14:12\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/adsp/uevent', 0o644, b'''MAJOR=14 +MINOR=12 +''') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/adsp/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/adsp/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p', 0o755) +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p/subsystem', '../../../../../../class/sound') +l('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p/device', '../../card0') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p/pcm_class', 0o644, b'generic\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p/dev', 0o644, b'116:17\n') +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p/uevent', 0o644, b'''MAJOR=116 +MINOR=17 +''') +d('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/pci_bus', 0o755) +d('sys/devices/pci0000:00/pci_bus/0000:00', 0o755) +l('sys/devices/pci0000:00/pci_bus/0000:00/subsystem', '../../../../class/pci_bus') +l('sys/devices/pci0000:00/pci_bus/0000:00/device', '../../../pci0000:00') +f('sys/devices/pci0000:00/pci_bus/0000:00/cpuaffinity', 0o644, b'ff\n') +f('sys/devices/pci0000:00/pci_bus/0000:00/uevent', 0o644, b'') +d('sys/devices/pci0000:00/pci_bus/0000:00/power', 0o755) +f('sys/devices/pci0000:00/pci_bus/0000:00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/power', 0o755) +f('sys/devices/pci0000:00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:21') +l('sys/devices/pci0000:00/0000:00:1d.7/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1d.7/driver', '../../../bus/pci/drivers/ehci_hcd') +f('sys/devices/pci0000:00/0000:00:1d.7/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1d.7/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/modalias', 0o644, b'pci:v00008086d000027CCsv000017AAsd0000200Bbc0Csc03i20\n') +f('sys/devices/pci0000:00/0000:00:1d.7/resource', 0o644, b'''0x00000000ee404000 0x00000000ee4043ff 0x0000000000020200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/config', 0o644, b"\x86\x80\xcc'\x06\x01\x90\x02\x02 \x03\x0c\x00\x00\x00\x00\x00@@\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\x0b \x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01X\xc2\xc9\x00\x80\x00\x00\n\x00\xa0 \x00\x00\x00\x00 \x9f\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x08\x80\x00\x00\xd7?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\xff\x00\xff\x00\xff\x00 \x00\x00\x88\x00\x00\x00\x00\xdb\xb6m\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\t\x88\x85@\x00\x86\x0f\x02\x00\x06\x17\x02 ") +f('sys/devices/pci0000:00/0000:00:1d.7/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1d.7/subsystem_device', 0o644, b'0x200b\n') +f('sys/devices/pci0000:00/0000:00:1d.7/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1d.7/irq', 0o644, b'19\n') +f('sys/devices/pci0000:00/0000:00:1d.7/pools', 0o644, b'''poolinfo - 0.1 +ehci_sitd 0 0 96 0 +ehci_itd 0 0 192 0 +ehci_qh 5 25 160 1 +ehci_qtd 5 42 96 1 +buffer-2048 16 32 2048 16 +buffer-512 0 0 512 0 +buffer-128 2 32 128 1 +buffer-32 2 128 32 1 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/device', 0o644, b'0x27cc\n') +f('sys/devices/pci0000:00/0000:00:1d.7/class', 0o644, b'0x0c0320\n') +f('sys/devices/pci0000:00/0000:00:1d.7/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.7/resource0', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.7/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1d.7/uevent', 0o644, b'''DRIVER=ehci_hcd +PCI_CLASS=C0320 +PCI_ID=8086:27CC +PCI_SUBSYS_ID=17AA:200B +PCI_SLOT_NAME=0000:00:1d.7 +MODALIAS=pci:v00008086d000027CCsv000017AAsd0000200Bbc0Csc03i20 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/subsystem', '../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/driver', '../../../../bus/usb/drivers/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/ep_00', 'usb_endpoint/usbdev5.1_ep00') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/version', 0o644, b' 2.00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/authorized_default', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/maxchild', 0o644, b'8\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/bDeviceClass', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/bcdDevice', 0o644, b'0206\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/devnum', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/bDeviceProtocol', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/idProduct', 0o644, b'0002\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/product', 0o644, b'EHCI Host Controller\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/bDeviceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/configuration', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/dev', 0o644, b'189:512\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/urbnum', 0o644, b'151\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/authorized', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/descriptors', 0o644, b'\x12\x01\x00\x02\t\x00\x00@k\x1d\x02\x00\x06\x02\x03\x02\x01\x01\t\x02\x19\x00\x01\x01\x00\xe0\x00\t\x04\x00\x00\x01\t\x00\x00\x00\x07\x05\x81\x03\x04\x00\x0c') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/bNumConfigurations', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/serial', 0o644, b'0000:00:1d.7\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/speed', 0o644, b'480\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/bMaxPacketSize0', 0o644, b'64\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/bmAttributes', 0o644, b'e0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/busnum', 0o644, b'5\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/quirks', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/bConfigurationValue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/uevent', 0o644, b'''MAJOR=189 +MINOR=512 +DEVTYPE=usb_device +DRIVER=usb +PRODUCT=1d6b/2/206 +TYPE=9/0/0 +BUSNUM=005 +DEVNUM=001 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/manufacturer', 0o644, b'Linux 2.6.27-rc7-00106-g6ef190c-dirty ehci_hcd\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/idVendor', 0o644, b'1d6b\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/bNumInterfaces', 0o644, b' 1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/bMaxPower', 0o644, b' 0mA\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/subsystem', '../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/device', '../../../usb5') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/bEndpointAddress', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/type', 0o644, b'Control\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/dev', 0o644, b'252:9\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/direction', 0o644, b'both\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/bmAttributes', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/uevent', 0o644, b'''MAJOR=252 +MINOR=9 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/usb_endpoint/usbdev5.1_ep00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/subsystem', '../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/driver', '../../../../../bus/usb/drivers/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/ep_00', 'usb_endpoint/usbdev5.7_ep00') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/version', 0o644, b' 2.00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/maxchild', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/bDeviceClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/bcdDevice', 0o644, b'0100\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/devnum', 0o644, b'7\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/bDeviceProtocol', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/idProduct', 0o644, b'8012\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/product', 0o644, b'Flash Disk\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/bDeviceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/configuration', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/dev', 0o644, b'189:518\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/urbnum', 0o644, b'743\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/authorized', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/descriptors', 0o644, b'\x12\x01\x00\x02\x00\x00\x00@C\x10\x12\x80\x00\x01\x01\x02\x00\x01\t\x02 \x00\x01\x01\x00\x802\t\x04\x00\x00\x02\x08\x06P\x00\x07\x05\x81\x02\x00\x02\x00\x07\x05\x02\x02\x00\x02\x00') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/bNumConfigurations', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/speed', 0o644, b'480\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/bMaxPacketSize0', 0o644, b'64\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/bmAttributes', 0o644, b'80\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/busnum', 0o644, b'5\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/quirks', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/bConfigurationValue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/uevent', 0o644, b'''MAJOR=189 +MINOR=518 +DEVTYPE=usb_device +DRIVER=usb +PRODUCT=1043/8012/100 +TYPE=0/0/0 +BUSNUM=005 +DEVNUM=007 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/manufacturer', 0o644, b'Generic\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/idVendor', 0o644, b'1043\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/bNumInterfaces', 0o644, b' 1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/bMaxPower', 0o644, b'100mA\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/subsystem', '../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/device', '../../../5-1') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/bEndpointAddress', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/type', 0o644, b'Control\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/dev', 0o644, b'252:24\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/direction', 0o644, b'both\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/bmAttributes', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/uevent', 0o644, b'''MAJOR=252 +MINOR=24 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/usb_endpoint/usbdev5.7_ep00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/power/active_duration', 0o644, b'65113\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/power/wakeup', 0o644, b'\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/power/connected_duration', 0o644, b'65113\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/power/autosuspend', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/power/persist', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/power/level', 0o644, b'on\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/subsystem', '../../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/ep_81', 'usb_endpoint/usbdev5.7_ep81') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/ep_02', 'usb_endpoint/usbdev5.7_ep02') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/driver', '../../../../../../bus/usb/drivers/usb-storage') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/modalias', 0o644, b'usb:v1043p8012d0100dc00dsc00dp00ic08isc06ip50\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/bInterfaceNumber', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/bNumEndpoints', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/bInterfaceSubClass', 0o644, b'06\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/bInterfaceClass', 0o644, b'08\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/uevent', 0o644, b'''DEVTYPE=usb_interface +DRIVER=usb-storage +PRODUCT=1043/8012/100 +TYPE=0/0/0 +INTERFACE=8/6/80 +MODALIAS=usb:v1043p8012d0100dc00dsc00dp00ic08isc06ip50 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/bInterfaceProtocol', 0o644, b'50\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/device', '../../../5-1:1.0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/bEndpointAddress', 0o644, b'81\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/dev', 0o644, b'252:10\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/wMaxPacketSize', 0o644, b'0200\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/uevent', 0o644, b'''MAJOR=252 +MINOR=10 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep81/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/device', '../../../5-1:1.0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/bEndpointAddress', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/dev', 0o644, b'252:11\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/direction', 0o644, b'out\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/wMaxPacketSize', 0o644, b'0200\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/uevent', 0o644, b'''MAJOR=252 +MINOR=11 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/usb_endpoint/usbdev5.7_ep02/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/subsystem', '../../../../../../../bus/scsi') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/uevent', 0o644, b'DEVTYPE=scsi_host\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/subsystem', '../../../../../../../../bus/scsi') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/uevent', 0o644, b'DEVTYPE=scsi_target\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/generic', 'scsi_generic/sg2') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/subsystem', '../../../../../../../../../bus/scsi') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/driver', '../../../../../../../../../bus/scsi/drivers/sd') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/iodone_cnt', 0o644, b'0xc3\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/device_blocked', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/max_sectors', 0o644, b'240\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/modalias', 0o644, b'scsi:t-0x00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_level', 0o644, b'3\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/queue_depth', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/rev', 0o644, b'1.00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/iocounterbits', 0o644, b'32\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/vendor', 0o644, b'Generic \n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/state', 0o644, b'running\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/queue_type', 0o644, b'none\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/iorequest_cnt', 0o644, b'0xc3\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/evt_media_change', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/model', 0o644, b'USB Flash Drive \n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/ioerr_cnt', 0o644, b'0x2\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/uevent', 0o644, b'''DEVTYPE=scsi_device +DRIVER=sd +MODALIAS=scsi:t-0x00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/timeout', 0o644, b'60\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/subsystem', '../../../../../../../../../../../class/scsi_disk') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/device', '../../../7:0:0:0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/app_tag_own', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/FUA', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/cache_type', 0o644, b'write through\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/protection_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/manage_start_stop', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/allow_restart', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_disk/7:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_generic', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_generic/sg2', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_generic/sg2/subsystem', '../../../../../../../../../../../class/scsi_generic') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_generic/sg2/device', '../../../7:0:0:0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_generic/sg2/dev', 0o644, b'21:2\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_generic/sg2/uevent', 0o644, b'''MAJOR=21 +MINOR=2 +''') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_generic/sg2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_generic/sg2/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/bsg', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/bsg/7:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/bsg/7:0:0:0/subsystem', '../../../../../../../../../../../class/bsg') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/bsg/7:0:0:0/device', '../../../7:0:0:0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/bsg/7:0:0:0/dev', 0o644, b'254:2\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/bsg/7:0:0:0/uevent', 0o644, b'''MAJOR=254 +MINOR=2 +''') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/bsg/7:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/bsg/7:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/subsystem', '../../../../../../../../../../../class/block') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/bdi', '../../../../../../../../../../virtual/bdi/8:16') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/device', '../../../7:0:0:0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/capability', 0o644, b'13\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/ro', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/size', 0o644, b'257024\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/dev', 0o644, b'8:16\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/range', 0o644, b'16\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/removable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/stat', 0o644, b' 117 409 2103 272 0 0 0 0 0 194 272\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/uevent', 0o644, b'''MAJOR=8 +MINOR=16 +DEVTYPE=disk +''') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/bsg', '../../../bsg/7:0:0:0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/nr_requests', 0o644, b'128\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/nomerges', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/scheduler', 0o644, b'noop anticipatory deadline [cfq] \n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/hw_sector_size', 0o644, b'512\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/max_hw_sectors_kb', 0o644, b'120\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/read_ahead_kb', 0o644, b'128\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/max_sectors_kb', 0o644, b'120\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/iosched', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/iosched/slice_async_rq', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/iosched/back_seek_max', 0o644, b'16384\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/iosched/slice_sync', 0o644, b'100\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/iosched/slice_async', 0o644, b'40\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/iosched/fifo_expire_sync', 0o644, b'125\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/iosched/slice_idle', 0o644, b'8\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/iosched/back_seek_penalty', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/iosched/fifo_expire_async', 0o644, b'250\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/iosched/quantum', 0o644, b'4\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/subsystem', '../../../../../../../../../../../../class/block') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/start', 0o644, b'32\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/size', 0o644, b'256992\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/dev', 0o644, b'8:17\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/stat', 0o644, b' 109 392 1903 246 0 0 0 0 0 169 246\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/uevent', 0o644, b'''MAJOR=8 +MINOR=17 +DEVTYPE=partition +''') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_device', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_device/7:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_device/7:0:0:0/subsystem', '../../../../../../../../../../../class/scsi_device') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_device/7:0:0:0/device', '../../../7:0:0:0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_device/7:0:0:0/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_device/7:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/scsi_device/7:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/subsystem', '../../../../../../../../../class/scsi_host') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/device', '../../../host7') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/unique_id', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/can_queue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/unchecked_isa_dma', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/active_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/sg_tablesize', 0o644, b'128\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/prot_guard_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/host_busy', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/proc_name', 0o644, b'usb-storage\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/state', 0o644, b'running\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/cmd_per_lun', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/supported_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/uevent', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/prot_capabilities', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/scsi_host/host7/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/subsystem', '../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/driver', '../../../../../bus/usb/drivers/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/ep_00', 'usb_endpoint/usbdev5.9_ep00') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/version', 0o644, b' 2.00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/maxchild', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/bDeviceClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/bcdDevice', 0o644, b'0100\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/devnum', 0o644, b'9\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/bDeviceProtocol', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/idProduct', 0o644, b'007b\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/product', 0o644, b'N78\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/bDeviceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/configuration', 0o644, b'Bulk transfer method configuration\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/dev', 0o644, b'189:520\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/urbnum', 0o644, b'20\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/authorized', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/descriptors', 0o644, b'''\x12\x01\x00\x02\x02\x00\x00@!\x04{\x00\x00\x01\x01\x02\x03\x01\t\x02\xab\x01\x0e\x01\x04\xc02\t\x04\x00\x00\x01\x02\x02\x01\x06\x05$\x00\x00\x01\x04$\x02\x0f\x05$\x06\x00\x01\x07\x05\x81\x03@\x00\x08\t\x04\x01\x00\x02 +\x00\x00\x07\x07\x05\x82\x02\x00\x02\xff\x07\x05\x01\x02\x00\x02\xff\t\x04\x02\x00\x01\x02\x02\xff\x08\x05$\x00\x00\x01\x04$\x02\x0f\x05$\x06\x02\x03\x07\x05\x83\x03@\x00\x08\t\x04\x03\x00\x02 +\x00\x00\t\x07\x05\x84\x02\x00\x02\xff\x07\x05\x02\x02\x00\x02\xff\t\x04\x04\x00\x00\x02\x08\x00\x00\x05$\x00\x10\x01\x05$\x11\x00\x01\r$\x06\x04\x05\x06\x07\x08\t +\x0b\x0c\r\t\x04\x05\x00\x00\x02\x0b\x00 +\x05$\x00\x10\x01\x05$\x15\x00\x01\x05$\x06\x05\x06\t\x04\x06\x00\x00 +\x00\x00\x00\t\x04\x06\x01\x02 +\x00\x00\x00\x07\x05\x85\x02\x00\x02\xff\x07\x05\x03\x02\x00\x02\xff\t\x04\x07\x00\x00\x02\x0b\x00\x0b\x05$\x00\x10\x01\x05$\x15\x00\x01\x05$\x06\x07\x08\t\x04\x08\x00\x00 +\x00\x00\x00\t\x04\x08\x01\x02 +\x00\x00\x00\x07\x05\x86\x02\x00\x02\xff\x07\x05\x04\x02\x00\x02\xff\t\x04\t\x00\x00\x02\x08\x01\x00\x05$\x00\x10\x01\x05$\x08\x00\x01\x06$\x06\t +\x0b\t\x04 +\x00\x00\x02\xfe\x00\x00\x05$\x00\x10\x01\x05$\xab\x05\x15\x05$\x06 +\x0b\t\x04\x0b\x00\x00 +\x00\x00\x00\t\x04\x0b\x01\x02 +\x00\x00\x00\x04$\xfd\x01\x07\x05\x05\x02\x00\x02\xff\x07\x05\x87\x02\x00\x02\xff\t\x04\x0c\x00\x00\x02\xfd\x00\x0c\x05$\x00\x10\x01\x05$\xfc\x00\x01\x05$\x06\x0c\r\x04$\xfd\x00\t\x04\r\x00\x00 +\x00\x00\x00\t\x04\r\x01\x02 +\x00\x00\x00\x07\x05\x88\x03\x00\x02\x06\x07\x05\x06\x02\x00\x02\xff\t\x04\r\x02\x02 +\x00\x00\x00\x07\x05\x88\x02\x00\x02\xff\x07\x05\x06\x02\x00\x02\xff''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/bNumConfigurations', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/serial', 0o644, b'354172020305000\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/speed', 0o644, b'480\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/bMaxPacketSize0', 0o644, b'64\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/bmAttributes', 0o644, b'c0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/busnum', 0o644, b'5\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/quirks', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/bConfigurationValue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/uevent', 0o644, b'''MAJOR=189 +MINOR=520 +DEVTYPE=usb_device +DRIVER=usb +PRODUCT=421/7b/100 +TYPE=2/0/0 +BUSNUM=005 +DEVNUM=009 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/manufacturer', 0o644, b'Nokia\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/idVendor', 0o644, b'0421\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/bNumInterfaces', 0o644, b'14\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/bMaxPower', 0o644, b'100mA\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic02isc08ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/bInterfaceNumber', 0o644, b'04\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/bInterfaceSubClass', 0o644, b'08\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/bInterfaceClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=2/8/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic02isc08ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.4/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/subsystem', '../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/device', '../../../5-2') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/bEndpointAddress', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/type', 0o644, b'Control\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/dev', 0o644, b'252:33\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/direction', 0o644, b'both\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/bmAttributes', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/uevent', 0o644, b'''MAJOR=252 +MINOR=33 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/usb_endpoint/usbdev5.9_ep00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/subsystem', '../../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/ep_83', 'usb_endpoint/usbdev5.9_ep83') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic02isc02ipFF\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/bInterfaceNumber', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/bNumEndpoints', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/interface', 0o644, b'CDC Comms Interface\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/bInterfaceSubClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/bInterfaceClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=2/2/255 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic02isc02ipFF +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/bInterfaceProtocol', 0o644, b'ff\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/device', '../../../5-2:1.2') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/interval', 0o644, b'16ms\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/bEndpointAddress', 0o644, b'83\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/type', 0o644, b'Interrupt\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/dev', 0o644, b'252:30\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/bmAttributes', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/uevent', 0o644, b'''MAJOR=252 +MINOR=30 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/bInterval', 0o644, b'08\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/usb_endpoint/usbdev5.9_ep83/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.2/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/subsystem', '../../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/ep_01', 'usb_endpoint/usbdev5.9_ep01') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/ep_82', 'usb_endpoint/usbdev5.9_ep82') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/driver', '../../../../../../bus/usb/drivers/cdc_acm') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/bInterfaceNumber', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/bNumEndpoints', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/interface', 0o644, b'CDC Data Interface\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/bInterfaceClass', 0o644, b'0a\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/uevent', 0o644, b'''DEVTYPE=usb_interface +DRIVER=cdc_acm +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=10/0/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/device', '../../../5-2:1.1') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/interval', 0o644, b'31875us\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/bEndpointAddress', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/dev', 0o644, b'252:29\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/direction', 0o644, b'out\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/wMaxPacketSize', 0o644, b'0200\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/uevent', 0o644, b'''MAJOR=252 +MINOR=29 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/bInterval', 0o644, b'ff\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep01/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/device', '../../../5-2:1.1') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/bEndpointAddress', 0o644, b'82\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/dev', 0o644, b'252:28\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/wMaxPacketSize', 0o644, b'0200\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/uevent', 0o644, b'''MAJOR=252 +MINOR=28 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/bInterval', 0o644, b'ff\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/usb_endpoint/usbdev5.9_ep82/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.1/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic02iscFEip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/bInterfaceNumber', 0o644, b'0a\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/bInterfaceSubClass', 0o644, b'fe\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/bInterfaceClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=2/254/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic02iscFEip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.10/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic02isc0Bip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/bInterfaceNumber', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/interface', 0o644, b'PC Suite Services\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/bInterfaceSubClass', 0o644, b'0b\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/bInterfaceClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=2/11/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic02isc0Bip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.7/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/subsystem', '../../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/ep_81', 'usb_endpoint/usbdev5.9_ep81') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/driver', '../../../../../../bus/usb/drivers/cdc_acm') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic02isc02ip01\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/bInterfaceNumber', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/bmCapabilities', 0o644, b'15') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/bNumEndpoints', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/interface', 0o644, b'CDC Comms Interface\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/bInterfaceSubClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/bInterfaceClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/uevent', 0o644, b'''DEVTYPE=usb_interface +DRIVER=cdc_acm +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=2/2/1 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic02isc02ip01 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/bInterfaceProtocol', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/device', '../../../5-2:1.0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/interval', 0o644, b'16ms\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/bEndpointAddress', 0o644, b'81\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/type', 0o644, b'Interrupt\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/dev', 0o644, b'252:27\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/bmAttributes', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/uevent', 0o644, b'''MAJOR=252 +MINOR=27 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/bInterval', 0o644, b'08\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/usb_endpoint/usbdev5.9_ep81/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0/subsystem', '../../../../../../../../class/tty') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0/device', '../../../5-2:1.0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0/dev', 0o644, b'166:0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0/uevent', 0o644, b'''MAJOR=166 +MINOR=0 +DEVNAME=ttyACM0 +''') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic02isc08ip01\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/bInterfaceNumber', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/bInterfaceSubClass', 0o644, b'08\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/bInterfaceClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=2/8/1 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic02isc08ip01 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/bInterfaceProtocol', 0o644, b'01\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.9/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/bInterfaceNumber', 0o644, b'08\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/bInterfaceClass', 0o644, b'0a\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=10/0/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.8/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/power/active_duration', 0o644, b'20902\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/power/wakeup', 0o644, b'\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/power/connected_duration', 0o644, b'20901\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/power/autosuspend', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/power/persist', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/power/level', 0o644, b'on\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/bInterfaceNumber', 0o644, b'0d\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/bInterfaceClass', 0o644, b'0a\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=10/0/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.13/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic02isc0Bip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/bInterfaceNumber', 0o644, b'05\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/interface', 0o644, b'SYNCML-SYNC\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/bInterfaceSubClass', 0o644, b'0b\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/bInterfaceClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=2/11/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic02isc0Bip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.5/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/bInterfaceNumber', 0o644, b'0b\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/bInterfaceClass', 0o644, b'0a\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=10/0/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.11/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic02iscFDip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/bInterfaceNumber', 0o644, b'0c\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/interface', 0o644, b'LCIF_Alt0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/bInterfaceSubClass', 0o644, b'fd\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/bInterfaceClass', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=2/253/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic02iscFDip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.12/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/subsystem', '../../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/ep_02', 'usb_endpoint/usbdev5.9_ep02') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/ep_84', 'usb_endpoint/usbdev5.9_ep84') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/bInterfaceNumber', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/bNumEndpoints', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/interface', 0o644, b'CDC Data Interface\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/bInterfaceClass', 0o644, b'0a\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=10/0/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/device', '../../../5-2:1.3') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/bEndpointAddress', 0o644, b'84\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/dev', 0o644, b'252:31\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/wMaxPacketSize', 0o644, b'0200\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/uevent', 0o644, b'''MAJOR=252 +MINOR=31 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/bInterval', 0o644, b'ff\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep84/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/device', '../../../5-2:1.3') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/interval', 0o644, b'31875us\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/bEndpointAddress', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/type', 0o644, b'Bulk\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/dev', 0o644, b'252:32\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/direction', 0o644, b'out\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/wMaxPacketSize', 0o644, b'0200\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/bmAttributes', 0o644, b'02\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/uevent', 0o644, b'''MAJOR=252 +MINOR=32 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/bInterval', 0o644, b'ff\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/usb_endpoint/usbdev5.9_ep02/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.3/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/subsystem', '../../../../../../bus/usb') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/modalias', 0o644, b'usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/bInterfaceNumber', 0o644, b'06\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/bNumEndpoints', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/bInterfaceClass', 0o644, b'0a\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/uevent', 0o644, b'''DEVTYPE=usb_interface +PRODUCT=421/7b/100 +TYPE=2/0/0 +INTERFACE=10/0/0 +MODALIAS=usb:v0421p007Bd0100dc02dsc00dp00ic0Aisc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.6/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/power/active_duration', 0o644, b'547102\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/power/wakeup', 0o644, b'enabled\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/power/connected_duration', 0o644, b'8371932\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/power/autosuspend', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/power/level', 0o644, b'auto\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/subsystem', '../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/ep_81', 'usb_endpoint/usbdev5.1_ep81') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/driver', '../../../../../bus/usb/drivers/hub') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/modalias', 0o644, b'usb:v1D6Bp0002d0206dc09dsc00dp00ic09isc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/bInterfaceNumber', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/bNumEndpoints', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/bInterfaceClass', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/uevent', 0o644, b'''DEVTYPE=usb_interface +DRIVER=hub +PRODUCT=1d6b/2/206 +TYPE=9/0/0 +INTERFACE=9/0/0 +MODALIAS=usb:v1D6Bp0002d0206dc09dsc00dp00ic09isc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/subsystem', '../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/device', '../../../5-0:1.0') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/interval', 0o644, b'256ms\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/bEndpointAddress', 0o644, b'81\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/type', 0o644, b'Interrupt\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/dev', 0o644, b'252:8\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/wMaxPacketSize', 0o644, b'0004\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/bmAttributes', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/uevent', 0o644, b'''MAJOR=252 +MINOR=8 +''') +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/bInterval', 0o644, b'0c\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/usb_endpoint/usbdev5.1_ep81/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.7/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1d.7/usb_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.7/usb_host/usb_host5', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.7/usb_host/usb_host5/subsystem', '../../../../../class/usb_host') +l('sys/devices/pci0000:00/0000:00:1d.7/usb_host/usb_host5/device', '../../../0000:00:1d.7') +f('sys/devices/pci0000:00/0000:00:1d.7/usb_host/usb_host5/companion', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.7/usb_host/usb_host5/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1d.7/usb_host/usb_host5/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.7/usb_host/usb_host5/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:0c') +l('sys/devices/pci0000:00/0000:00:1c.1/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1c.1/driver', '../../../bus/pci/drivers/pcieport-driver') +f('sys/devices/pci0000:00/0000:00:1c.1/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1c.1/enable', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1c.1/modalias', 0o644, b'pci:v00008086d000027D2sv00000000sd00000000bc06sc04i00\n') +f('sys/devices/pci0000:00/0000:00:1c.1/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000004000 0x0000000000005fff 0x0000000000000100 +0x00000000ec000000 0x00000000edffffff 0x0000000000000200 +0x00000000e4000000 0x00000000e40fffff 0x0000000000001201 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1c.1/config', 0o644, b"\x86\x80\xd2'\x07\x05\x10\x00\x02\x00\x04\x06\x10\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x03\x00@P\x00\x00\x00\xec\xf0\xed\x01\xe4\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x0b\x02\x04\x00\x10\x80A\x01\xc0\x0f\x00\x00\x00\x00\x11\x00\x11,\x11\x02B\x00\x110\xe0\xa0\x18\x00\x00\x00H\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x90\x01\x00\x0c0\xe0\xfe\x81A\x00\x00\x00\x00\x00\x00\r\xa0\x00\x00\xaa\x17\x11 \x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x11\x00\x00\x00\x00\x00\x00\x0f\xc7\x80\x06\x07\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00\x02\x00\x01\x18\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x80\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x06\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x01\x00\x00\x01\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\xc0\xd1\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07`\x00`\x00\x00\x00\x00`\x02\x00\x00\x0c\x00\x06\x00\x00\x00\x001[`\xc9\xc0\x00p&u\xa2\x178\x00\xa1\x07G\x02\x16\x00\x00\x14\xb5\xbcJ\xbc\x0b*\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x0c\xb4\x00\xc4\x0c\xb6\x00A\x08z\x00Y\x00\x1b\x00[\x00\x1d\x00\x01\x00\xba\x00\xe3\x0f\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1c.1/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1c.1/subsystem_device', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:1c.1/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1c.1/irq', 0o644, b'509\n') +f('sys/devices/pci0000:00/0000:00:1c.1/device', 0o644, b'0x27d2\n') +f('sys/devices/pci0000:00/0000:00:1c.1/class', 0o644, b'0x060400\n') +f('sys/devices/pci0000:00/0000:00:1c.1/msi_bus', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.1/subsystem_vendor', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:1c.1/uevent', 0o644, b'''DRIVER=pcieport-driver +PCI_CLASS=60400 +PCI_ID=8086:27D2 +PCI_SUBSYS_ID=0000:0000 +PCI_SLOT_NAME=0000:00:1c.1 +MODALIAS=pci:v00008086d000027D2sv00000000sd00000000bc06sc04i00 +''') +f('sys/devices/pci0000:00/0000:00:1c.1/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1c.1/pci_bus', 0o755) +d('sys/devices/pci0000:00/0000:00:1c.1/pci_bus/0000:03', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/pci_bus/0000:03/subsystem', '../../../../../class/pci_bus') +l('sys/devices/pci0000:00/0000:00:1c.1/pci_bus/0000:03/device', '../../../0000:00:1c.1') +f('sys/devices/pci0000:00/0000:00:1c.1/pci_bus/0000:03/cpuaffinity', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1c.1/pci_bus/0000:03/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.1/pci_bus/0000:03/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/pci_bus/0000:03/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie02', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie02/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie02/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie02/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie02/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie03', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie03/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie03/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie03/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie03/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/subsystem', '../../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/driver', '../../../../bus/pci/drivers/iwl3945') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/rs_window', 0o644, b''' 54Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 48Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 36Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 24Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 18Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 12Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 11Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 9Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 6Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 5Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 2Mbs: 00000000000000000000000000000000000000000000000000000000000000 + 1Mbs: 00000000000000000000000000000000000000000000000000000000000000 + +Average rate: 0Mbs +''') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/modalias', 0o644, b'pci:v00008086d00004227sv00008086sd00001011bc02sc80i00\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/resource', 0o644, b'''0x00000000edf00000 0x00000000edf00fff 0x0000000000020200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/statistics', 0o644, b'''02 00 01 00 a4 c0 02 00 c6 27 01 00 80 16 01 00 .........\'...... +e9 0c 00 00 00 00 00 00 00 00 00 00 69 05 00 00 ............i... +de 98 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +00 00 00 00 00 00 00 00 bd 01 00 00 00 00 00 00 ................ +fd 68 08 00 ae d3 06 00 78 65 04 00 b8 2b 00 00 .h......xe...+.. +00 00 00 00 00 00 00 00 7e 42 02 00 4f 95 01 00 ........~B..O... +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +00 00 00 00 da 01 00 00 00 00 00 00 00 00 00 00 ................ +00 00 00 00 d8 dc 00 00 59 10 01 00 00 00 00 00 ........Y....... +df 0c 00 00 16 00 00 00 00 00 00 00 00 00 00 00 ................ +88 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ................ +00 00 00 00 72 ff ff ff 00 00 00 00 00 00 00 00 ....r........... +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +00 00 00 00 01 00 00 00 bb 45 98 35 1c 91 e7 f1 .........E.5.... +4c 19 00 00 c2 0c 00 00 e7 ed 00 00 1c 4c 00 00 L............L.. +''') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/config', 0o644, b'\x86\x80\'B\x06\x05\x10\x00\x02\x00\x80\x02\x10\x00\x00\x00\x00\x00\xf0\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x80\x11\x10\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xd0"H\x00\x00\x00\r\x05\xe0\x81\x00\x0c\x10\xe0\xfe\x00\x00\x00\x00\xd1A\x00\x00\x10\x00\x11\x00\xc0\x0e\x00\x00\x10\x08\n\x00\x11\x1c\x07\x00B\x01\x11\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x14\x00\x00\x10\x00\x00\x00\x00\x00\x11 \x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x04\x0f\x1a\x00\x00\x00\x01\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x01\x00\xd1\xaeu\xff\xff\xd2\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/filter_flags', 0o644, b'0x0024\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/retry_rate', 0o644, b'1') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/channels', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/subsystem_device', 0o644, b'0x1011\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/tx_power', 0o644, b'16\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/irq', 0o644, b'504\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/antenna', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/device', 0o644, b'0x4227\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/class', 0o644, b'0x028000\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/power_level', 0o644, b'6 (AC) OFF\n\x00') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/flags', 0o644, b'0x8015\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/resource0', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/temperature', 0o644, b'-142\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/measurement', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/subsystem_vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/uevent', 0o644, b'''DRIVER=iwl3945 +PCI_CLASS=28000 +PCI_ID=8086:4227 +PCI_SUBSYS_ID=8086:1011 +PCI_SLOT_NAME=0000:03:00.0 +MODALIAS=pci:v00008086d00004227sv00008086sd00001011bc02sc80i00 +''') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/status', 0o644, b'0x000002e4\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211', 0o755) +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/subsystem', '../../../../../../class/ieee80211') +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/device', '../../../0000:03:00.0') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/index', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/uevent', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/macaddress', 0o644, b'00:19:d2:75:ae:d1\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net', 0o755) +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/subsystem', '../../../../../../class/net') +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/device', '../../../0000:03:00.0') +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/phy80211', '../../ieee80211/phy0') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/ifindex', 0o644, b'3\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/features', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/iflink', 0o644, b'3\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/dormant', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/dev_id', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/type', 0o644, b'801\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/operstate', 0o644, b'unknown\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/carrier', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/link_mode', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/tx_queue_len', 0o644, b'1000\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/flags', 0o644, b'0x1003\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/addr_len', 0o644, b'6\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/address', 0o644, b'00:19:d2:75:ae:ff\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/uevent', 0o644, b'''INTERFACE=wmaster0 +IFINDEX=3 +''') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/mtu', 0o644, b'1500\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/broadcast', 0o644, b'ff:ff:ff:ff:ff:ff\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/tx_aborted_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_crc_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_bytes', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/tx_packets', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/tx_carrier_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/tx_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_dropped', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/tx_fifo_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_length_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/tx_dropped', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_fifo_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_missed_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/tx_window_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/collisions', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_frame_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_packets', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_compressed', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/tx_compressed', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/multicast', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/rx_over_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/tx_bytes', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/statistics/tx_heartbeat_errors', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wmaster0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/subsystem', '../../../../../../class/net') +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/device', '../../../0000:03:00.0') +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/phy80211', '../../ieee80211/phy0') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/ifindex', 0o644, b'4\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/features', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/iflink', 0o644, b'4\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/dormant', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/dev_id', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/type', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/operstate', 0o644, b'up\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/carrier', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/link_mode', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/tx_queue_len', 0o644, b'1000\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/flags', 0o644, b'0x1003\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/addr_len', 0o644, b'6\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/address', 0o644, b'00:19:d2:75:ae:ff\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/uevent', 0o644, b'''INTERFACE=wlan0 +IFINDEX=4 +''') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/mtu', 0o644, b'1500\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/broadcast', 0o644, b'ff:ff:ff:ff:ff:ff\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/tx_aborted_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_crc_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_bytes', 0o644, b'289996\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/tx_packets', 0o644, b'1029\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/tx_carrier_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/tx_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_dropped', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/tx_fifo_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_length_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/tx_dropped', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_fifo_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_missed_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/tx_window_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/collisions', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_frame_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_packets', 0o644, b'788\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_compressed', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/tx_compressed', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/multicast', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/rx_over_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/tx_bytes', 0o644, b'530013\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/statistics/tx_heartbeat_errors', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless/beacon', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless/link', 0o644, b'77\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless/nwid', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless/retries', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless/fragment', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless/misc', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless/crypt', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless/noise', 0o644, b'178\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless/level', 0o644, b'199\n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0/wireless/status', 0o644, b'0x0\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds', 0o755) +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:TX', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:TX/subsystem', '../../../../../../class/leds') +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:TX/device', '../../../0000:03:00.0') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:TX/trigger', 0o644, b'none AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx [phy0tx] phy0assoc phy0radio \n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:TX/brightness', 0o644, b'0\n\x00') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:TX/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:TX/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:TX/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:assoc', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:assoc/subsystem', '../../../../../../class/leds') +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:assoc/device', '../../../0000:03:00.0') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:assoc/trigger', 0o644, b'none AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx [phy0assoc] phy0radio \n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:assoc/brightness', 0o644, b'255\n\x00') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:assoc/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:assoc/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:assoc/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:radio', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:radio/subsystem', '../../../../../../class/leds') +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:radio/device', '../../../0000:03:00.0') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:radio/trigger', 0o644, b'none AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx phy0assoc [phy0radio] \n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:radio/brightness', 0o644, b'255\n\x00') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:radio/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:radio/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:radio/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:RX', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:RX/subsystem', '../../../../../../class/leds') +l('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:RX/device', '../../../0000:03:00.0') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:RX/trigger', 0o644, b'none AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 [phy0rx] phy0tx phy0assoc phy0radio \n') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:RX/brightness', 0o644, b'0\n\x00') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:RX/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:RX/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/leds/iwl-phy0:RX/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie00', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie00/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie00/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.1/0000:00:1c.1:pcie00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:00.0', 0o755) +l('sys/devices/pci0000:00/0000:00:00.0/subsystem', '../../../bus/pci') +f('sys/devices/pci0000:00/0000:00:00.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:00.0/enable', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:00.0/modalias', 0o644, b'pci:v00008086d000027A0sv000017AAsd00002015bc06sc00i00\n') +f('sys/devices/pci0000:00/0000:00:00.0/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:00.0/config', 0o644, b"\x86\x80\xa0'\x06\x01\x90 \x03\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\x15 \x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x90\xd1\xfe\x01@\xd1\xfe\x05\x00\x00\xf0\x01\x80\xd1\xfe\x00\x00\x02\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x11\x11\x000\x11\x11\x00\xff\x03\x00\x00\x80\x1a9\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\t\x00\tQJ\x00J\xb0\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x05\x00\x10\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:00.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:00.0/subsystem_device', 0o644, b'0x2015\n') +f('sys/devices/pci0000:00/0000:00:00.0/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:00.0/irq', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:00.0/device', 0o644, b'0x27a0\n') +f('sys/devices/pci0000:00/0000:00:00.0/class', 0o644, b'0x060000\n') +f('sys/devices/pci0000:00/0000:00:00.0/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:00.0/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:00.0/uevent', 0o644, b'''PCI_CLASS=60000 +PCI_ID=8086:27A0 +PCI_SUBSYS_ID=17AA:2015 +PCI_SLOT_NAME=0000:00:00.0 +MODALIAS=pci:v00008086d000027A0sv000017AAsd00002015bc06sc00i00 +''') +f('sys/devices/pci0000:00/0000:00:00.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:00.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:00.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.3', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.3/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:0f') +l('sys/devices/pci0000:00/0000:00:1c.3/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1c.3/driver', '../../../bus/pci/drivers/pcieport-driver') +f('sys/devices/pci0000:00/0000:00:1c.3/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1c.3/enable', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1c.3/modalias', 0o644, b'pci:v00008086d000027D6sv00000000sd00000000bc06sc04i00\n') +f('sys/devices/pci0000:00/0000:00:1c.3/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000008000 0x0000000000009fff 0x0000000000000100 +0x00000000ea000000 0x00000000ebffffff 0x0000000000000200 +0x00000000e4200000 0x00000000e42fffff 0x0000000000001201 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1c.3/config', 0o644, b"\x86\x80\xd6'\x07\x05\x10\x00\x02\x00\x04\x06\x10\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x13\x00\x80\x90\x00\x00\x00\xea\xf0\xeb!\xe4!\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x0b\x04\x04\x00\x10\x80A\x01\xc0\x0f\x00\x00\x00\x00\x10\x00\x11L\x11\x04\x00\x00\x01\x10\xe0\xa0(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x90\x01\x00\x0c0\xe0\xfe\x91A\x00\x00\x00\x00\x00\x00\r\xa0\x00\x00\xaa\x17\x11 \x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x11\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x06\x07\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00\x02\x00\x01\x18\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x00\x00\x80\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x01\x00\x00\x01\x02\x04\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\xc0\xd1\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07`\x00`\x00\x00\x00\x00`\x02\x00\x00\x0c\x00\x06\x00\x00\x00\x00\x00[`\xc9\xc0\x00p&u\x00\x10\x00\x00\xff\x0f\x00\x00\x16\x00\x00\x14\xb5\xbcJ\xbc\x0b*\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1c.3/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1c.3/subsystem_device', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:1c.3/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1c.3/irq', 0o644, b'507\n') +f('sys/devices/pci0000:00/0000:00:1c.3/device', 0o644, b'0x27d6\n') +f('sys/devices/pci0000:00/0000:00:1c.3/class', 0o644, b'0x060400\n') +f('sys/devices/pci0000:00/0000:00:1c.3/msi_bus', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.3/subsystem_vendor', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:1c.3/uevent', 0o644, b'''DRIVER=pcieport-driver +PCI_CLASS=60400 +PCI_ID=8086:27D6 +PCI_SUBSYS_ID=0000:0000 +PCI_SLOT_NAME=0000:00:1c.3 +MODALIAS=pci:v00008086d000027D6sv00000000sd00000000bc06sc04i00 +''') +f('sys/devices/pci0000:00/0000:00:1c.3/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1c.3/pci_bus', 0o755) +d('sys/devices/pci0000:00/0000:00:1c.3/pci_bus/0000:0c', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.3/pci_bus/0000:0c/subsystem', '../../../../../class/pci_bus') +l('sys/devices/pci0000:00/0000:00:1c.3/pci_bus/0000:0c/device', '../../../0000:00:1c.3') +f('sys/devices/pci0000:00/0000:00:1c.3/pci_bus/0000:0c/cpuaffinity', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1c.3/pci_bus/0000:0c/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.3/pci_bus/0000:0c/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.3/pci_bus/0000:0c/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.3/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.3/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie02', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie02/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie02/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie02/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie02/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie03', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie03/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie03/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie03/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie03/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie00', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie00/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie00/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.3/0000:00:1c.3:pcie00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.0/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:01') +l('sys/devices/pci0000:00/0000:00:1f.0/subsystem', '../../../bus/pci') +f('sys/devices/pci0000:00/0000:00:1f.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1f.0/enable', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.0/modalias', 0o644, b'pci:v00008086d000027B9sv000017AAsd00002009bc06sc01i00\n') +f('sys/devices/pci0000:00/0000:00:1f.0/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1f.0/config', 0o644, b'''\x86\x80\xb9\'\x07\x00\x10\x02\x02\x00\x01\x06\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\t \x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00\x80\x00\x00\x00\x81\x11\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x8b\x8b\x8b\x92\x00\x00\x00\x8b\x8b\x8b\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00 +\x1f\x01\x16|\x00\xe1\x15\x0c\x00\x81\x16\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x06\x02\x00\x00\x00\x00\x00\x13\x1c +\x00\x00\x03\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x12 +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\x12\x11\x00gE\x00\x00\xc0\xff\x00\x00\x01\x00\x00\x00\t\x00\x0c\x10\xb4\x02$\x17\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc0\xd1\xfe\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00''') +f('sys/devices/pci0000:00/0000:00:1f.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1f.0/subsystem_device', 0o644, b'0x2009\n') +f('sys/devices/pci0000:00/0000:00:1f.0/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1f.0/irq', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.0/device', 0o644, b'0x27b9\n') +f('sys/devices/pci0000:00/0000:00:1f.0/class', 0o644, b'0x060100\n') +f('sys/devices/pci0000:00/0000:00:1f.0/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.0/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1f.0/uevent', 0o644, b'''PCI_CLASS=60100 +PCI_ID=8086:27B9 +PCI_SUBSYS_ID=17AA:2009 +PCI_SLOT_NAME=0000:00:1f.0 +MODALIAS=pci:v00008086d000027B9sv000017AAsd00002009bc06sc01i00 +''') +f('sys/devices/pci0000:00/0000:00:1f.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.0/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:0b') +l('sys/devices/pci0000:00/0000:00:1c.0/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1c.0/driver', '../../../bus/pci/drivers/pcieport-driver') +f('sys/devices/pci0000:00/0000:00:1c.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1c.0/enable', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1c.0/modalias', 0o644, b'pci:v00008086d000027D0sv00000000sd00000000bc06sc04i00\n') +f('sys/devices/pci0000:00/0000:00:1c.0/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000003000 0x0000000000003fff 0x0000000000000100 +0x00000000ee000000 0x00000000ee0fffff 0x0000000000000200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1c.0/config', 0o644, b"\x86\x80\xd0'\x07\x05\x10\x00\x02\x00\x04\x06\x10\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x0000\x00\x00\x00\xee\x00\xee\xf1\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x04\x00\x10\x80A\x01\xc0\x0f\x00\x00\x00\x00\x11\x00\x11,\x11\x01B\x00\x110\xe0\xa0\x10\x00(\x00@\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x90\x01\x00\x0c0\xe0\xfeyA\x00\x00\x00\x00\x00\x00\r\xa0\x00\x00\xaa\x17\x11 \x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x11\xc0\x00\x00\x00\x00\x00\x0f\xc7\x00\x06\x07\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00\x02\x00\x01\x18\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x80\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x11\x00\x06\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x01\x00\x00\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\xc0\xd1\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07`\x00`\x00\x00\x00\x00`\x02\x00\x00\x0c\x00\x06\x00\x00\x00\x00\x08[`\xc9\xc0\x00p&u:\x188\x009\x08\x9e\x0e\x16\x00\x00\x14\xb5\xbcJ\xbc\x0b*\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\t\xec\x00\xfc\t\xee\x00c\x00W\x00i\x00J\x00k\x00L\x00\x01\x00\x05\x00\x10\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1c.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1c.0/subsystem_device', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:1c.0/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1c.0/irq', 0o644, b'510\n') +f('sys/devices/pci0000:00/0000:00:1c.0/device', 0o644, b'0x27d0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/class', 0o644, b'0x060400\n') +f('sys/devices/pci0000:00/0000:00:1c.0/msi_bus', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.0/subsystem_vendor', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:1c.0/uevent', 0o644, b'''DRIVER=pcieport-driver +PCI_CLASS=60400 +PCI_ID=8086:27D0 +PCI_SUBSYS_ID=0000:0000 +PCI_SLOT_NAME=0000:00:1c.0 +MODALIAS=pci:v00008086d000027D0sv00000000sd00000000bc06sc04i00 +''') +f('sys/devices/pci0000:00/0000:00:1c.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie03', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie03/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie03/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie03/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie03/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.0/pci_bus', 0o755) +d('sys/devices/pci0000:00/0000:00:1c.0/pci_bus/0000:02', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.0/pci_bus/0000:02/subsystem', '../../../../../class/pci_bus') +l('sys/devices/pci0000:00/0000:00:1c.0/pci_bus/0000:02/device', '../../../0000:00:1c.0') +f('sys/devices/pci0000:00/0000:00:1c.0/pci_bus/0000:02/cpuaffinity', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1c.0/pci_bus/0000:02/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.0/pci_bus/0000:02/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.0/pci_bus/0000:02/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.0/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/subsystem', '../../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/driver', '../../../../bus/pci/drivers/e1000e') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/modalias', 0o644, b'pci:v00008086d0000109Asv000017AAsd00002001bc02sc00i00\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/resource', 0o644, b'''0x00000000ee000000 0x00000000ee01ffff 0x0000000000020200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000003000 0x000000000000301f 0x0000000000020101 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/config', 0o644, b'\x86\x80\x9a\x10\x07\x05\x10\x00\x00\x00\x00\x02\x10\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\x01 \x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xd0"\xc8\x00 \x00\x0f\x05\xe0\x81\x00\x0c\x10\xe0\xfe\x00\x00\x00\x00\xc9A\x00\x00\x10\x00\x01\x00\xc1\x0c\x00\x00\x10(\x1a\x00\x11\x1c\x07\x00@\x01\x11\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x14\x00\x00\x10\x00\x00\x00\x00\x00\x11 \x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x04\x0f\x03\x00\x00\x00\x01\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x01\x00\xc7\x8d\xe2\xff\xffA\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/resource2', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/subsystem_device', 0o644, b'0x2001\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/irq', 0o644, b'505\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/device', 0o644, b'0x109a\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/class', 0o644, b'0x020000\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/resource0', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/uevent', 0o644, b'''DRIVER=e1000e +PCI_CLASS=20000 +PCI_ID=8086:109A +PCI_SUBSYS_ID=17AA:2001 +PCI_SLOT_NAME=0000:02:00.0 +MODALIAS=pci:v00008086d0000109Asv000017AAsd00002001bc02sc00i00 +''') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net', 0o755) +d('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/subsystem', '../../../../../../class/net') +l('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/device', '../../../0000:02:00.0') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/ifindex', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/features', 0o644, b'0x111ba9\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/iflink', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/dormant', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/dev_id', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/type', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/operstate', 0o644, b'down\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/carrier', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/link_mode', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/tx_queue_len', 0o644, b'1000\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/flags', 0o644, b'0x1003\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/addr_len', 0o644, b'6\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/address', 0o644, b'00:16:41:e2:8d:ff\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/uevent', 0o644, b'''INTERFACE=eth0 +IFINDEX=2 +''') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/mtu', 0o644, b'1500\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/broadcast', 0o644, b'ff:ff:ff:ff:ff:ff\n') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/tx_aborted_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_crc_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_bytes', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/tx_packets', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/tx_carrier_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/tx_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_dropped', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/tx_fifo_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_length_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/tx_dropped', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_fifo_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_missed_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/tx_window_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/collisions', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_frame_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_packets', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_compressed', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/tx_compressed', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/multicast', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/rx_over_errors', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/tx_bytes', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/statistics/tx_heartbeat_errors', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/eth0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie00', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie00/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie00/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie02', 0o755) +l('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie02/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie02/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie02/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie02/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.3', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.3/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:18') +l('sys/devices/pci0000:00/0000:00:1f.3/subsystem', '../../../bus/pci') +f('sys/devices/pci0000:00/0000:00:1f.3/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1f.3/enable', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.3/modalias', 0o644, b'pci:v00008086d000027DAsv000017AAsd0000200Fbc0Csc05i00\n') +f('sys/devices/pci0000:00/0000:00:1f.3/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x00000000000018e0 0x00000000000018ff 0x0000000000020101 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1f.3/config', 0o644, b"\x86\x80\xda'\x01\x01\x80\x02\x02\x00\x05\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\x0f \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1f.3/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1f.3/subsystem_device', 0o644, b'0x200f\n') +f('sys/devices/pci0000:00/0000:00:1f.3/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1f.3/irq', 0o644, b'11\n') +f('sys/devices/pci0000:00/0000:00:1f.3/device', 0o644, b'0x27da\n') +f('sys/devices/pci0000:00/0000:00:1f.3/class', 0o644, b'0x0c0500\n') +f('sys/devices/pci0000:00/0000:00:1f.3/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.3/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1f.3/uevent', 0o644, b'''PCI_CLASS=C0500 +PCI_ID=8086:27DA +PCI_SUBSYS_ID=17AA:200F +PCI_SLOT_NAME=0000:00:1f.3 +MODALIAS=pci:v00008086d000027DAsv000017AAsd0000200Fbc0Csc05i00 +''') +f('sys/devices/pci0000:00/0000:00:1f.3/resource4', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.3/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.3/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.3/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.0/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:19') +l('sys/devices/pci0000:00/0000:00:1d.0/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1d.0/driver', '../../../bus/pci/drivers/uhci_hcd') +f('sys/devices/pci0000:00/0000:00:1d.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1d.0/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.0/modalias', 0o644, b'pci:v00008086d000027C8sv000017AAsd0000200Abc0Csc03i00\n') +f('sys/devices/pci0000:00/0000:00:1d.0/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000001800 0x000000000000181f 0x0000000000020101 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1d.0/config', 0o644, b"\x86\x80\xc8'\x05\x00\x80\x02\x02\x00\x03\x0c\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\n \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1d.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1d.0/subsystem_device', 0o644, b'0x200a\n') +f('sys/devices/pci0000:00/0000:00:1d.0/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1d.0/irq', 0o644, b'16\n') +f('sys/devices/pci0000:00/0000:00:1d.0/pools', 0o644, b'''poolinfo - 0.1 +uhci_qh 11 32 128 1 +uhci_td 1 64 64 1 +buffer-2048 0 0 2048 0 +buffer-512 0 0 512 0 +buffer-128 0 0 128 0 +buffer-32 1 128 32 1 +''') +f('sys/devices/pci0000:00/0000:00:1d.0/device', 0o644, b'0x27c8\n') +f('sys/devices/pci0000:00/0000:00:1d.0/class', 0o644, b'0x0c0300\n') +f('sys/devices/pci0000:00/0000:00:1d.0/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.0/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1d.0/uevent', 0o644, b'''DRIVER=uhci_hcd +PCI_CLASS=C0300 +PCI_ID=8086:27C8 +PCI_SUBSYS_ID=17AA:200A +PCI_SLOT_NAME=0000:00:1d.0 +MODALIAS=pci:v00008086d000027C8sv000017AAsd0000200Abc0Csc03i00 +''') +f('sys/devices/pci0000:00/0000:00:1d.0/resource4', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1d.0/usb1', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.0/usb1/subsystem', '../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.0/usb1/driver', '../../../../bus/usb/drivers/usb') +l('sys/devices/pci0000:00/0000:00:1d.0/usb1/ep_00', 'usb_endpoint/usbdev1.1_ep00') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/version', 0o644, b' 1.10\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/authorized_default', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/maxchild', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/bDeviceClass', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/bcdDevice', 0o644, b'0206\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/devnum', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/bDeviceProtocol', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/idProduct', 0o644, b'0001\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/product', 0o644, b'UHCI Host Controller\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/bDeviceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/configuration', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/dev', 0o644, b'189:0\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/urbnum', 0o644, b'16\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/authorized', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/descriptors', 0o644, b'\x12\x01\x10\x01\t\x00\x00@k\x1d\x01\x00\x06\x02\x03\x02\x01\x01\t\x02\x19\x00\x01\x01\x00\xe0\x00\t\x04\x00\x00\x01\t\x00\x00\x00\x07\x05\x81\x03\x02\x00\xff') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/bNumConfigurations', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/serial', 0o644, b'0000:00:1d.0\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/speed', 0o644, b'12\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/bMaxPacketSize0', 0o644, b'64\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/bmAttributes', 0o644, b'e0\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/busnum', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/quirks', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/bConfigurationValue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/uevent', 0o644, b'''MAJOR=189 +MINOR=0 +DEVTYPE=usb_device +DRIVER=usb +PRODUCT=1d6b/1/206 +TYPE=9/0/0 +BUSNUM=001 +DEVNUM=001 +''') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/manufacturer', 0o644, b'Linux 2.6.27-rc7-00106-g6ef190c-dirty uhci_hcd\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/idVendor', 0o644, b'1d6b\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/bNumInterfaces', 0o644, b' 1\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/bMaxPower', 0o644, b' 0mA\n') +d('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/subsystem', '../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/device', '../../../usb1') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/bEndpointAddress', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/type', 0o644, b'Control\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/dev', 0o644, b'252:1\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/direction', 0o644, b'both\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/bmAttributes', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/uevent', 0o644, b'''MAJOR=252 +MINOR=1 +''') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/usb_endpoint/usbdev1.1_ep00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/subsystem', '../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/ep_81', 'usb_endpoint/usbdev1.1_ep81') +l('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/driver', '../../../../../bus/usb/drivers/hub') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/modalias', 0o644, b'usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/bInterfaceNumber', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/bNumEndpoints', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/bInterfaceClass', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/uevent', 0o644, b'''DEVTYPE=usb_interface +DRIVER=hub +PRODUCT=1d6b/1/206 +TYPE=9/0/0 +INTERFACE=9/0/0 +MODALIAS=usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/subsystem', '../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/device', '../../../1-0:1.0') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/interval', 0o644, b'255ms\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/bEndpointAddress', 0o644, b'81\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/type', 0o644, b'Interrupt\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/dev', 0o644, b'252:0\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/wMaxPacketSize', 0o644, b'0002\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/bmAttributes', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/uevent', 0o644, b'''MAJOR=252 +MINOR=0 +''') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/bInterval', 0o644, b'ff\n') +d('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/usb_endpoint/usbdev1.1_ep81/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.0/usb1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/power/active_duration', 0o644, b'2532\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/power/wakeup', 0o644, b'enabled\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/power/connected_duration', 0o644, b'8372376\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/power/autosuspend', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.0/usb1/power/level', 0o644, b'auto\n') +d('sys/devices/pci0000:00/0000:00:1d.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.0/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1d.0/usb_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.0/usb_host/usb_host1', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.0/usb_host/usb_host1/subsystem', '../../../../../class/usb_host') +l('sys/devices/pci0000:00/0000:00:1d.0/usb_host/usb_host1/device', '../../../0000:00:1d.0') +f('sys/devices/pci0000:00/0000:00:1d.0/usb_host/usb_host1/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1d.0/usb_host/usb_host1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.0/usb_host/usb_host1/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:16') +l('sys/devices/pci0000:00/0000:00:1f.2/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1f.2/driver', '../../../bus/pci/drivers/ahci') +f('sys/devices/pci0000:00/0000:00:1f.2/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1f.2/resource3', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.2/modalias', 0o644, b'pci:v00008086d000027C5sv000017AAsd0000200Dbc01sc06i01\n') +f('sys/devices/pci0000:00/0000:00:1f.2/resource', 0o644, b'''0x00000000000018c8 0x00000000000018cf 0x0000000000020101 +0x00000000000018ac 0x00000000000018af 0x0000000000020101 +0x00000000000018c0 0x00000000000018c7 0x0000000000020101 +0x00000000000018a8 0x00000000000018ab 0x0000000000020101 +0x00000000000018b0 0x00000000000018bf 0x0000000000020101 +0x00000000ee404400 0x00000000ee4047ff 0x0000000000020200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1f.2/config', 0o644, b"\x86\x80\xc5'\x07\x04\xb0\x02\x02\x01\x06\x01\x00\x00\x00\x00\xc9\x18\x00\x00\xad\x18\x00\x00\xc1\x18\x00\x00\xa9\x18\x00\x00\xb1\x18\x00\x00\x00D@\xee\x00\x00\x00\x00\xaa\x17\r \x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\x07\xa3\x00\x80\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05p\x01\x00\x0c0\xe0\xfe\x99A\x00\x00\x00\x00\x00\x00@\x00\x11\x10\x80\x01\x00J\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1f.2/resource1', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/resource2', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1f.2/subsystem_device', 0o644, b'0x200d\n') +f('sys/devices/pci0000:00/0000:00:1f.2/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1f.2/irq', 0o644, b'506\n') +f('sys/devices/pci0000:00/0000:00:1f.2/device', 0o644, b'0x27c5\n') +f('sys/devices/pci0000:00/0000:00:1f.2/class', 0o644, b'0x010601\n') +f('sys/devices/pci0000:00/0000:00:1f.2/resource5', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/resource0', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1f.2/uevent', 0o644, b'''DRIVER=ahci +PCI_CLASS=10601 +PCI_ID=8086:27C5 +PCI_SUBSYS_ID=17AA:200D +PCI_SLOT_NAME=0000:00:1f.2 +MODALIAS=pci:v00008086d000027C5sv000017AAsd0000200Dbc01sc06i01 +''') +f('sys/devices/pci0000:00/0000:00:1f.2/resource4', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/subsystem', '../../../../bus/scsi') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/uevent', 0o644, b'DEVTYPE=scsi_host\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/subsystem', '../../../../../bus/scsi') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/uevent', 0o644, b'DEVTYPE=scsi_target\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/generic', 'scsi_generic/sg0') +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/subsystem', '../../../../../../bus/scsi') +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/driver', '../../../../../../bus/scsi/drivers/sd') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/iodone_cnt', 0o644, b'0x6877\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/device_blocked', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/modalias', 0o644, b'scsi:t-0x00\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_level', 0o644, b'6\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/queue_depth', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev', 0o644, b'4.06\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/sw_activity', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/whitespace_test', 0o644, b'WHITE SPACE \n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/iocounterbits', 0o644, b'32\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/vendor', 0o644, b'ATA \n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/state', 0o644, b'running\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/queue_type', 0o644, b'none\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/iorequest_cnt', 0o644, b'0x6877\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/evt_media_change', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/model', 0o644, b'ST910021AS \n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/ioerr_cnt', 0o644, b'0x6\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/uevent', 0o644, b'''DEVTYPE=scsi_device +DRIVER=sd +MODALIAS=scsi:t-0x00 +''') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/timeout', 0o644, b'60\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/subsystem', '../../../../../../../../class/scsi_disk') +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device', '../../../0:0:0:0') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/app_tag_own', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/FUA', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/cache_type', 0o644, b'write back\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/protection_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/manage_start_stop', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/allow_restart', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_generic', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_generic/sg0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_generic/sg0/subsystem', '../../../../../../../../class/scsi_generic') +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_generic/sg0/device', '../../../0:0:0:0') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_generic/sg0/dev', 0o644, b'21:0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_generic/sg0/uevent', 0o644, b'''MAJOR=21 +MINOR=0 +''') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_generic/sg0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_generic/sg0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/bsg', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0/subsystem', '../../../../../../../../class/bsg') +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0/device', '../../../0:0:0:0') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0/dev', 0o644, b'254:0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0/uevent', 0o644, b'''MAJOR=254 +MINOR=0 +''') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/subsystem', '../../../../../../../../class/block') +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/bdi', '../../../../../../../virtual/bdi/8:0') +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/device', '../../../0:0:0:0') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/capability', 0o644, b'12\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/ro', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/test:colon+plus', 0o644, b'colon\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/size', 0o644, b'195371568\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/dev', 0o644, b'8:0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/range', 0o644, b'16\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/removable', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/stat', 0o644, b' 12939 5801 590192 194190 13755 63323 617056 2678026 0 114408 2872209\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/uevent', 0o644, b'''MAJOR=8 +MINOR=0 +DEVTYPE=disk +DEVNAME=sda +''') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/test_empty_file', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/bsg', '../../../bsg/0:0:0:0') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/nr_requests', 0o644, b'128\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/nomerges', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/scheduler', 0o644, b'noop anticipatory deadline [cfq] \n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/hw_sector_size', 0o644, b'512\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/max_hw_sectors_kb', 0o644, b'32767\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/read_ahead_kb', 0o644, b'128\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/max_sectors_kb', 0o644, b'512\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/iosched', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/iosched/slice_async_rq', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/iosched/back_seek_max', 0o644, b'16384\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/iosched/slice_sync', 0o644, b'100\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/iosched/slice_async', 0o644, b'40\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/iosched/fifo_expire_sync', 0o644, b'125\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/iosched/slice_idle', 0o644, b'8\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/iosched/back_seek_penalty', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/iosched/fifo_expire_async', 0o644, b'250\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/queue/iosched/quantum', 0o644, b'4\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/subsystem', '../../../../../../../../../class/block') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/start', 0o644, b'190820133\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/size', 0o644, b'4546332\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/dev', 0o644, b'8:10\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/stat', 0o644, b' 42 43 384 417 0 0 0 0 0 286 417\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/uevent', 0o644, b'''MAJOR=8 +MINOR=10 +DEVTYPE=partition +''') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/subsystem', '../../../../../../../../../class/block') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/start', 0o644, b'143942463\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/size', 0o644, b'46877607\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/dev', 0o644, b'8:9\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/stat', 0o644, b' 70 322 896 800 3 0 40 240 0 945 1039\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/uevent', 0o644, b'''MAJOR=8 +MINOR=9 +DEVTYPE=partition +''') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/holders', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/holders/md0', '../../../../../../../../../virtual/block/md0') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/subsystem', '../../../../../../../../../class/block') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/start', 0o644, b'104872383\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/size', 0o644, b'19534977\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/dev', 0o644, b'8:7\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/stat', 0o644, b' 35 263 298 419 0 0 0 0 0 298 419\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/uevent', 0o644, b'''MAJOR=8 +MINOR=7 +DEVTYPE=partition +''') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1/subsystem', '../../../../../../../../../class/block') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1/start', 0o644, b'63\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1/size', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1/dev', 0o644, b'8:1\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1/stat', 0o644, b' 2 0 4 36 0 0 0 0 0 36 36\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1/uevent', 0o644, b'''MAJOR=8 +MINOR=1 +DEVTYPE=partition +DEVNAME=sda1 +''') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/subsystem', '../../../../../../../../../class/block') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/start', 0o644, b'124407423\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/size', 0o644, b'19534977\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/dev', 0o644, b'8:8\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/stat', 0o644, b' 34 264 298 498 0 0 0 0 0 368 498\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/uevent', 0o644, b'''MAJOR=8 +MINOR=8 +DEVTYPE=partition +''') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5/subsystem', '../../../../../../../../../class/block') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5/start', 0o644, b'126\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5/size', 0o644, b'62926479\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5/dev', 0o644, b'8:5\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5/stat', 0o644, b' 11087 4819 566626 169007 2951 4548 59992 129572 0 65249 298573\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5/uevent', 0o644, b'''MAJOR=8 +MINOR=5 +DEVTYPE=partition +DEVNAME=sda5 +''') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/subsystem', '../../../../../../../../../class/block') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/start', 0o644, b'62926668\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/size', 0o644, b'41945652\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/dev', 0o644, b'8:6\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/stat', 0o644, b' 1648 67 21334 22824 10801 58775 557024 2548214 0 51231 2571037\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/uevent', 0o644, b'''MAJOR=8 +MINOR=6 +DEVTYPE=partition +''') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_device', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0/subsystem', '../../../../../../../../class/scsi_device') +l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0/device', '../../../0:0:0:0') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/subsystem', '../../../../../../class/scsi_host') +l('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/device', '../../../host0') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/unique_id', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/can_queue', 0o644, b'31\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/unchecked_isa_dma', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/active_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/sg_tablesize', 0o644, b'168\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/prot_guard_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/link_power_management_policy', 0o644, b'medium_power\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/host_busy', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/proc_name', 0o644, b'ahci\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/state', 0o644, b'running\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/cmd_per_lun', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/em_message', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/em_message_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/supported_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/uevent', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/prot_capabilities', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host0/scsi_host/host0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host1', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host1/subsystem', '../../../../bus/scsi') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/uevent', 0o644, b'DEVTYPE=scsi_host\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host1/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/subsystem', '../../../../../../class/scsi_host') +l('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/device', '../../../host1') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/unique_id', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/can_queue', 0o644, b'31\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/unchecked_isa_dma', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/active_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/sg_tablesize', 0o644, b'168\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/prot_guard_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/link_power_management_policy', 0o644, b'max_performance\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/host_busy', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/proc_name', 0o644, b'ahci\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/state', 0o644, b'running\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/cmd_per_lun', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/em_message', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/em_message_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/supported_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/uevent', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/prot_capabilities', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host1/scsi_host/host1/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host2', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host2/subsystem', '../../../../bus/scsi') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/uevent', 0o644, b'DEVTYPE=scsi_host\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host2/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/subsystem', '../../../../../../class/scsi_host') +l('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/device', '../../../host2') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/unique_id', 0o644, b'3\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/can_queue', 0o644, b'31\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/unchecked_isa_dma', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/active_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/sg_tablesize', 0o644, b'168\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/prot_guard_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/link_power_management_policy', 0o644, b'max_performance\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/host_busy', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/proc_name', 0o644, b'ahci\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/state', 0o644, b'running\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/cmd_per_lun', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/em_message', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/em_message_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/supported_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/uevent', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/prot_capabilities', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host2/scsi_host/host2/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host3', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host3/subsystem', '../../../../bus/scsi') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/uevent', 0o644, b'DEVTYPE=scsi_host\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host3/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host3/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/subsystem', '../../../../../../class/scsi_host') +l('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/device', '../../../host3') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/unique_id', 0o644, b'4\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/can_queue', 0o644, b'31\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/unchecked_isa_dma', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/active_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/sg_tablesize', 0o644, b'168\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/prot_guard_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/link_power_management_policy', 0o644, b'max_performance\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/host_busy', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/proc_name', 0o644, b'ahci\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/state', 0o644, b'running\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/cmd_per_lun', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/em_message', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/em_message_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/supported_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/uevent', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/prot_capabilities', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.2/host3/scsi_host/host3/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:1d') +l('sys/devices/pci0000:00/0000:00:1d.2/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1d.2/driver', '../../../bus/pci/drivers/uhci_hcd') +f('sys/devices/pci0000:00/0000:00:1d.2/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1d.2/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/modalias', 0o644, b'pci:v00008086d000027CAsv000017AAsd0000200Abc0Csc03i00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000001840 0x000000000000185f 0x0000000000020101 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/config', 0o644, b"\x86\x80\xca'\x05\x00\x80\x02\x02\x00\x03\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00A\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\n \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1d.2/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1d.2/subsystem_device', 0o644, b'0x200a\n') +f('sys/devices/pci0000:00/0000:00:1d.2/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1d.2/irq', 0o644, b'18\n') +f('sys/devices/pci0000:00/0000:00:1d.2/pools', 0o644, b'''poolinfo - 0.1 +uhci_qh 13 32 128 1 +uhci_td 4 64 64 1 +buffer-2048 0 0 2048 0 +buffer-512 0 0 512 0 +buffer-128 3 32 128 1 +buffer-32 2 128 32 1 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/device', 0o644, b'0x27ca\n') +f('sys/devices/pci0000:00/0000:00:1d.2/class', 0o644, b'0x0c0300\n') +f('sys/devices/pci0000:00/0000:00:1d.2/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.2/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1d.2/uevent', 0o644, b'''DRIVER=uhci_hcd +PCI_CLASS=C0300 +PCI_ID=8086:27CA +PCI_SUBSYS_ID=17AA:200A +PCI_SLOT_NAME=0000:00:1d.2 +MODALIAS=pci:v00008086d000027CAsv000017AAsd0000200Abc0Csc03i00 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/resource4', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.2/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1d.2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.2/usb_host/usb_host3', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb_host/usb_host3/subsystem', '../../../../../class/usb_host') +l('sys/devices/pci0000:00/0000:00:1d.2/usb_host/usb_host3/device', '../../../0000:00:1d.2') +f('sys/devices/pci0000:00/0000:00:1d.2/usb_host/usb_host3/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1d.2/usb_host/usb_host3/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb_host/usb_host3/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/subsystem', '../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/driver', '../../../../bus/usb/drivers/usb') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/ep_00', 'usb_endpoint/usbdev3.1_ep00') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/version', 0o644, b' 1.10\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/authorized_default', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/maxchild', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/bDeviceClass', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/bcdDevice', 0o644, b'0206\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/devnum', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/bDeviceProtocol', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/idProduct', 0o644, b'0001\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/product', 0o644, b'UHCI Host Controller\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/bDeviceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/configuration', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/dev', 0o644, b'189:256\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/urbnum', 0o644, b'68\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/authorized', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/descriptors', 0o644, b'\x12\x01\x10\x01\t\x00\x00@k\x1d\x01\x00\x06\x02\x03\x02\x01\x01\t\x02\x19\x00\x01\x01\x00\xe0\x00\t\x04\x00\x00\x01\t\x00\x00\x00\x07\x05\x81\x03\x02\x00\xff') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/bNumConfigurations', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/serial', 0o644, b'0000:00:1d.2\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/speed', 0o644, b'12\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/bMaxPacketSize0', 0o644, b'64\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/bmAttributes', 0o644, b'e0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/busnum', 0o644, b'3\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/quirks', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/bConfigurationValue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/uevent', 0o644, b'''MAJOR=189 +MINOR=256 +DEVTYPE=usb_device +DRIVER=usb +PRODUCT=1d6b/1/206 +TYPE=9/0/0 +BUSNUM=003 +DEVNUM=001 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/manufacturer', 0o644, b'Linux 2.6.27-rc7-00106-g6ef190c-dirty uhci_hcd\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/idVendor', 0o644, b'1d6b\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/bNumInterfaces', 0o644, b' 1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/bMaxPower', 0o644, b' 0mA\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/subsystem', '../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/device', '../../../usb3') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/bEndpointAddress', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/type', 0o644, b'Control\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/dev', 0o644, b'252:5\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/direction', 0o644, b'both\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/bmAttributes', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/uevent', 0o644, b'''MAJOR=252 +MINOR=5 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/usb_endpoint/usbdev3.1_ep00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/subsystem', '../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/ep_81', 'usb_endpoint/usbdev3.1_ep81') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/driver', '../../../../../bus/usb/drivers/hub') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/modalias', 0o644, b'usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/bInterfaceNumber', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/bNumEndpoints', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/bInterfaceClass', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/uevent', 0o644, b'''DEVTYPE=usb_interface +DRIVER=hub +PRODUCT=1d6b/1/206 +TYPE=9/0/0 +INTERFACE=9/0/0 +MODALIAS=usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/subsystem', '../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/device', '../../../3-0:1.0') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/interval', 0o644, b'255ms\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/bEndpointAddress', 0o644, b'81\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/type', 0o644, b'Interrupt\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/dev', 0o644, b'252:4\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/wMaxPacketSize', 0o644, b'0002\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/bmAttributes', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/uevent', 0o644, b'''MAJOR=252 +MINOR=4 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/bInterval', 0o644, b'ff\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/usb_endpoint/usbdev3.1_ep81/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-0:1.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/power/active_duration', 0o644, b'603809\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/power/wakeup', 0o644, b'enabled\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/power/connected_duration', 0o644, b'8372166\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/power/autosuspend', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/power/level', 0o644, b'auto\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/subsystem', '../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/driver', '../../../../../bus/usb/drivers/usb') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/ep_00', 'usb_endpoint/usbdev3.4_ep00') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/version', 0o644, b' 2.00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/maxchild', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/bDeviceClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/bcdDevice', 0o644, b'2000\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/devnum', 0o644, b'4\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/bDeviceProtocol', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/idProduct', 0o644, b'c03e\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/product', 0o644, b'USB-PS/2 Optical Mouse\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/bDeviceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/configuration', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/dev', 0o644, b'189:259\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/urbnum', 0o644, b'12\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/authorized', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/descriptors', 0o644, b'\x12\x01\x00\x02\x00\x00\x00\x08m\x04>\xc0\x00 \x01\x02\x00\x01\t\x02"\x00\x01\x01\x00\xa01\t\x04\x00\x00\x01\x03\x01\x02\x00\t!\x10\x01\x00\x01"2\x00\x07\x05\x81\x03\x04\x00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/bNumConfigurations', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/speed', 0o644, b'1.5\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/bMaxPacketSize0', 0o644, b'8\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/bmAttributes', 0o644, b'a0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/busnum', 0o644, b'3\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/quirks', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/bConfigurationValue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/uevent', 0o644, b'''MAJOR=189 +MINOR=259 +DEVTYPE=usb_device +DRIVER=usb +PRODUCT=46d/c03e/2000 +TYPE=0/0/0 +BUSNUM=003 +DEVNUM=004 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/manufacturer', 0o644, b'Logitech\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/idVendor', 0o644, b'046d\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/bNumInterfaces', 0o644, b' 1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/bMaxPower', 0o644, b' 98mA\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/subsystem', '../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/device', '../../../3-1') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/bEndpointAddress', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/type', 0o644, b'Control\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/dev', 0o644, b'252:26\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/direction', 0o644, b'both\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/wMaxPacketSize', 0o644, b'0008\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/bmAttributes', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/uevent', 0o644, b'''MAJOR=252 +MINOR=26 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/usb_endpoint/usbdev3.4_ep00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/power/active_duration', 0o644, b'51384\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/power/wakeup', 0o644, b'enabled\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/power/connected_duration', 0o644, b'51383\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/power/autosuspend', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/power/persist', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/power/level', 0o644, b'on\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/subsystem', '../../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/ep_81', 'usb_endpoint/usbdev3.4_ep81') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/driver', '../../../../../../bus/usb/drivers/usbhid') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/modalias', 0o644, b'usb:v046DpC03Ed2000dc00dsc00dp00ic03isc01ip02\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/bInterfaceNumber', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/bNumEndpoints', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/bInterfaceSubClass', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/bInterfaceClass', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/uevent', 0o644, b'''DEVTYPE=usb_interface +DRIVER=usbhid +PRODUCT=46d/c03e/2000 +TYPE=0/0/0 +INTERFACE=3/1/2 +MODALIAS=usb:v046DpC03Ed2000dc00dsc00dp00ic03isc01ip02 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/bInterfaceProtocol', 0o644, b'02\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/subsystem', '../../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/device', '../../../3-1:1.0') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/interval', 0o644, b'10ms\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/bEndpointAddress', 0o644, b'81\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/type', 0o644, b'Interrupt\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/dev', 0o644, b'252:25\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/wMaxPacketSize', 0o644, b'0004\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/bmAttributes', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/uevent', 0o644, b'''MAJOR=252 +MINOR=25 +''') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/bInterval', 0o644, b'0a\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/usb_endpoint/usbdev3.4_ep81/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/subsystem', '../../../../../../../../class/input') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/device', '../../../3-1:1.0') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/uniq', 0o644, b'\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/phys', 0o644, b'usb-0000:00:1d.2-1/input0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/modalias', 0o644, b'input:b0003v046DpC03Ee0110-e0,1,2,4,k110,111,112,r0,1,8,am4,lsfw\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/name', 0o644, b'Logitech USB-PS/2 Optical Mouse\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/uevent', 0o644, b'''PRODUCT=3/46d/c03e/110 +NAME="Logitech USB-PS/2 Optical Mouse" +PHYS="usb-0000:00:1d.2-1/input0" +UNIQ="" +EV==17 +KEY==70000 0 0 0 0 +REL==103 +MSC==10 +MODALIAS=input:b0003v046DpC03Ee0110-e0,1,2,4,k110,111,112,r0,1,8,am4,lsfw +''') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/mouse1', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/mouse1/subsystem', '../../../../../../../../../class/input') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/mouse1/device', '../../input8') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/mouse1/dev', 0o644, b'13:33\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/mouse1/uevent', 0o644, b'''MAJOR=13 +MINOR=33 +''') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/mouse1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/mouse1/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/id', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/id/version', 0o644, b'0110\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/id/product', 0o644, b'c03e\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/id/vendor', 0o644, b'046d\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/id/bustype', 0o644, b'0003\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/event7', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/event7/subsystem', '../../../../../../../../../class/input') +l('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/event7/device', '../../input8') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/event7/dev', 0o644, b'13:71\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/event7/uevent', 0o644, b'''MAJOR=13 +MINOR=71 +''') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/event7/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/event7/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/capabilities', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/capabilities/msc', 0o644, b'10\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/capabilities/abs', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/capabilities/snd', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/capabilities/ff', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/capabilities/key', 0o644, b'70000 0 0 0 0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/capabilities/rel', 0o644, b'103\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/capabilities/sw', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/capabilities/ev', 0o644, b'17\n') +f('sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input8/capabilities/led', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:01.0', 0o755) +l('sys/devices/pci0000:00/0000:00:01.0/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:06') +l('sys/devices/pci0000:00/0000:00:01.0/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:01.0/driver', '../../../bus/pci/drivers/pcieport-driver') +f('sys/devices/pci0000:00/0000:00:01.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:01.0/enable', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:01.0/modalias', 0o644, b'pci:v00008086d000027A1sv00000000sd00000000bc06sc04i00\n') +f('sys/devices/pci0000:00/0000:00:01.0/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000002000 0x0000000000002fff 0x0000000000000100 +0x00000000ee100000 0x00000000ee1fffff 0x0000000000000200 +0x00000000d0000000 0x00000000dfffffff 0x0000000000001201 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:01.0/config', 0o644, b'\x86\x80\xa1\'\x07\x05\x10\x00\x03\x00\x04\x06\x10\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00 \x00\x00\x10\xee\x10\xee\x01\xd0\xf1\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x90\x02\xc8\x00\x00\x00\x00\r\x80\x00\x00\xaa\x17\x14 \x05\xa0\x01\x00\x0c0\xe0\xfeqA\x00\x00\x00\x00\x00\x00\x10\x00A\x01\x00\x00\x00\x00\x00\x00\x01\x00\x01M\x01\x02\x03\x00\x01\x11\x80%\x08\x00\xc0\x01H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x0f\x00\x00\x00\x00\x86\x0f\x05\x00\x00\x00\x00\x80\x02\x00\x01\x14\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x80\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x01\x00\x00\x01\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x90\xd1\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x06\x00\x01\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00n\x7f \x08\xf4\x0c\x00\x00\xb04 \x00\x00\x00\x00\x003\x0f\x00\x00\xff\xff\x03\x00\xd0\x0f\xf1\x05\xd1\x0f\xd1\x0f\x08\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\r/B\x00\x0c\x00\x00\x14\xb5\xbcJ\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x003\x0b\xe0\x00Q\x0b\xfe\x00 \x00\x08\x00\x85\x03\xf1\x00\x87\x03\xf3\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x14\x08\x88\x00\x00\x00\x00\x00\x00\x00\x00"wD\xb23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x06`\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x06b\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\n\x06`\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\r\x06b\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x06`\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x06b\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x003\x06`\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x004\x06b\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x06`\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x002\x06b\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x004\x06`\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x002\x06b\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00;\x06`\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x003\x06b\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x009\x06`\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00:\x06b\x00 \x00\x00`\x02\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x007') +f('sys/devices/pci0000:00/0000:00:01.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:01.0/subsystem_device', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:01.0/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:01.0/irq', 0o644, b'511\n') +f('sys/devices/pci0000:00/0000:00:01.0/device', 0o644, b'0x27a1\n') +f('sys/devices/pci0000:00/0000:00:01.0/class', 0o644, b'0x060400\n') +f('sys/devices/pci0000:00/0000:00:01.0/msi_bus', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:01.0/subsystem_vendor', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:01.0/uevent', 0o644, b'''DRIVER=pcieport-driver +PCI_CLASS=60400 +PCI_ID=8086:27A1 +PCI_SUBSYS_ID=0000:0000 +PCI_SLOT_NAME=0000:00:01.0 +MODALIAS=pci:v00008086d000027A1sv00000000sd00000000bc06sc04i00 +''') +f('sys/devices/pci0000:00/0000:00:01.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:01.0/pci_bus', 0o755) +d('sys/devices/pci0000:00/0000:00:01.0/pci_bus/0000:01', 0o755) +l('sys/devices/pci0000:00/0000:00:01.0/pci_bus/0000:01/subsystem', '../../../../../class/pci_bus') +l('sys/devices/pci0000:00/0000:00:01.0/pci_bus/0000:01/device', '../../../0000:00:01.0') +f('sys/devices/pci0000:00/0000:00:01.0/pci_bus/0000:01/cpuaffinity', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:01.0/pci_bus/0000:01/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:01.0/pci_bus/0000:01/power', 0o755) +f('sys/devices/pci0000:00/0000:00:01.0/pci_bus/0000:01/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:01.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:01.0/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie03', 0o755) +l('sys/devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie03/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie03/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie03/power', 0o755) +f('sys/devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie03/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0', 0o755) +l('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/firmware_node', '../../../LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07') +l('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/subsystem', '../../../../bus/pci') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/enable', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/modalias', 0o644, b'pci:v00001002d000071D4sv000017AAsd000020A4bc03sc00i00\n') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/resource', 0o644, b'''0x00000000d0000000 0x00000000dfffffff 0x0000000000021208 +0x0000000000002000 0x00000000000020ff 0x0000000000020101 +0x00000000ee100000 0x00000000ee10ffff 0x0000000000020200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x00000000ee120000 0x00000000ee13ffff 0x0000000000027202 +''') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/config', 0o644, b'\x02\x10\xd4q\x07\x01\x10\x00\x00\x00\x00\x03\x10\x00\x00\x00\x08\x00\x00\xd0\x01 \x00\x00\x00\x00\x10\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\xa4 \x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\xa4 \x01X\x02\x06\x00\x00\x00\x00\x10\x80\x11\x00\xa0\x0f,\x01\x10\x08\x00\x00\x01\r\x00\x00C\x00\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11 \x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00@\x03\x00\x00\x00$\x8f\x0b\x00\xff\xff\x07e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/resource1', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/resource2', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/subsystem_device', 0o644, b'0x20a4\n') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/vendor', 0o644, b'0x1002\n') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/irq', 0o644, b'11\n') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/device', 0o644, b'0x71d4\n') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/class', 0o644, b'0x030000\n') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/resource0', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/uevent', 0o644, b'''PCI_CLASS=30000 +PCI_ID=1002:71D4 +PCI_SUBSYS_ID=17AA:20A4 +PCI_SLOT_NAME=0000:01:00.0 +MODALIAS=pci:v00001002d000071D4sv000017AAsd000020A4bc03sc00i00 +''') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/resource0_wc', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie00', 0o755) +l('sys/devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie00/subsystem', '../../../../bus/pci_express') +f('sys/devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie00/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:01.0/0000:00:01.0:pcie00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:13') +l('sys/devices/pci0000:00/0000:00:1f.1/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1f.1/driver', '../../../bus/pci/drivers/ata_piix') +f('sys/devices/pci0000:00/0000:00:1f.1/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1f.1/resource3', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.1/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.1/modalias', 0o644, b'pci:v00008086d000027DFsv000017AAsd0000200Cbc01sc01i8a\n') +f('sys/devices/pci0000:00/0000:00:1f.1/resource', 0o644, b'''0x00000000000001f0 0x00000000000001f7 0x0000000000000110 +0x00000000000003f6 0x00000000000003f6 0x0000000000000110 +0x0000000000000170 0x0000000000000177 0x0000000000000110 +0x0000000000000376 0x0000000000000376 0x0000000000000110 +0x0000000000001880 0x000000000000188f 0x0000000000020101 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1f.1/config', 0o644, b"\x86\x80\xdf'\x05\x00\x80\x02\x02\x8a\x01\x01\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x81\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\x0c \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x03\xe3\x00@\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1f.1/resource1', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.1/resource2', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.1/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1f.1/subsystem_device', 0o644, b'0x200c\n') +f('sys/devices/pci0000:00/0000:00:1f.1/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1f.1/irq', 0o644, b'16\n') +f('sys/devices/pci0000:00/0000:00:1f.1/device', 0o644, b'0x27df\n') +f('sys/devices/pci0000:00/0000:00:1f.1/class', 0o644, b'0x01018a\n') +f('sys/devices/pci0000:00/0000:00:1f.1/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.1/resource0', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.1/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1f.1/uevent', 0o644, b'''DRIVER=ata_piix +PCI_CLASS=1018A +PCI_ID=8086:27DF +PCI_SUBSYS_ID=17AA:200C +PCI_SLOT_NAME=0000:00:1f.1 +MODALIAS=pci:v00008086d000027DFsv000017AAsd0000200Cbc01sc01i8a +''') +f('sys/devices/pci0000:00/0000:00:1f.1/resource4', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.1/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host5', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/host5/subsystem', '../../../../bus/scsi') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/uevent', 0o644, b'DEVTYPE=scsi_host\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host5/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host5/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/subsystem', '../../../../../../class/scsi_host') +l('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/device', '../../../host5') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/unique_id', 0o644, b'6\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/can_queue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/unchecked_isa_dma', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/active_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/sg_tablesize', 0o644, b'128\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/prot_guard_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/host_busy', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/proc_name', 0o644, b'ata_piix\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/state', 0o644, b'running\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/cmd_per_lun', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/supported_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/uevent', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/prot_capabilities', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host5/scsi_host/host5/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/host4/subsystem', '../../../../bus/scsi') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/uevent', 0o644, b'DEVTYPE=scsi_host\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/subsystem', '../../../../../bus/scsi') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/uevent', 0o644, b'DEVTYPE=scsi_target\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/generic', 'scsi_generic/sg1') +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/subsystem', '../../../../../../bus/scsi') +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/driver', '../../../../../../bus/scsi/drivers/sr') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/iodone_cnt', 0o644, b'0x20b3\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/device_blocked', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/modalias', 0o644, b'scsi:t-0x05\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_level', 0o644, b'6\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/queue_depth', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/rev', 0o644, b'RB01\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/type', 0o644, b'5\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/iocounterbits', 0o644, b'32\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/vendor', 0o644, b'MATSHITA\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/state', 0o644, b'running\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/queue_type', 0o644, b'none\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/iorequest_cnt', 0o644, b'0x82a9\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/evt_media_change', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/model', 0o644, b'DVD-RAM UJ-842 \n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/ioerr_cnt', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/uevent', 0o644, b'''DEVTYPE=scsi_device +DRIVER=sr +MODALIAS=scsi:t-0x05 +''') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/timeout', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_generic', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_generic/sg1', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_generic/sg1/subsystem', '../../../../../../../../class/scsi_generic') +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_generic/sg1/device', '../../../4:0:0:0') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_generic/sg1/dev', 0o644, b'21:1\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_generic/sg1/uevent', 0o644, b'''MAJOR=21 +MINOR=1 +''') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_generic/sg1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_generic/sg1/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/bsg', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0/subsystem', '../../../../../../../../class/bsg') +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0/device', '../../../4:0:0:0') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0/dev', 0o644, b'254:1\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0/uevent', 0o644, b'''MAJOR=254 +MINOR=1 +''') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/subsystem', '../../../../../../../../class/block') +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/bdi', '../../../../../../../virtual/bdi/11:0') +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/device', '../../../4:0:0:0') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/capability', 0o644, b'19\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/ro', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/make-it-fail', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/size', 0o644, b'2097151\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/dev', 0o644, b'11:0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/range', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/removable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/stat', 0o644, b' 0 0 0 0 0 0 0 0 0 0 0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/uevent', 0o644, b'''MAJOR=11 +MINOR=0 +DEVTYPE=disk +''') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/nr_requests', 0o644, b'128\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/nomerges', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/scheduler', 0o644, b'noop anticipatory deadline [cfq] \n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/hw_sector_size', 0o644, b'512\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/max_hw_sectors_kb', 0o644, b'128\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/read_ahead_kb', 0o644, b'128\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/max_sectors_kb', 0o644, b'128\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/iosched', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/iosched/slice_async_rq', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/iosched/back_seek_max', 0o644, b'16384\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/iosched/slice_sync', 0o644, b'100\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/iosched/slice_async', 0o644, b'40\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/iosched/fifo_expire_sync', 0o644, b'125\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/iosched/slice_idle', 0o644, b'8\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/iosched/back_seek_penalty', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/iosched/fifo_expire_async', 0o644, b'250\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/queue/iosched/quantum', 0o644, b'4\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/block/sr0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_device', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0/subsystem', '../../../../../../../../class/scsi_device') +l('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0/device', '../../../4:0:0:0') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host4/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4', 0o755) +l('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/subsystem', '../../../../../../class/scsi_host') +l('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/device', '../../../host4') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/unique_id', 0o644, b'5\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/can_queue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/unchecked_isa_dma', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/active_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/sg_tablesize', 0o644, b'128\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/prot_guard_type', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/host_busy', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/proc_name', 0o644, b'ata_piix\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/state', 0o644, b'running\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/cmd_per_lun', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/supported_mode', 0o644, b'Initiator\n') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/uevent', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/prot_capabilities', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1f.1/host4/scsi_host/host4/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1e.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1e.0/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:11') +l('sys/devices/pci0000:00/0000:00:1e.0/subsystem', '../../../bus/pci') +f('sys/devices/pci0000:00/0000:00:1e.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1e.0/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1e.0/modalias', 0o644, b'pci:v00008086d00002448sv00000000sd00000000bc06sc04i01\n') +f('sys/devices/pci0000:00/0000:00:1e.0/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x000000000000a000 0x000000000000dfff 0x0000000000000100 +0x00000000e4300000 0x00000000e7ffffff 0x0000000000000200 +0x00000000e0000000 0x00000000e3ffffff 0x0000000000001201 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1e.0/config', 0o644, b'\x86\x80H$\x07\x00\x10\x00\xe2\x01\x04\x06\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x18 \xa0\xd0\x80"0\xe4\xf0\xe7\x01\xe0\xf1\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\r\x00\x00\x00\xaa\x17\x13 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00') +f('sys/devices/pci0000:00/0000:00:1e.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1e.0/subsystem_device', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:1e.0/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1e.0/irq', 0o644, b'0\n') +f('sys/devices/pci0000:00/0000:00:1e.0/device', 0o644, b'0x2448\n') +f('sys/devices/pci0000:00/0000:00:1e.0/class', 0o644, b'0x060401\n') +f('sys/devices/pci0000:00/0000:00:1e.0/msi_bus', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1e.0/subsystem_vendor', 0o644, b'0x0000\n') +f('sys/devices/pci0000:00/0000:00:1e.0/uevent', 0o644, b'''PCI_CLASS=60401 +PCI_ID=8086:2448 +PCI_SUBSYS_ID=0000:0000 +PCI_SLOT_NAME=0000:00:1e.0 +MODALIAS=pci:v00008086d00002448sv00000000sd00000000bc06sc04i01 +''') +f('sys/devices/pci0000:00/0000:00:1e.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1e.0/pci_bus', 0o755) +d('sys/devices/pci0000:00/0000:00:1e.0/pci_bus/0000:15', 0o755) +l('sys/devices/pci0000:00/0000:00:1e.0/pci_bus/0000:15/subsystem', '../../../../../class/pci_bus') +l('sys/devices/pci0000:00/0000:00:1e.0/pci_bus/0000:15/device', '../../../0000:00:1e.0') +f('sys/devices/pci0000:00/0000:00:1e.0/pci_bus/0000:15/cpuaffinity', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1e.0/pci_bus/0000:15/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1e.0/pci_bus/0000:15/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1e.0/pci_bus/0000:15/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1e.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1e.0/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/firmware_node', '../../../LNXSYSTM:00/device:00/PNP0A08:00/device:11/device:12') +l('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/subsystem', '../../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/driver', '../../../../bus/pci/drivers/yenta_cardbus') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/enable', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/modalias', 0o644, b'pci:v0000104Cd0000AC56sv000017AAsd00002012bc06sc07i00\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/resource', 0o644, b'''0x00000000e4300000 0x00000000e4300fff 0x0000000000020200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x000000000000a000 0x000000000000a0ff 0x0000000000020100 +0x000000000000a400 0x000000000000a4ff 0x0000000000020100 +0x00000000e0000000 0x00000000e3ffffff 0x0000000000021200 +0x0000000088000000 0x000000008bffffff 0x0000000000020200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/config', 0o644, b'L\x10V\xac\x07\x00\x10\x02\x00\x00\x07\x06\x10\xa8\x02\x00\x00\x000\xe4\xa0\x00\x00\x02\x15\x16\x17\xb0\x00\x00\x00\xe0\x00\xf0\xff\xe3\x00\x00\x00\x88\x00\xf0\xff\x8b\x00\xa0\x00\x00\xfc\xa0\x00\x00\x00\xa4\x00\x00\xfc\xa4\x00\x00\x0b\x01\xc0\x05\xaa\x17\x12 \x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00p\xd0D\x08\x00\x00\x00\x00\x00\x00\x00\x00\x02\x10\xd0\x01\xc0\x02d@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x12\xfe\x00\x00\xc0\x00\x07\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/yenta_registers', 0o644, b'''CB registers: +00: 00000000 00000006 30000087 00000000 +10: 00000400 00000000 00000000 00000000 +20: 00000000 + +ExCA registers: +00: 84 01 00 50 00 08 00 00 - 00 00 01 00 00 00 01 00 +10: 00 00 00 00 00 00 c0 00 - 00 00 00 00 00 00 00 00 +20: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 +30: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 +40: 00 00 00 00 00 +''') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/subsystem_device', 0o644, b'0x2012\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/vendor', 0o644, b'0x104c\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/irq', 0o644, b'16\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/device', 0o644, b'0xac56\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/class', 0o644, b'0x060700\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/msi_bus', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/resource0', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/uevent', 0o644, b'''DRIVER=yenta_cardbus +PCI_CLASS=60700 +PCI_ID=104C:AC56 +PCI_SUBSYS_ID=17AA:2012 +PCI_SLOT_NAME=0000:15:00.0 +MODALIAS=pci:v0000104Cd0000AC56sv000017AAsd00002012bc06sc07i00 +''') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pci_bus', 0o755) +d('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pci_bus/0000:16', 0o755) +l('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pci_bus/0000:16/subsystem', '../../../../../../class/pci_bus') +l('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pci_bus/0000:16/device', '../../../0000:15:00.0') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pci_bus/0000:16/cpuaffinity', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pci_bus/0000:16/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pci_bus/0000:16/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pci_bus/0000:16/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket', 0o755) +d('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0', 0o755) +l('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/subsystem', '../../../../../../class/pcmcia_socket') +l('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/device', '../../../0000:15:00.0') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/card_vpp', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/available_resources_mem', 0o644, b'''0x000c0000 - 0x000fffff +0x60000000 - 0x60ffffff +0xa0000000 - 0xa0ffffff +0xe0000000 - 0xe3ffffff +0xe4300000 - 0xe7ffffff +''') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/available_resources_io', 0o644, b'''0x00000100 - 0x000003af +0x000003e0 - 0x000004ff +0x00000820 - 0x000008ff +0x00000a00 - 0x00000aff +0x00000c00 - 0x00000cf7 +0x0000a000 - 0x0000dfff +''') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/card_voltage', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/cis', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/available_resources_setup_done', 0o644, b'yes\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/card_irq_mask', 0o644, b'0x0cf8\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/card_pm_state', 0o644, b'on\n') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/card_vcc', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/card_type', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/uevent', 0o644, b'SOCKET_NO=0\n') +d('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/pcmcia_socket/pcmcia_socket0/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.1', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.1/firmware_node', '../../LNXSYSTM:00/device:00/PNP0A08:00/device:1a') +l('sys/devices/pci0000:00/0000:00:1d.1/subsystem', '../../../bus/pci') +l('sys/devices/pci0000:00/0000:00:1d.1/driver', '../../../bus/pci/drivers/uhci_hcd') +f('sys/devices/pci0000:00/0000:00:1d.1/local_cpulist', 0o644, b'0-7\n') +f('sys/devices/pci0000:00/0000:00:1d.1/enable', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.1/modalias', 0o644, b'pci:v00008086d000027C9sv000017AAsd0000200Abc0Csc03i00\n') +f('sys/devices/pci0000:00/0000:00:1d.1/resource', 0o644, b'''0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000001820 0x000000000000183f 0x0000000000020101 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +''') +f('sys/devices/pci0000:00/0000:00:1d.1/config', 0o644, b"\x86\x80\xc9'\x05\x00\x80\x02\x02\x00\x03\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00!\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x17\n \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x0f\x02\x00\x00\x00\x00\x00") +f('sys/devices/pci0000:00/0000:00:1d.1/local_cpus', 0o644, b'ff\n') +f('sys/devices/pci0000:00/0000:00:1d.1/subsystem_device', 0o644, b'0x200a\n') +f('sys/devices/pci0000:00/0000:00:1d.1/vendor', 0o644, b'0x8086\n') +f('sys/devices/pci0000:00/0000:00:1d.1/irq', 0o644, b'17\n') +f('sys/devices/pci0000:00/0000:00:1d.1/pools', 0o644, b'''poolinfo - 0.1 +uhci_qh 11 32 128 1 +uhci_td 1 64 64 1 +buffer-2048 0 0 2048 0 +buffer-512 0 0 512 0 +buffer-128 0 0 128 0 +buffer-32 1 128 32 1 +''') +f('sys/devices/pci0000:00/0000:00:1d.1/device', 0o644, b'0x27c9\n') +f('sys/devices/pci0000:00/0000:00:1d.1/class', 0o644, b'0x0c0300\n') +f('sys/devices/pci0000:00/0000:00:1d.1/msi_bus', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.1/subsystem_vendor', 0o644, b'0x17aa\n') +f('sys/devices/pci0000:00/0000:00:1d.1/uevent', 0o644, b'''DRIVER=uhci_hcd +PCI_CLASS=C0300 +PCI_ID=8086:27C9 +PCI_SUBSYS_ID=17AA:200A +PCI_SLOT_NAME=0000:00:1d.1 +MODALIAS=pci:v00008086d000027C9sv000017AAsd0000200Abc0Csc03i00 +''') +f('sys/devices/pci0000:00/0000:00:1d.1/resource4', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.1/broken_parity_status', 0o644, b'0\n') +d('sys/devices/pci0000:00/0000:00:1d.1/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.1/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/pci0000:00/0000:00:1d.1/usb_host', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.1/usb_host/usb_host2', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.1/usb_host/usb_host2/subsystem', '../../../../../class/usb_host') +l('sys/devices/pci0000:00/0000:00:1d.1/usb_host/usb_host2/device', '../../../0000:00:1d.1') +f('sys/devices/pci0000:00/0000:00:1d.1/usb_host/usb_host2/uevent', 0o644, b'') +d('sys/devices/pci0000:00/0000:00:1d.1/usb_host/usb_host2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.1/usb_host/usb_host2/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.1/usb2', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.1/usb2/subsystem', '../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.1/usb2/driver', '../../../../bus/usb/drivers/usb') +l('sys/devices/pci0000:00/0000:00:1d.1/usb2/ep_00', 'usb_endpoint/usbdev2.1_ep00') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/version', 0o644, b' 1.10\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/authorized_default', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/maxchild', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/bDeviceClass', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/bcdDevice', 0o644, b'0206\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/devnum', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/bDeviceProtocol', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/idProduct', 0o644, b'0001\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/product', 0o644, b'UHCI Host Controller\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/bDeviceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/configuration', 0o644, b'') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/dev', 0o644, b'189:128\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/urbnum', 0o644, b'16\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/authorized', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/descriptors', 0o644, b'\x12\x01\x10\x01\t\x00\x00@k\x1d\x01\x00\x06\x02\x03\x02\x01\x01\t\x02\x19\x00\x01\x01\x00\xe0\x00\t\x04\x00\x00\x01\t\x00\x00\x00\x07\x05\x81\x03\x02\x00\xff') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/bNumConfigurations', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/serial', 0o644, b'0000:00:1d.1\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/speed', 0o644, b'12\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/bMaxPacketSize0', 0o644, b'64\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/bmAttributes', 0o644, b'e0\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/busnum', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/quirks', 0o644, b'0x0\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/bConfigurationValue', 0o644, b'1\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/uevent', 0o644, b'''MAJOR=189 +MINOR=128 +DEVTYPE=usb_device +DRIVER=usb +PRODUCT=1d6b/1/206 +TYPE=9/0/0 +BUSNUM=002 +DEVNUM=001 +''') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/manufacturer', 0o644, b'Linux 2.6.27-rc7-00106-g6ef190c-dirty uhci_hcd\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/idVendor', 0o644, b'1d6b\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/bNumInterfaces', 0o644, b' 1\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/bMaxPower', 0o644, b' 0mA\n') +d('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/subsystem', '../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/device', '../../../usb2') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/interval', 0o644, b'0ms\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/bEndpointAddress', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/type', 0o644, b'Control\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/dev', 0o644, b'252:3\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/direction', 0o644, b'both\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/wMaxPacketSize', 0o644, b'0040\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/bmAttributes', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/uevent', 0o644, b'''MAJOR=252 +MINOR=3 +''') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/bInterval', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/usb_endpoint/usbdev2.1_ep00/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.1/usb2/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/power/active_duration', 0o644, b'2363\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/power/wakeup', 0o644, b'enabled\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/power/connected_duration', 0o644, b'8372254\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/power/autosuspend', 0o644, b'2\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/power/level', 0o644, b'auto\n') +d('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/subsystem', '../../../../../bus/usb') +l('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/ep_81', 'usb_endpoint/usbdev2.1_ep81') +l('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/driver', '../../../../../bus/usb/drivers/hub') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/modalias', 0o644, b'usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/bInterfaceNumber', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/bNumEndpoints', 0o644, b'01\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/bInterfaceSubClass', 0o644, b'00\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/bAlternateSetting', 0o644, b' 0\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/bInterfaceClass', 0o644, b'09\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/uevent', 0o644, b'''DEVTYPE=usb_interface +DRIVER=hub +PRODUCT=1d6b/1/206 +TYPE=9/0/0 +INTERFACE=9/0/0 +MODALIAS=usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00 +''') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/bInterfaceProtocol', 0o644, b'00\n') +d('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint', 0o755) +d('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81', 0o755) +l('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/subsystem', '../../../../../../../class/usb_endpoint') +l('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/device', '../../../2-0:1.0') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/interval', 0o644, b'255ms\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/bEndpointAddress', 0o644, b'81\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/type', 0o644, b'Interrupt\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/dev', 0o644, b'252:2\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/direction', 0o644, b'in\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/bLength', 0o644, b'07\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/wMaxPacketSize', 0o644, b'0002\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/bmAttributes', 0o644, b'03\n') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/uevent', 0o644, b'''MAJOR=252 +MINOR=2 +''') +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/bInterval', 0o644, b'ff\n') +d('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/usb_endpoint/usbdev2.1_ep81/power/wakeup', 0o644, b'\n') +d('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/power', 0o755) +f('sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual', 0o755) +d('sys/devices/virtual/vc', 0o755) +d('sys/devices/virtual/vc/vcsa3', 0o755) +l('sys/devices/virtual/vc/vcsa3/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcsa3/dev', 0o644, b'7:131\n') +f('sys/devices/virtual/vc/vcsa3/uevent', 0o644, b'''MAJOR=7 +MINOR=131 +''') +d('sys/devices/virtual/vc/vcsa3/power', 0o755) +f('sys/devices/virtual/vc/vcsa3/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcsa6', 0o755) +l('sys/devices/virtual/vc/vcsa6/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcsa6/dev', 0o644, b'7:134\n') +f('sys/devices/virtual/vc/vcsa6/uevent', 0o644, b'''MAJOR=7 +MINOR=134 +''') +d('sys/devices/virtual/vc/vcsa6/power', 0o755) +f('sys/devices/virtual/vc/vcsa6/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcsa2', 0o755) +l('sys/devices/virtual/vc/vcsa2/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcsa2/dev', 0o644, b'7:130\n') +f('sys/devices/virtual/vc/vcsa2/uevent', 0o644, b'''MAJOR=7 +MINOR=130 +''') +d('sys/devices/virtual/vc/vcsa2/power', 0o755) +f('sys/devices/virtual/vc/vcsa2/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcsa', 0o755) +l('sys/devices/virtual/vc/vcsa/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcsa/dev', 0o644, b'7:128\n') +f('sys/devices/virtual/vc/vcsa/uevent', 0o644, b'''MAJOR=7 +MINOR=128 +''') +d('sys/devices/virtual/vc/vcsa/power', 0o755) +f('sys/devices/virtual/vc/vcsa/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcs2', 0o755) +l('sys/devices/virtual/vc/vcs2/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcs2/dev', 0o644, b'7:2\n') +f('sys/devices/virtual/vc/vcs2/uevent', 0o644, b'''MAJOR=7 +MINOR=2 +''') +d('sys/devices/virtual/vc/vcs2/power', 0o755) +f('sys/devices/virtual/vc/vcs2/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcs7', 0o755) +l('sys/devices/virtual/vc/vcs7/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcs7/dev', 0o644, b'7:7\n') +f('sys/devices/virtual/vc/vcs7/uevent', 0o644, b'''MAJOR=7 +MINOR=7 +''') +d('sys/devices/virtual/vc/vcs7/power', 0o755) +f('sys/devices/virtual/vc/vcs7/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcsa5', 0o755) +l('sys/devices/virtual/vc/vcsa5/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcsa5/dev', 0o644, b'7:133\n') +f('sys/devices/virtual/vc/vcsa5/uevent', 0o644, b'''MAJOR=7 +MINOR=133 +''') +d('sys/devices/virtual/vc/vcsa5/power', 0o755) +f('sys/devices/virtual/vc/vcsa5/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcsa10', 0o755) +l('sys/devices/virtual/vc/vcsa10/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcsa10/dev', 0o644, b'7:138\n') +f('sys/devices/virtual/vc/vcsa10/uevent', 0o644, b'''MAJOR=7 +MINOR=138 +''') +d('sys/devices/virtual/vc/vcsa10/power', 0o755) +f('sys/devices/virtual/vc/vcsa10/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcs10', 0o755) +l('sys/devices/virtual/vc/vcs10/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcs10/dev', 0o644, b'7:10\n') +f('sys/devices/virtual/vc/vcs10/uevent', 0o644, b'''MAJOR=7 +MINOR=10 +''') +d('sys/devices/virtual/vc/vcs10/power', 0o755) +f('sys/devices/virtual/vc/vcs10/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcsa1', 0o755) +l('sys/devices/virtual/vc/vcsa1/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcsa1/dev', 0o644, b'7:129\n') +f('sys/devices/virtual/vc/vcsa1/uevent', 0o644, b'''MAJOR=7 +MINOR=129 +''') +d('sys/devices/virtual/vc/vcsa1/power', 0o755) +f('sys/devices/virtual/vc/vcsa1/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcsa4', 0o755) +l('sys/devices/virtual/vc/vcsa4/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcsa4/dev', 0o644, b'7:132\n') +f('sys/devices/virtual/vc/vcsa4/uevent', 0o644, b'''MAJOR=7 +MINOR=132 +''') +d('sys/devices/virtual/vc/vcsa4/power', 0o755) +f('sys/devices/virtual/vc/vcsa4/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcs', 0o755) +l('sys/devices/virtual/vc/vcs/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcs/dev', 0o644, b'7:0\n') +f('sys/devices/virtual/vc/vcs/uevent', 0o644, b'''MAJOR=7 +MINOR=0 +''') +d('sys/devices/virtual/vc/vcs/power', 0o755) +f('sys/devices/virtual/vc/vcs/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcs1', 0o755) +l('sys/devices/virtual/vc/vcs1/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcs1/dev', 0o644, b'7:1\n') +f('sys/devices/virtual/vc/vcs1/uevent', 0o644, b'''MAJOR=7 +MINOR=1 +''') +d('sys/devices/virtual/vc/vcs1/power', 0o755) +f('sys/devices/virtual/vc/vcs1/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcs4', 0o755) +l('sys/devices/virtual/vc/vcs4/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcs4/dev', 0o644, b'7:4\n') +f('sys/devices/virtual/vc/vcs4/uevent', 0o644, b'''MAJOR=7 +MINOR=4 +''') +d('sys/devices/virtual/vc/vcs4/power', 0o755) +f('sys/devices/virtual/vc/vcs4/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcsa7', 0o755) +l('sys/devices/virtual/vc/vcsa7/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcsa7/dev', 0o644, b'7:135\n') +f('sys/devices/virtual/vc/vcsa7/uevent', 0o644, b'''MAJOR=7 +MINOR=135 +''') +d('sys/devices/virtual/vc/vcsa7/power', 0o755) +f('sys/devices/virtual/vc/vcsa7/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcs6', 0o755) +l('sys/devices/virtual/vc/vcs6/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcs6/dev', 0o644, b'7:6\n') +f('sys/devices/virtual/vc/vcs6/uevent', 0o644, b'''MAJOR=7 +MINOR=6 +''') +d('sys/devices/virtual/vc/vcs6/power', 0o755) +f('sys/devices/virtual/vc/vcs6/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcs3', 0o755) +l('sys/devices/virtual/vc/vcs3/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcs3/dev', 0o644, b'7:3\n') +f('sys/devices/virtual/vc/vcs3/uevent', 0o644, b'''MAJOR=7 +MINOR=3 +''') +d('sys/devices/virtual/vc/vcs3/power', 0o755) +f('sys/devices/virtual/vc/vcs3/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vc/vcs5', 0o755) +l('sys/devices/virtual/vc/vcs5/subsystem', '../../../../class/vc') +f('sys/devices/virtual/vc/vcs5/dev', 0o644, b'7:5\n') +f('sys/devices/virtual/vc/vcs5/uevent', 0o644, b'''MAJOR=7 +MINOR=5 +''') +d('sys/devices/virtual/vc/vcs5/power', 0o755) +f('sys/devices/virtual/vc/vcs5/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/mem', 0o755) +d('sys/devices/virtual/mem/zero', 0o755) +l('sys/devices/virtual/mem/zero/subsystem', '../../../../class/mem') +f('sys/devices/virtual/mem/zero/dev', 0o644, b'1:5\n') +f('sys/devices/virtual/mem/zero/uevent', 0o644, b'''MAJOR=1 +MINOR=5 +''') +d('sys/devices/virtual/mem/zero/power', 0o755) +f('sys/devices/virtual/mem/zero/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/mem/kmsg', 0o755) +l('sys/devices/virtual/mem/kmsg/subsystem', '../../../../class/mem') +f('sys/devices/virtual/mem/kmsg/dev', 0o644, b'1:11\n') +f('sys/devices/virtual/mem/kmsg/uevent', 0o644, b'''MAJOR=1 +MINOR=11 +''') +d('sys/devices/virtual/mem/kmsg/power', 0o755) +f('sys/devices/virtual/mem/kmsg/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/mem/mem', 0o755) +l('sys/devices/virtual/mem/mem/subsystem', '../../../../class/mem') +f('sys/devices/virtual/mem/mem/dev', 0o644, b'1:1\n') +f('sys/devices/virtual/mem/mem/uevent', 0o644, b'''MAJOR=1 +MINOR=1 +''') +d('sys/devices/virtual/mem/mem/power', 0o755) +f('sys/devices/virtual/mem/mem/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/mem/urandom', 0o755) +l('sys/devices/virtual/mem/urandom/subsystem', '../../../../class/mem') +f('sys/devices/virtual/mem/urandom/dev', 0o644, b'1:9\n') +f('sys/devices/virtual/mem/urandom/uevent', 0o644, b'''MAJOR=1 +MINOR=9 +''') +d('sys/devices/virtual/mem/urandom/power', 0o755) +f('sys/devices/virtual/mem/urandom/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/mem/port', 0o755) +l('sys/devices/virtual/mem/port/subsystem', '../../../../class/mem') +f('sys/devices/virtual/mem/port/dev', 0o644, b'1:4\n') +f('sys/devices/virtual/mem/port/uevent', 0o644, b'''MAJOR=1 +MINOR=4 +''') +d('sys/devices/virtual/mem/port/power', 0o755) +f('sys/devices/virtual/mem/port/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/mem/null', 0o755) +l('sys/devices/virtual/mem/null/subsystem', '../../../../class/mem') +f('sys/devices/virtual/mem/null/dev', 0o644, b'1:3\n') +f('sys/devices/virtual/mem/null/uevent', 0o644, b'''MAJOR=1 +MINOR=3 +''') +d('sys/devices/virtual/mem/null/power', 0o755) +f('sys/devices/virtual/mem/null/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/mem/kmem', 0o755) +l('sys/devices/virtual/mem/kmem/subsystem', '../../../../class/mem') +f('sys/devices/virtual/mem/kmem/dev', 0o644, b'1:2\n') +f('sys/devices/virtual/mem/kmem/uevent', 0o644, b'''MAJOR=1 +MINOR=2 +''') +d('sys/devices/virtual/mem/kmem/power', 0o755) +f('sys/devices/virtual/mem/kmem/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/mem/full', 0o755) +l('sys/devices/virtual/mem/full/subsystem', '../../../../class/mem') +f('sys/devices/virtual/mem/full/dev', 0o644, b'1:7\n') +f('sys/devices/virtual/mem/full/uevent', 0o644, b'''MAJOR=1 +MINOR=7 +''') +d('sys/devices/virtual/mem/full/power', 0o755) +f('sys/devices/virtual/mem/full/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/mem/random', 0o755) +l('sys/devices/virtual/mem/random/subsystem', '../../../../class/mem') +f('sys/devices/virtual/mem/random/dev', 0o644, b'1:8\n') +f('sys/devices/virtual/mem/random/uevent', 0o644, b'''MAJOR=1 +MINOR=8 +''') +d('sys/devices/virtual/mem/random/power', 0o755) +f('sys/devices/virtual/mem/random/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/net', 0o755) +d('sys/devices/virtual/net/lo', 0o755) +l('sys/devices/virtual/net/lo/subsystem', '../../../../class/net') +f('sys/devices/virtual/net/lo/ifindex', 0o644, b'1\n') +f('sys/devices/virtual/net/lo/features', 0o644, b'0x13865\n') +f('sys/devices/virtual/net/lo/iflink', 0o644, b'1\n') +f('sys/devices/virtual/net/lo/dormant', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/dev_id', 0o644, b'0x0\n') +f('sys/devices/virtual/net/lo/type', 0o644, b'772\n') +f('sys/devices/virtual/net/lo/operstate', 0o644, b'unknown\n') +f('sys/devices/virtual/net/lo/carrier', 0o644, b'1\n') +f('sys/devices/virtual/net/lo/link_mode', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/tx_queue_len', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/flags', 0o644, b'0x9\n') +f('sys/devices/virtual/net/lo/addr_len', 0o644, b'6\n') +f('sys/devices/virtual/net/lo/address', 0o644, b'00:00:00:00:00:00\n') +f('sys/devices/virtual/net/lo/uevent', 0o644, b'''INTERFACE=lo +IFINDEX=1 +''') +f('sys/devices/virtual/net/lo/mtu', 0o644, b'16436\n') +f('sys/devices/virtual/net/lo/broadcast', 0o644, b'00:00:00:00:00:00\n') +d('sys/devices/virtual/net/lo/statistics', 0o755) +f('sys/devices/virtual/net/lo/statistics/tx_aborted_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/rx_crc_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/rx_bytes', 0o644, b'3380\n') +f('sys/devices/virtual/net/lo/statistics/rx_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/tx_packets', 0o644, b'46\n') +f('sys/devices/virtual/net/lo/statistics/tx_carrier_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/tx_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/rx_dropped', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/tx_fifo_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/rx_length_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/tx_dropped', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/rx_fifo_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/rx_missed_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/tx_window_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/collisions', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/rx_frame_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/rx_packets', 0o644, b'46\n') +f('sys/devices/virtual/net/lo/statistics/rx_compressed', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/tx_compressed', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/multicast', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/rx_over_errors', 0o644, b'0\n') +f('sys/devices/virtual/net/lo/statistics/tx_bytes', 0o644, b'3380\n') +f('sys/devices/virtual/net/lo/statistics/tx_heartbeat_errors', 0o644, b'0\n') +d('sys/devices/virtual/net/lo/power', 0o755) +f('sys/devices/virtual/net/lo/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/dmi', 0o755) +d('sys/devices/virtual/dmi/id', 0o755) +l('sys/devices/virtual/dmi/id/subsystem', '../../../../class/dmi') +f('sys/devices/virtual/dmi/id/product_name', 0o644, b'8741C4G\n') +f('sys/devices/virtual/dmi/id/modalias', 0o644, b'dmi:bvnLENOVO:bvr7IET31WW(1.12):bd09/19/2007:svnLENOVO:pn8741C4G:pvrThinkPadT60p:rvnLENOVO:rn8741C4G:rvrNotAvailable:cvnLENOVO:ct10:cvrNotAvailable:\n') +f('sys/devices/virtual/dmi/id/chassis_serial', 0o644, b'Not Available\n') +f('sys/devices/virtual/dmi/id/board_version', 0o644, b'Not Available\n') +f('sys/devices/virtual/dmi/id/board_serial', 0o644, b'VF0UV72C10X\n') +f('sys/devices/virtual/dmi/id/chassis_type', 0o644, b'10\n') +f('sys/devices/virtual/dmi/id/chassis_asset_tag', 0o644, b'No Asset Information\n') +f('sys/devices/virtual/dmi/id/product_uuid', 0o644, b'82161681-492E-11CB-BCCA-A7FDE26F414B\n') +f('sys/devices/virtual/dmi/id/board_name', 0o644, b'8741C4G\n') +f('sys/devices/virtual/dmi/id/board_asset_tag', 0o644, b'\n') +f('sys/devices/virtual/dmi/id/bios_date', 0o644, b'09/19/2007\n') +f('sys/devices/virtual/dmi/id/bios_version', 0o644, b'7IET31WW (1.12 )\n') +f('sys/devices/virtual/dmi/id/product_serial', 0o644, b'L3AK195\n') +f('sys/devices/virtual/dmi/id/chassis_version', 0o644, b'Not Available\n') +f('sys/devices/virtual/dmi/id/chassis_vendor', 0o644, b'LENOVO\n') +f('sys/devices/virtual/dmi/id/product_version', 0o644, b'ThinkPad T60p\n') +f('sys/devices/virtual/dmi/id/board_vendor', 0o644, b'LENOVO\n') +f('sys/devices/virtual/dmi/id/uevent', 0o644, b'MODALIAS=dmi:bvnLENOVO:bvr7IET31WW(1.12):bd09/19/2007:svnLENOVO:pn8741C4G:pvrThinkPadT60p:rvnLENOVO:rn8741C4G:rvrNotAvailable:cvnLENOVO:ct10:cvrNotAvailable:\n') +f('sys/devices/virtual/dmi/id/sys_vendor', 0o644, b'LENOVO\n') +f('sys/devices/virtual/dmi/id/bios_vendor', 0o644, b'LENOVO\n') +d('sys/devices/virtual/dmi/id/power', 0o755) +f('sys/devices/virtual/dmi/id/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi', 0o755) +d('sys/devices/virtual/bdi/7:1', 0o755) +l('sys/devices/virtual/bdi/7:1/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/7:1/read_ahead_kb', 0o644, b'0\n') +f('sys/devices/virtual/bdi/7:1/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/7:1/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/7:1/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/7:1/power', 0o755) +f('sys/devices/virtual/bdi/7:1/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/7:0', 0o755) +l('sys/devices/virtual/bdi/7:0/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/7:0/read_ahead_kb', 0o644, b'0\n') +f('sys/devices/virtual/bdi/7:0/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/7:0/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/7:0/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/7:0/power', 0o755) +f('sys/devices/virtual/bdi/7:0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/7:2', 0o755) +l('sys/devices/virtual/bdi/7:2/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/7:2/read_ahead_kb', 0o644, b'0\n') +f('sys/devices/virtual/bdi/7:2/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/7:2/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/7:2/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/7:2/power', 0o755) +f('sys/devices/virtual/bdi/7:2/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/7:4', 0o755) +l('sys/devices/virtual/bdi/7:4/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/7:4/read_ahead_kb', 0o644, b'0\n') +f('sys/devices/virtual/bdi/7:4/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/7:4/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/7:4/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/7:4/power', 0o755) +f('sys/devices/virtual/bdi/7:4/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/7:3', 0o755) +l('sys/devices/virtual/bdi/7:3/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/7:3/read_ahead_kb', 0o644, b'0\n') +f('sys/devices/virtual/bdi/7:3/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/7:3/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/7:3/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/7:3/power', 0o755) +f('sys/devices/virtual/bdi/7:3/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/11:0', 0o755) +l('sys/devices/virtual/bdi/11:0/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/11:0/read_ahead_kb', 0o644, b'128\n') +f('sys/devices/virtual/bdi/11:0/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/11:0/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/11:0/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/11:0/power', 0o755) +f('sys/devices/virtual/bdi/11:0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/7:5', 0o755) +l('sys/devices/virtual/bdi/7:5/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/7:5/read_ahead_kb', 0o644, b'0\n') +f('sys/devices/virtual/bdi/7:5/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/7:5/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/7:5/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/7:5/power', 0o755) +f('sys/devices/virtual/bdi/7:5/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/8:0', 0o755) +l('sys/devices/virtual/bdi/8:0/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/8:0/read_ahead_kb', 0o644, b'128\n') +f('sys/devices/virtual/bdi/8:0/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/8:0/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/8:0/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/8:0/power', 0o755) +f('sys/devices/virtual/bdi/8:0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/default', 0o755) +l('sys/devices/virtual/bdi/default/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/default/read_ahead_kb', 0o644, b'128\n') +f('sys/devices/virtual/bdi/default/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/default/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/default/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/default/power', 0o755) +f('sys/devices/virtual/bdi/default/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/0:16', 0o755) +l('sys/devices/virtual/bdi/0:16/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/0:16/read_ahead_kb', 0o644, b'128\n') +f('sys/devices/virtual/bdi/0:16/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/0:16/max_ratio', 0o644, b'1\n') +f('sys/devices/virtual/bdi/0:16/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/0:16/power', 0o755) +f('sys/devices/virtual/bdi/0:16/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/8:16', 0o755) +l('sys/devices/virtual/bdi/8:16/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/8:16/read_ahead_kb', 0o644, b'128\n') +f('sys/devices/virtual/bdi/8:16/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/8:16/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/8:16/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/8:16/power', 0o755) +f('sys/devices/virtual/bdi/8:16/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/9:0', 0o755) +l('sys/devices/virtual/bdi/9:0/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/9:0/read_ahead_kb', 0o644, b'128\n') +f('sys/devices/virtual/bdi/9:0/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/9:0/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/9:0/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/9:0/power', 0o755) +f('sys/devices/virtual/bdi/9:0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/7:7', 0o755) +l('sys/devices/virtual/bdi/7:7/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/7:7/read_ahead_kb', 0o644, b'0\n') +f('sys/devices/virtual/bdi/7:7/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/7:7/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/7:7/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/7:7/power', 0o755) +f('sys/devices/virtual/bdi/7:7/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/bdi/7:6', 0o755) +l('sys/devices/virtual/bdi/7:6/subsystem', '../../../../class/bdi') +f('sys/devices/virtual/bdi/7:6/read_ahead_kb', 0o644, b'0\n') +f('sys/devices/virtual/bdi/7:6/uevent', 0o644, b'') +f('sys/devices/virtual/bdi/7:6/max_ratio', 0o644, b'100\n') +f('sys/devices/virtual/bdi/7:6/min_ratio', 0o644, b'0\n') +d('sys/devices/virtual/bdi/7:6/power', 0o755) +f('sys/devices/virtual/bdi/7:6/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/sound', 0o755) +d('sys/devices/virtual/sound/timer', 0o755) +l('sys/devices/virtual/sound/timer/subsystem', '../../../../class/sound') +f('sys/devices/virtual/sound/timer/dev', 0o644, b'116:33\n') +f('sys/devices/virtual/sound/timer/uevent', 0o644, b'''MAJOR=116 +MINOR=33 +''') +d('sys/devices/virtual/sound/timer/power', 0o755) +f('sys/devices/virtual/sound/timer/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/sound/seq', 0o755) +l('sys/devices/virtual/sound/seq/subsystem', '../../../../class/sound') +f('sys/devices/virtual/sound/seq/dev', 0o644, b'116:1\n') +f('sys/devices/virtual/sound/seq/uevent', 0o644, b'''MAJOR=116 +MINOR=1 +''') +d('sys/devices/virtual/sound/seq/power', 0o755) +f('sys/devices/virtual/sound/seq/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc', 0o755) +d('sys/devices/virtual/misc/misc-fake89999', 0o755) +l('sys/devices/virtual/misc/misc-fake89999/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/misc-fake89999/dev', 0o644, b'4095:89999\n') +f('sys/devices/virtual/misc/misc-fake89999/uevent', 0o644, b'''MAJOR=4095 +MINOR=89999 +DEVNAME=misc-fake89999 +''') +d('sys/devices/virtual/misc/misc-fake89999/power', 0o755) +f('sys/devices/virtual/misc/misc-fake89999/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/uinput', 0o755) +l('sys/devices/virtual/misc/uinput/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/uinput/dev', 0o644, b'10:223\n') +f('sys/devices/virtual/misc/uinput/uevent', 0o644, b'''MAJOR=10 +MINOR=223 +''') +d('sys/devices/virtual/misc/uinput/power', 0o755) +f('sys/devices/virtual/misc/uinput/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/fuse', 0o755) +l('sys/devices/virtual/misc/fuse/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/fuse/dev', 0o644, b'10:229\n') +f('sys/devices/virtual/misc/fuse/uevent', 0o644, b'''MAJOR=10 +MINOR=229 +''') +d('sys/devices/virtual/misc/fuse/power', 0o755) +f('sys/devices/virtual/misc/fuse/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/hpet', 0o755) +l('sys/devices/virtual/misc/hpet/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/hpet/dev', 0o644, b'10:228\n') +f('sys/devices/virtual/misc/hpet/uevent', 0o644, b'''MAJOR=10 +MINOR=228 +''') +d('sys/devices/virtual/misc/hpet/power', 0o755) +f('sys/devices/virtual/misc/hpet/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/cpu_dma_latency', 0o755) +l('sys/devices/virtual/misc/cpu_dma_latency/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/cpu_dma_latency/dev', 0o644, b'10:63\n') +f('sys/devices/virtual/misc/cpu_dma_latency/uevent', 0o644, b'''MAJOR=10 +MINOR=63 +''') +d('sys/devices/virtual/misc/cpu_dma_latency/power', 0o755) +f('sys/devices/virtual/misc/cpu_dma_latency/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/mcelog', 0o755) +l('sys/devices/virtual/misc/mcelog/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/mcelog/dev', 0o644, b'10:227\n') +f('sys/devices/virtual/misc/mcelog/uevent', 0o644, b'''MAJOR=10 +MINOR=227 +''') +d('sys/devices/virtual/misc/mcelog/power', 0o755) +f('sys/devices/virtual/misc/mcelog/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/device-mapper', 0o755) +l('sys/devices/virtual/misc/device-mapper/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/device-mapper/dev', 0o644, b'10:60\n') +f('sys/devices/virtual/misc/device-mapper/uevent', 0o644, b'''MAJOR=10 +MINOR=60 +''') +d('sys/devices/virtual/misc/device-mapper/power', 0o755) +f('sys/devices/virtual/misc/device-mapper/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/psaux', 0o755) +l('sys/devices/virtual/misc/psaux/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/psaux/dev', 0o644, b'10:1\n') +f('sys/devices/virtual/misc/psaux/uevent', 0o644, b'''MAJOR=10 +MINOR=1 +''') +d('sys/devices/virtual/misc/psaux/power', 0o755) +f('sys/devices/virtual/misc/psaux/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/misc-fake1', 0o755) +l('sys/devices/virtual/misc/misc-fake1/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/misc-fake1/dev', 0o644, b'4095:1\n') +f('sys/devices/virtual/misc/misc-fake1/uevent', 0o644, b'''MAJOR=4095 +MINOR=1 +DEVNAME=misc-fake1 + +''') +d('sys/devices/virtual/misc/misc-fake1/power', 0o755) +f('sys/devices/virtual/misc/misc-fake1/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/nvram', 0o755) +l('sys/devices/virtual/misc/nvram/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/nvram/dev', 0o644, b'10:144\n') +f('sys/devices/virtual/misc/nvram/uevent', 0o644, b'''MAJOR=10 +MINOR=144 +''') +d('sys/devices/virtual/misc/nvram/power', 0o755) +f('sys/devices/virtual/misc/nvram/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/network_latency', 0o755) +l('sys/devices/virtual/misc/network_latency/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/network_latency/dev', 0o644, b'10:62\n') +f('sys/devices/virtual/misc/network_latency/uevent', 0o644, b'''MAJOR=10 +MINOR=62 +''') +d('sys/devices/virtual/misc/network_latency/power', 0o755) +f('sys/devices/virtual/misc/network_latency/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/network_throughput', 0o755) +l('sys/devices/virtual/misc/network_throughput/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/network_throughput/dev', 0o644, b'10:61\n') +f('sys/devices/virtual/misc/network_throughput/uevent', 0o644, b'''MAJOR=10 +MINOR=61 +''') +d('sys/devices/virtual/misc/network_throughput/power', 0o755) +f('sys/devices/virtual/misc/network_throughput/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/misc/microcode', 0o755) +l('sys/devices/virtual/misc/microcode/subsystem', '../../../../class/misc') +f('sys/devices/virtual/misc/microcode/dev', 0o644, b'10:184\n') +f('sys/devices/virtual/misc/microcode/uevent', 0o644, b'''MAJOR=10 +MINOR=184 +''') +d('sys/devices/virtual/misc/microcode/power', 0o755) +f('sys/devices/virtual/misc/microcode/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vtconsole', 0o755) +d('sys/devices/virtual/vtconsole/vtcon1', 0o755) +l('sys/devices/virtual/vtconsole/vtcon1/subsystem', '../../../../class/vtconsole') +f('sys/devices/virtual/vtconsole/vtcon1/bind', 0o644, b'1\n') +f('sys/devices/virtual/vtconsole/vtcon1/name', 0o644, b'(M) frame buffer device\n') +f('sys/devices/virtual/vtconsole/vtcon1/uevent', 0o644, b'') +d('sys/devices/virtual/vtconsole/vtcon1/power', 0o755) +f('sys/devices/virtual/vtconsole/vtcon1/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/vtconsole/vtcon0', 0o755) +l('sys/devices/virtual/vtconsole/vtcon0/subsystem', '../../../../class/vtconsole') +f('sys/devices/virtual/vtconsole/vtcon0/bind', 0o644, b'0\n') +f('sys/devices/virtual/vtconsole/vtcon0/name', 0o644, b'(S) dummy device\n') +f('sys/devices/virtual/vtconsole/vtcon0/uevent', 0o644, b'') +d('sys/devices/virtual/vtconsole/vtcon0/power', 0o755) +f('sys/devices/virtual/vtconsole/vtcon0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/input', 0o755) +d('sys/devices/virtual/input/mice', 0o755) +l('sys/devices/virtual/input/mice/subsystem', '../../../../class/input') +f('sys/devices/virtual/input/mice/dev', 0o644, b'13:63\n') +f('sys/devices/virtual/input/mice/uevent', 0o644, b'''MAJOR=13 +MINOR=63 +''') +d('sys/devices/virtual/input/mice/power', 0o755) +f('sys/devices/virtual/input/mice/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/input/input6', 0o755) +l('sys/devices/virtual/input/input6/subsystem', '../../../../class/input') +f('sys/devices/virtual/input/input6/uniq', 0o644, b'\n') +f('sys/devices/virtual/input/input6/phys', 0o644, b'thinkpad_acpi/input0\n') +f('sys/devices/virtual/input/input6/modalias', 0o644, b'input:b0019v17AAp5054e4101-e0,1,4,5,k71,72,73,8E,98,C0,C2,CD,E0,E1,E3,E4,EC,F0,168,174,181,1D2,1D7,1DB,1DC,ram4,lsfw3,\n') +f('sys/devices/virtual/input/input6/name', 0o644, b'ThinkPad Extra Buttons\n') +f('sys/devices/virtual/input/input6/uevent', 0o644, b'''PRODUCT=19/17aa/5054/4101 +NAME="ThinkPad Extra Buttons" +PHYS="thinkpad_acpi/input0" +EV==33 +KEY==18840000 2 10010000000000 0 1101b00002005 1004000 e000000000000 0 +MSC==10 +SW==8 +MODALIAS=input:b0019v17AAp5054e4101-e0,1,4,5,k71,72,73,8E,98,C0,C2,CD,E0,E1,E3,E4,EC,F0,168,174,181,1D2,1D7,1DB,1DC,ram4,lsfw3, +''') +d('sys/devices/virtual/input/input6/id', 0o755) +f('sys/devices/virtual/input/input6/id/version', 0o644, b'4101\n') +f('sys/devices/virtual/input/input6/id/product', 0o644, b'5054\n') +f('sys/devices/virtual/input/input6/id/vendor', 0o644, b'17aa\n') +f('sys/devices/virtual/input/input6/id/bustype', 0o644, b'0019\n') +d('sys/devices/virtual/input/input6/power', 0o755) +f('sys/devices/virtual/input/input6/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/input/input6/event6', 0o755) +l('sys/devices/virtual/input/input6/event6/subsystem', '../../../../../class/input') +l('sys/devices/virtual/input/input6/event6/device', '../../input6') +f('sys/devices/virtual/input/input6/event6/dev', 0o644, b'13:70\n') +f('sys/devices/virtual/input/input6/event6/uevent', 0o644, b'''MAJOR=13 +MINOR=70 +''') +d('sys/devices/virtual/input/input6/event6/power', 0o755) +f('sys/devices/virtual/input/input6/event6/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/input/input6/capabilities', 0o755) +f('sys/devices/virtual/input/input6/capabilities/msc', 0o644, b'10\n') +f('sys/devices/virtual/input/input6/capabilities/abs', 0o644, b'0\n') +f('sys/devices/virtual/input/input6/capabilities/snd', 0o644, b'0\n') +f('sys/devices/virtual/input/input6/capabilities/ff', 0o644, b'0\n') +f('sys/devices/virtual/input/input6/capabilities/key', 0o644, b'18840000 2 10010000000000 0 1101b00002005 1004000 e000000000000 0\n') +f('sys/devices/virtual/input/input6/capabilities/rel', 0o644, b'0\n') +f('sys/devices/virtual/input/input6/capabilities/sw', 0o644, b'8\n') +f('sys/devices/virtual/input/input6/capabilities/ev', 0o644, b'33\n') +f('sys/devices/virtual/input/input6/capabilities/led', 0o644, b'0\n') +d('sys/devices/virtual/thermal', 0o755) +d('sys/devices/virtual/thermal/thermal_zone1', 0o755) +l('sys/devices/virtual/thermal/thermal_zone1/subsystem', '../../../../class/thermal') +l('sys/devices/virtual/thermal/thermal_zone1/cdev1', '../cooling_device0') +l('sys/devices/virtual/thermal/thermal_zone1/cdev0', '../cooling_device1') +l('sys/devices/virtual/thermal/thermal_zone1/device', '../../../LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02') +f('sys/devices/virtual/thermal/thermal_zone1/trip_point_0_type', 0o644, b'critical\n') +f('sys/devices/virtual/thermal/thermal_zone1/trip_point_0_temp', 0o644, b'100000\n') +f('sys/devices/virtual/thermal/thermal_zone1/trip_point_1_temp', 0o644, b'95500\n') +f('sys/devices/virtual/thermal/thermal_zone1/type', 0o644, b'acpitz\n') +f('sys/devices/virtual/thermal/thermal_zone1/cdev1_trip_point', 0o644, b'1\n') +f('sys/devices/virtual/thermal/thermal_zone1/mode', 0o644, b'kernel\n') +f('sys/devices/virtual/thermal/thermal_zone1/temp', 0o644, b'47000\n') +f('sys/devices/virtual/thermal/thermal_zone1/cdev0_trip_point', 0o644, b'1\n') +f('sys/devices/virtual/thermal/thermal_zone1/uevent', 0o644, b'') +f('sys/devices/virtual/thermal/thermal_zone1/trip_point_1_type', 0o644, b'passive\n') +d('sys/devices/virtual/thermal/thermal_zone1/power', 0o755) +f('sys/devices/virtual/thermal/thermal_zone1/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/thermal/cooling_device1', 0o755) +l('sys/devices/virtual/thermal/cooling_device1/subsystem', '../../../../class/thermal') +l('sys/devices/virtual/thermal/cooling_device1/device', '../../../LNXSYSTM:00/ACPI0007:01') +f('sys/devices/virtual/thermal/cooling_device1/type', 0o644, b'Processor\n') +f('sys/devices/virtual/thermal/cooling_device1/max_state', 0o644, b'10\n') +f('sys/devices/virtual/thermal/cooling_device1/cur_state', 0o644, b'0\n') +f('sys/devices/virtual/thermal/cooling_device1/uevent', 0o644, b'') +d('sys/devices/virtual/thermal/cooling_device1/power', 0o755) +f('sys/devices/virtual/thermal/cooling_device1/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/thermal/cooling_device0', 0o755) +l('sys/devices/virtual/thermal/cooling_device0/subsystem', '../../../../class/thermal') +l('sys/devices/virtual/thermal/cooling_device0/device', '../../../LNXSYSTM:00/ACPI0007:00') +f('sys/devices/virtual/thermal/cooling_device0/type', 0o644, b'Processor\n') +f('sys/devices/virtual/thermal/cooling_device0/max_state', 0o644, b'10\n') +f('sys/devices/virtual/thermal/cooling_device0/cur_state', 0o644, b'0\n') +f('sys/devices/virtual/thermal/cooling_device0/uevent', 0o644, b'') +d('sys/devices/virtual/thermal/cooling_device0/power', 0o755) +f('sys/devices/virtual/thermal/cooling_device0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/thermal/thermal_zone0', 0o755) +l('sys/devices/virtual/thermal/thermal_zone0/subsystem', '../../../../class/thermal') +l('sys/devices/virtual/thermal/thermal_zone0/device', '../../../LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01') +f('sys/devices/virtual/thermal/thermal_zone0/trip_point_0_type', 0o644, b'critical\n') +f('sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp', 0o644, b'127000\n') +f('sys/devices/virtual/thermal/thermal_zone0/type', 0o644, b'acpitz\n') +f('sys/devices/virtual/thermal/thermal_zone0/mode', 0o644, b'kernel\n') +f('sys/devices/virtual/thermal/thermal_zone0/temp', 0o644, b'46000\n') +f('sys/devices/virtual/thermal/thermal_zone0/uevent', 0o644, b'') +d('sys/devices/virtual/thermal/thermal_zone0/power', 0o755) +f('sys/devices/virtual/thermal/thermal_zone0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/block', 0o755) +d('sys/devices/virtual/block/loop1', 0o755) +l('sys/devices/virtual/block/loop1/subsystem', '../../../../class/block') +l('sys/devices/virtual/block/loop1/bdi', '../../bdi/7:1') +f('sys/devices/virtual/block/loop1/capability', 0o644, b'10\n') +f('sys/devices/virtual/block/loop1/ro', 0o644, b'0\n') +f('sys/devices/virtual/block/loop1/make-it-fail', 0o644, b'0\n') +f('sys/devices/virtual/block/loop1/size', 0o644, b'0\n') +f('sys/devices/virtual/block/loop1/dev', 0o644, b'7:1\n') +f('sys/devices/virtual/block/loop1/range', 0o644, b'1\n') +f('sys/devices/virtual/block/loop1/removable', 0o644, b'0\n') +f('sys/devices/virtual/block/loop1/stat', 0o644, b' 0 0 0 0 0 0 0 0 0 0 0\n') +f('sys/devices/virtual/block/loop1/uevent', 0o644, b'''MAJOR=7 +MINOR=1 +DEVTYPE=disk +''') +d('sys/devices/virtual/block/loop1/power', 0o755) +f('sys/devices/virtual/block/loop1/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/block/loop7', 0o755) +l('sys/devices/virtual/block/loop7/subsystem', '../../../../class/block') +l('sys/devices/virtual/block/loop7/bdi', '../../bdi/7:7') +f('sys/devices/virtual/block/loop7/capability', 0o644, b'10\n') +f('sys/devices/virtual/block/loop7/ro', 0o644, b'0\n') +f('sys/devices/virtual/block/loop7/make-it-fail', 0o644, b'0\n') +f('sys/devices/virtual/block/loop7/size', 0o644, b'0\n') +f('sys/devices/virtual/block/loop7/dev', 0o644, b'7:7\n') +f('sys/devices/virtual/block/loop7/range', 0o644, b'1\n') +f('sys/devices/virtual/block/loop7/removable', 0o644, b'0\n') +f('sys/devices/virtual/block/loop7/stat', 0o644, b' 0 0 0 0 0 0 0 0 0 0 0\n') +f('sys/devices/virtual/block/loop7/uevent', 0o644, b'''MAJOR=7 +MINOR=7 +DEVTYPE=disk +''') +d('sys/devices/virtual/block/loop7/power', 0o755) +f('sys/devices/virtual/block/loop7/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/block/loop0', 0o755) +l('sys/devices/virtual/block/loop0/subsystem', '../../../../class/block') +l('sys/devices/virtual/block/loop0/bdi', '../../bdi/7:0') +f('sys/devices/virtual/block/loop0/capability', 0o644, b'10\n') +f('sys/devices/virtual/block/loop0/ro', 0o644, b'0\n') +f('sys/devices/virtual/block/loop0/make-it-fail', 0o644, b'0\n') +f('sys/devices/virtual/block/loop0/size', 0o644, b'0\n') +f('sys/devices/virtual/block/loop0/dev', 0o644, b'7:0\n') +f('sys/devices/virtual/block/loop0/range', 0o644, b'1\n') +f('sys/devices/virtual/block/loop0/removable', 0o644, b'0\n') +f('sys/devices/virtual/block/loop0/stat', 0o644, b' 0 0 0 0 0 0 0 0 0 0 0\n') +f('sys/devices/virtual/block/loop0/uevent', 0o644, b'''MAJOR=7 +MINOR=0 +DEVTYPE=disk +''') +d('sys/devices/virtual/block/loop0/power', 0o755) +f('sys/devices/virtual/block/loop0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/block/loop5', 0o755) +l('sys/devices/virtual/block/loop5/subsystem', '../../../../class/block') +l('sys/devices/virtual/block/loop5/bdi', '../../bdi/7:5') +f('sys/devices/virtual/block/loop5/capability', 0o644, b'10\n') +f('sys/devices/virtual/block/loop5/ro', 0o644, b'0\n') +f('sys/devices/virtual/block/loop5/make-it-fail', 0o644, b'0\n') +f('sys/devices/virtual/block/loop5/size', 0o644, b'0\n') +f('sys/devices/virtual/block/loop5/dev', 0o644, b'7:5\n') +f('sys/devices/virtual/block/loop5/range', 0o644, b'1\n') +f('sys/devices/virtual/block/loop5/removable', 0o644, b'0\n') +f('sys/devices/virtual/block/loop5/stat', 0o644, b' 0 0 0 0 0 0 0 0 0 0 0\n') +f('sys/devices/virtual/block/loop5/uevent', 0o644, b'''MAJOR=7 +MINOR=5 +DEVTYPE=disk +''') +d('sys/devices/virtual/block/loop5/power', 0o755) +f('sys/devices/virtual/block/loop5/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/block/loop3', 0o755) +l('sys/devices/virtual/block/loop3/subsystem', '../../../../class/block') +l('sys/devices/virtual/block/loop3/bdi', '../../bdi/7:3') +f('sys/devices/virtual/block/loop3/capability', 0o644, b'10\n') +f('sys/devices/virtual/block/loop3/ro', 0o644, b'0\n') +f('sys/devices/virtual/block/loop3/make-it-fail', 0o644, b'0\n') +f('sys/devices/virtual/block/loop3/size', 0o644, b'0\n') +f('sys/devices/virtual/block/loop3/dev', 0o644, b'7:3\n') +f('sys/devices/virtual/block/loop3/range', 0o644, b'1\n') +f('sys/devices/virtual/block/loop3/removable', 0o644, b'0\n') +f('sys/devices/virtual/block/loop3/stat', 0o644, b' 0 0 0 0 0 0 0 0 0 0 0\n') +f('sys/devices/virtual/block/loop3/uevent', 0o644, b'''MAJOR=7 +MINOR=3 +DEVTYPE=disk +''') +d('sys/devices/virtual/block/loop3/power', 0o755) +f('sys/devices/virtual/block/loop3/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/block/loop6', 0o755) +l('sys/devices/virtual/block/loop6/subsystem', '../../../../class/block') +l('sys/devices/virtual/block/loop6/bdi', '../../bdi/7:6') +f('sys/devices/virtual/block/loop6/capability', 0o644, b'10\n') +f('sys/devices/virtual/block/loop6/ro', 0o644, b'0\n') +f('sys/devices/virtual/block/loop6/make-it-fail', 0o644, b'0\n') +f('sys/devices/virtual/block/loop6/size', 0o644, b'0\n') +f('sys/devices/virtual/block/loop6/dev', 0o644, b'7:6\n') +f('sys/devices/virtual/block/loop6/range', 0o644, b'1\n') +f('sys/devices/virtual/block/loop6/removable', 0o644, b'0\n') +f('sys/devices/virtual/block/loop6/stat', 0o644, b' 0 0 0 0 0 0 0 0 0 0 0\n') +f('sys/devices/virtual/block/loop6/uevent', 0o644, b'''MAJOR=7 +MINOR=6 +DEVTYPE=disk +''') +d('sys/devices/virtual/block/loop6/power', 0o755) +f('sys/devices/virtual/block/loop6/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/block/loop2', 0o755) +l('sys/devices/virtual/block/loop2/subsystem', '../../../../class/block') +l('sys/devices/virtual/block/loop2/bdi', '../../bdi/7:2') +f('sys/devices/virtual/block/loop2/capability', 0o644, b'10\n') +f('sys/devices/virtual/block/loop2/ro', 0o644, b'0\n') +f('sys/devices/virtual/block/loop2/make-it-fail', 0o644, b'0\n') +f('sys/devices/virtual/block/loop2/size', 0o644, b'0\n') +f('sys/devices/virtual/block/loop2/dev', 0o644, b'7:2\n') +f('sys/devices/virtual/block/loop2/range', 0o644, b'1\n') +f('sys/devices/virtual/block/loop2/removable', 0o644, b'0\n') +f('sys/devices/virtual/block/loop2/stat', 0o644, b' 0 0 0 0 0 0 0 0 0 0 0\n') +f('sys/devices/virtual/block/loop2/uevent', 0o644, b'''MAJOR=7 +MINOR=2 +DEVTYPE=disk +''') +d('sys/devices/virtual/block/loop2/power', 0o755) +f('sys/devices/virtual/block/loop2/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/block/fake!blockdev0', 0o755) +l('sys/devices/virtual/block/fake!blockdev0/subsystem', '../../../../class/block') +f('sys/devices/virtual/block/fake!blockdev0/capability', 0o644, b'10\n') +f('sys/devices/virtual/block/fake!blockdev0/ro', 0o644, b'0\n') +f('sys/devices/virtual/block/fake!blockdev0/size', 0o644, b'0\n') +f('sys/devices/virtual/block/fake!blockdev0/dev', 0o644, b'711:0\n') +f('sys/devices/virtual/block/fake!blockdev0/range', 0o644, b'1\n') +f('sys/devices/virtual/block/fake!blockdev0/removable', 0o644, b'0\n') +f('sys/devices/virtual/block/fake!blockdev0/stat', 0o644, b' 0 0 0 0 0 0 0 0 0 0 0\n') +f('sys/devices/virtual/block/fake!blockdev0/uevent', 0o644, b'''MAJOR=7 +MINOR=0 +DEVTYPE=disk +DEVNAME=fake/blockdev0 +''') +d('sys/devices/virtual/block/loop4', 0o755) +l('sys/devices/virtual/block/loop4/subsystem', '../../../../class/block') +l('sys/devices/virtual/block/loop4/bdi', '../../bdi/7:4') +f('sys/devices/virtual/block/loop4/capability', 0o644, b'10\n') +f('sys/devices/virtual/block/loop4/ro', 0o644, b'0\n') +f('sys/devices/virtual/block/loop4/make-it-fail', 0o644, b'0\n') +f('sys/devices/virtual/block/loop4/size', 0o644, b'0\n') +f('sys/devices/virtual/block/loop4/dev', 0o644, b'7:4\n') +f('sys/devices/virtual/block/loop4/range', 0o644, b'1\n') +f('sys/devices/virtual/block/loop4/removable', 0o644, b'0\n') +f('sys/devices/virtual/block/loop4/stat', 0o644, b' 0 0 0 0 0 0 0 0 0 0 0\n') +f('sys/devices/virtual/block/loop4/uevent', 0o644, b'''MAJOR=7 +MINOR=4 +DEVTYPE=disk +''') +d('sys/devices/virtual/block/loop4/power', 0o755) +f('sys/devices/virtual/block/loop4/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/block/md0', 0o755) +l('sys/devices/virtual/block/md0/subsystem', '../../../../class/block') +l('sys/devices/virtual/block/md0/bdi', '../../bdi/9:0') +f('sys/devices/virtual/block/md0/capability', 0o644, b'10\n') +f('sys/devices/virtual/block/md0/ro', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/make-it-fail', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/size', 0o644, b'19534848\n') +f('sys/devices/virtual/block/md0/dev', 0o644, b'9:0\n') +f('sys/devices/virtual/block/md0/range', 0o644, b'1\n') +f('sys/devices/virtual/block/md0/removable', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/stat', 0o644, b' 60 0 480 0 0 0 0 0 0 0 0\n') +f('sys/devices/virtual/block/md0/uevent', 0o644, b'''MAJOR=9 +MINOR=0 +DEVTYPE=disk +''') +d('sys/devices/virtual/block/md0/power', 0o755) +f('sys/devices/virtual/block/md0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/block/md0/md', 0o755) +l('sys/devices/virtual/block/md0/md/rd1', 'dev-sda9') +f('sys/devices/virtual/block/md0/md/chunk_size', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/md/sync_action', 0o644, b'idle\n') +f('sys/devices/virtual/block/md0/md/sync_speed_min', 0o644, b'1000 (system)\n') +f('sys/devices/virtual/block/md0/md/sync_force_parallel', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/md/sync_min', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/md/mismatch_cnt', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/md/suspend_hi', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/md/sync_completed', 0o644, b'0 / 19534848\n') +f('sys/devices/virtual/block/md0/md/sync_max', 0o644, b'max\n') +f('sys/devices/virtual/block/md0/md/safe_mode_delay', 0o644, b'0.201\n') +f('sys/devices/virtual/block/md0/md/degraded', 0o644, b'1\n') +f('sys/devices/virtual/block/md0/md/component_size', 0o644, b'9767424\n') +f('sys/devices/virtual/block/md0/md/suspend_lo', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/md/resync_start', 0o644, b'18446744073709551615\n') +f('sys/devices/virtual/block/md0/md/sync_speed', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/md/reshape_position', 0o644, b'none\n') +f('sys/devices/virtual/block/md0/md/array_state', 0o644, b'clean\n') +f('sys/devices/virtual/block/md0/md/sync_speed_max', 0o644, b'200000 (system)\n') +f('sys/devices/virtual/block/md0/md/level', 0o644, b'raid1\n') +f('sys/devices/virtual/block/md0/md/layout', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/md/raid_disks', 0o644, b'2\n') +f('sys/devices/virtual/block/md0/md/metadata_version', 0o644, b'0.90\n') +d('sys/devices/virtual/block/md0/md/dev-sda9', 0o755) +l('sys/devices/virtual/block/md0/md/dev-sda9/block', '../../../../../pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9') +f('sys/devices/virtual/block/md0/md/dev-sda9/slot', 0o644, b'1\n') +f('sys/devices/virtual/block/md0/md/dev-sda9/size', 0o644, b'23438720\n') +f('sys/devices/virtual/block/md0/md/dev-sda9/state', 0o644, b'in_sync\n') +f('sys/devices/virtual/block/md0/md/dev-sda9/errors', 0o644, b'0\n') +f('sys/devices/virtual/block/md0/md/dev-sda9/offset', 0o644, b'0\n') +d('sys/devices/virtual/block/md0/slaves', 0o755) +l('sys/devices/virtual/block/md0/slaves/sda9', '../../../../pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9') +d('sys/devices/virtual/graphics', 0o755) +d('sys/devices/virtual/graphics/fbcon', 0o755) +l('sys/devices/virtual/graphics/fbcon/subsystem', '../../../../class/graphics') +f('sys/devices/virtual/graphics/fbcon/cursor_blink', 0o644, b'0\n') +f('sys/devices/virtual/graphics/fbcon/rotate', 0o644, b'0\n') +f('sys/devices/virtual/graphics/fbcon/uevent', 0o644, b'') +d('sys/devices/virtual/graphics/fbcon/power', 0o755) +f('sys/devices/virtual/graphics/fbcon/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty', 0o755) +d('sys/devices/virtual/tty/tty51', 0o755) +l('sys/devices/virtual/tty/tty51/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty51/dev', 0o644, b'4:51\n') +f('sys/devices/virtual/tty/tty51/uevent', 0o644, b'''MAJOR=4 +MINOR=51 +''') +d('sys/devices/virtual/tty/tty51/power', 0o755) +f('sys/devices/virtual/tty/tty51/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty24', 0o755) +l('sys/devices/virtual/tty/tty24/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty24/dev', 0o644, b'4:24\n') +f('sys/devices/virtual/tty/tty24/uevent', 0o644, b'''MAJOR=4 +MINOR=24 +''') +d('sys/devices/virtual/tty/tty24/power', 0o755) +f('sys/devices/virtual/tty/tty24/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty61', 0o755) +l('sys/devices/virtual/tty/tty61/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty61/dev', 0o644, b'4:61\n') +f('sys/devices/virtual/tty/tty61/uevent', 0o644, b'''MAJOR=4 +MINOR=61 +''') +d('sys/devices/virtual/tty/tty61/power', 0o755) +f('sys/devices/virtual/tty/tty61/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty40', 0o755) +l('sys/devices/virtual/tty/tty40/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty40/dev', 0o644, b'4:40\n') +f('sys/devices/virtual/tty/tty40/uevent', 0o644, b'''MAJOR=4 +MINOR=40 +''') +d('sys/devices/virtual/tty/tty40/power', 0o755) +f('sys/devices/virtual/tty/tty40/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty60', 0o755) +l('sys/devices/virtual/tty/tty60/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty60/dev', 0o644, b'4:60\n') +f('sys/devices/virtual/tty/tty60/uevent', 0o644, b'''MAJOR=4 +MINOR=60 +''') +d('sys/devices/virtual/tty/tty60/power', 0o755) +f('sys/devices/virtual/tty/tty60/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty15', 0o755) +l('sys/devices/virtual/tty/tty15/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty15/dev', 0o644, b'4:15\n') +f('sys/devices/virtual/tty/tty15/uevent', 0o644, b'''MAJOR=4 +MINOR=15 +''') +d('sys/devices/virtual/tty/tty15/power', 0o755) +f('sys/devices/virtual/tty/tty15/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty27', 0o755) +l('sys/devices/virtual/tty/tty27/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty27/dev', 0o644, b'4:27\n') +f('sys/devices/virtual/tty/tty27/uevent', 0o644, b'''MAJOR=4 +MINOR=27 +''') +d('sys/devices/virtual/tty/tty27/power', 0o755) +f('sys/devices/virtual/tty/tty27/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty7', 0o755) +l('sys/devices/virtual/tty/tty7/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty7/dev', 0o644, b'4:7\n') +f('sys/devices/virtual/tty/tty7/uevent', 0o644, b'''MAJOR=4 +MINOR=7 +''') +d('sys/devices/virtual/tty/tty7/power', 0o755) +f('sys/devices/virtual/tty/tty7/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty43', 0o755) +l('sys/devices/virtual/tty/tty43/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty43/dev', 0o644, b'4:43\n') +f('sys/devices/virtual/tty/tty43/uevent', 0o644, b'''MAJOR=4 +MINOR=43 +''') +d('sys/devices/virtual/tty/tty43/power', 0o755) +f('sys/devices/virtual/tty/tty43/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty23', 0o755) +l('sys/devices/virtual/tty/tty23/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty23/dev', 0o644, b'4:23\n') +f('sys/devices/virtual/tty/tty23/uevent', 0o644, b'''MAJOR=4 +MINOR=23 +''') +d('sys/devices/virtual/tty/tty23/power', 0o755) +f('sys/devices/virtual/tty/tty23/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty14', 0o755) +l('sys/devices/virtual/tty/tty14/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty14/dev', 0o644, b'4:14\n') +f('sys/devices/virtual/tty/tty14/uevent', 0o644, b'''MAJOR=4 +MINOR=14 +''') +d('sys/devices/virtual/tty/tty14/power', 0o755) +f('sys/devices/virtual/tty/tty14/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty56', 0o755) +l('sys/devices/virtual/tty/tty56/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty56/dev', 0o644, b'4:56\n') +f('sys/devices/virtual/tty/tty56/uevent', 0o644, b'''MAJOR=4 +MINOR=56 +''') +d('sys/devices/virtual/tty/tty56/power', 0o755) +f('sys/devices/virtual/tty/tty56/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty3', 0o755) +l('sys/devices/virtual/tty/tty3/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty3/dev', 0o644, b'4:3\n') +f('sys/devices/virtual/tty/tty3/uevent', 0o644, b'''MAJOR=4 +MINOR=3 +''') +d('sys/devices/virtual/tty/tty3/power', 0o755) +f('sys/devices/virtual/tty/tty3/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty49', 0o755) +l('sys/devices/virtual/tty/tty49/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty49/dev', 0o644, b'4:49\n') +f('sys/devices/virtual/tty/tty49/uevent', 0o644, b'''MAJOR=4 +MINOR=49 +''') +d('sys/devices/virtual/tty/tty49/power', 0o755) +f('sys/devices/virtual/tty/tty49/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty47', 0o755) +l('sys/devices/virtual/tty/tty47/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty47/dev', 0o644, b'4:47\n') +f('sys/devices/virtual/tty/tty47/uevent', 0o644, b'''MAJOR=4 +MINOR=47 +''') +d('sys/devices/virtual/tty/tty47/power', 0o755) +f('sys/devices/virtual/tty/tty47/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty57', 0o755) +l('sys/devices/virtual/tty/tty57/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty57/dev', 0o644, b'4:57\n') +f('sys/devices/virtual/tty/tty57/uevent', 0o644, b'''MAJOR=4 +MINOR=57 +''') +d('sys/devices/virtual/tty/tty57/power', 0o755) +f('sys/devices/virtual/tty/tty57/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty30', 0o755) +l('sys/devices/virtual/tty/tty30/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty30/dev', 0o644, b'4:30\n') +f('sys/devices/virtual/tty/tty30/uevent', 0o644, b'''MAJOR=4 +MINOR=30 +''') +d('sys/devices/virtual/tty/tty30/power', 0o755) +f('sys/devices/virtual/tty/tty30/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty45', 0o755) +l('sys/devices/virtual/tty/tty45/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty45/dev', 0o644, b'4:45\n') +f('sys/devices/virtual/tty/tty45/uevent', 0o644, b'''MAJOR=4 +MINOR=45 +''') +d('sys/devices/virtual/tty/tty45/power', 0o755) +f('sys/devices/virtual/tty/tty45/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty22', 0o755) +l('sys/devices/virtual/tty/tty22/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty22/dev', 0o644, b'4:22\n') +f('sys/devices/virtual/tty/tty22/uevent', 0o644, b'''MAJOR=4 +MINOR=22 +''') +d('sys/devices/virtual/tty/tty22/power', 0o755) +f('sys/devices/virtual/tty/tty22/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty55', 0o755) +l('sys/devices/virtual/tty/tty55/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty55/dev', 0o644, b'4:55\n') +f('sys/devices/virtual/tty/tty55/uevent', 0o644, b'''MAJOR=4 +MINOR=55 +''') +d('sys/devices/virtual/tty/tty55/power', 0o755) +f('sys/devices/virtual/tty/tty55/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty11', 0o755) +l('sys/devices/virtual/tty/tty11/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty11/dev', 0o644, b'4:11\n') +f('sys/devices/virtual/tty/tty11/uevent', 0o644, b'''MAJOR=4 +MINOR=11 +''') +d('sys/devices/virtual/tty/tty11/power', 0o755) +f('sys/devices/virtual/tty/tty11/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty53', 0o755) +l('sys/devices/virtual/tty/tty53/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty53/dev', 0o644, b'4:53\n') +f('sys/devices/virtual/tty/tty53/uevent', 0o644, b'''MAJOR=4 +MINOR=53 +''') +d('sys/devices/virtual/tty/tty53/power', 0o755) +f('sys/devices/virtual/tty/tty53/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty12', 0o755) +l('sys/devices/virtual/tty/tty12/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty12/dev', 0o644, b'4:12\n') +f('sys/devices/virtual/tty/tty12/uevent', 0o644, b'''MAJOR=4 +MINOR=12 +''') +d('sys/devices/virtual/tty/tty12/power', 0o755) +f('sys/devices/virtual/tty/tty12/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty28', 0o755) +l('sys/devices/virtual/tty/tty28/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty28/dev', 0o644, b'4:28\n') +f('sys/devices/virtual/tty/tty28/uevent', 0o644, b'''MAJOR=4 +MINOR=28 +''') +d('sys/devices/virtual/tty/tty28/power', 0o755) +f('sys/devices/virtual/tty/tty28/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty58', 0o755) +l('sys/devices/virtual/tty/tty58/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty58/dev', 0o644, b'4:58\n') +f('sys/devices/virtual/tty/tty58/uevent', 0o644, b'''MAJOR=4 +MINOR=58 +''') +d('sys/devices/virtual/tty/tty58/power', 0o755) +f('sys/devices/virtual/tty/tty58/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty32', 0o755) +l('sys/devices/virtual/tty/tty32/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty32/dev', 0o644, b'4:32\n') +f('sys/devices/virtual/tty/tty32/uevent', 0o644, b'''MAJOR=4 +MINOR=32 +''') +d('sys/devices/virtual/tty/tty32/power', 0o755) +f('sys/devices/virtual/tty/tty32/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty44', 0o755) +l('sys/devices/virtual/tty/tty44/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty44/dev', 0o644, b'4:44\n') +f('sys/devices/virtual/tty/tty44/uevent', 0o644, b'''MAJOR=4 +MINOR=44 +''') +d('sys/devices/virtual/tty/tty44/power', 0o755) +f('sys/devices/virtual/tty/tty44/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty6', 0o755) +l('sys/devices/virtual/tty/tty6/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty6/dev', 0o644, b'4:6\n') +f('sys/devices/virtual/tty/tty6/uevent', 0o644, b'''MAJOR=4 +MINOR=6 +''') +d('sys/devices/virtual/tty/tty6/power', 0o755) +f('sys/devices/virtual/tty/tty6/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty9', 0o755) +l('sys/devices/virtual/tty/tty9/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty9/dev', 0o644, b'4:9\n') +f('sys/devices/virtual/tty/tty9/uevent', 0o644, b'''MAJOR=4 +MINOR=9 +''') +d('sys/devices/virtual/tty/tty9/power', 0o755) +f('sys/devices/virtual/tty/tty9/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty26', 0o755) +l('sys/devices/virtual/tty/tty26/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty26/dev', 0o644, b'4:26\n') +f('sys/devices/virtual/tty/tty26/uevent', 0o644, b'''MAJOR=4 +MINOR=26 +''') +d('sys/devices/virtual/tty/tty26/power', 0o755) +f('sys/devices/virtual/tty/tty26/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty10', 0o755) +l('sys/devices/virtual/tty/tty10/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty10/dev', 0o644, b'4:10\n') +f('sys/devices/virtual/tty/tty10/uevent', 0o644, b'''MAJOR=4 +MINOR=10 +''') +d('sys/devices/virtual/tty/tty10/power', 0o755) +f('sys/devices/virtual/tty/tty10/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty39', 0o755) +l('sys/devices/virtual/tty/tty39/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty39/dev', 0o644, b'4:39\n') +f('sys/devices/virtual/tty/tty39/uevent', 0o644, b'''MAJOR=4 +MINOR=39 +''') +d('sys/devices/virtual/tty/tty39/power', 0o755) +f('sys/devices/virtual/tty/tty39/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty0', 0o755) +l('sys/devices/virtual/tty/tty0/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty0/dev', 0o644, b'4:0\n') +f('sys/devices/virtual/tty/tty0/uevent', 0o644, b'''MAJOR=4 +MINOR=0 +DEVNAME=tty0 +''') +d('sys/devices/virtual/tty/tty0/power', 0o755) +f('sys/devices/virtual/tty/tty0/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty36', 0o755) +l('sys/devices/virtual/tty/tty36/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty36/dev', 0o644, b'4:36\n') +f('sys/devices/virtual/tty/tty36/uevent', 0o644, b'''MAJOR=4 +MINOR=36 +''') +d('sys/devices/virtual/tty/tty36/power', 0o755) +f('sys/devices/virtual/tty/tty36/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty34', 0o755) +l('sys/devices/virtual/tty/tty34/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty34/dev', 0o644, b'4:34\n') +f('sys/devices/virtual/tty/tty34/uevent', 0o644, b'''MAJOR=4 +MINOR=34 +''') +d('sys/devices/virtual/tty/tty34/power', 0o755) +f('sys/devices/virtual/tty/tty34/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty16', 0o755) +l('sys/devices/virtual/tty/tty16/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty16/dev', 0o644, b'4:16\n') +f('sys/devices/virtual/tty/tty16/uevent', 0o644, b'''MAJOR=4 +MINOR=16 +''') +d('sys/devices/virtual/tty/tty16/power', 0o755) +f('sys/devices/virtual/tty/tty16/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty25', 0o755) +l('sys/devices/virtual/tty/tty25/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty25/dev', 0o644, b'4:25\n') +f('sys/devices/virtual/tty/tty25/uevent', 0o644, b'''MAJOR=4 +MINOR=25 +''') +d('sys/devices/virtual/tty/tty25/power', 0o755) +f('sys/devices/virtual/tty/tty25/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty13', 0o755) +l('sys/devices/virtual/tty/tty13/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty13/dev', 0o644, b'4:13\n') +f('sys/devices/virtual/tty/tty13/uevent', 0o644, b'''MAJOR=4 +MINOR=13 +''') +d('sys/devices/virtual/tty/tty13/power', 0o755) +f('sys/devices/virtual/tty/tty13/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty52', 0o755) +l('sys/devices/virtual/tty/tty52/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty52/dev', 0o644, b'4:52\n') +f('sys/devices/virtual/tty/tty52/uevent', 0o644, b'''MAJOR=4 +MINOR=52 +''') +d('sys/devices/virtual/tty/tty52/power', 0o755) +f('sys/devices/virtual/tty/tty52/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty31', 0o755) +l('sys/devices/virtual/tty/tty31/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty31/dev', 0o644, b'4:31\n') +f('sys/devices/virtual/tty/tty31/uevent', 0o644, b'''MAJOR=4 +MINOR=31 +''') +d('sys/devices/virtual/tty/tty31/power', 0o755) +f('sys/devices/virtual/tty/tty31/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty35', 0o755) +l('sys/devices/virtual/tty/tty35/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty35/dev', 0o644, b'4:35\n') +f('sys/devices/virtual/tty/tty35/uevent', 0o644, b'''MAJOR=4 +MINOR=35 +''') +d('sys/devices/virtual/tty/tty35/power', 0o755) +f('sys/devices/virtual/tty/tty35/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty54', 0o755) +l('sys/devices/virtual/tty/tty54/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty54/dev', 0o644, b'4:54\n') +f('sys/devices/virtual/tty/tty54/uevent', 0o644, b'''MAJOR=4 +MINOR=54 +''') +d('sys/devices/virtual/tty/tty54/power', 0o755) +f('sys/devices/virtual/tty/tty54/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty63', 0o755) +l('sys/devices/virtual/tty/tty63/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty63/dev', 0o644, b'4:63\n') +f('sys/devices/virtual/tty/tty63/uevent', 0o644, b'''MAJOR=4 +MINOR=63 +''') +d('sys/devices/virtual/tty/tty63/power', 0o755) +f('sys/devices/virtual/tty/tty63/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty1', 0o755) +l('sys/devices/virtual/tty/tty1/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty1/dev', 0o644, b'4:1\n') +f('sys/devices/virtual/tty/tty1/uevent', 0o644, b'''MAJOR=4 +MINOR=1 +''') +d('sys/devices/virtual/tty/tty1/power', 0o755) +f('sys/devices/virtual/tty/tty1/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty33', 0o755) +l('sys/devices/virtual/tty/tty33/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty33/dev', 0o644, b'4:33\n') +f('sys/devices/virtual/tty/tty33/uevent', 0o644, b'''MAJOR=4 +MINOR=33 +DEVNAME=tty33 +''') +d('sys/devices/virtual/tty/tty33/power', 0o755) +f('sys/devices/virtual/tty/tty33/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty18', 0o755) +l('sys/devices/virtual/tty/tty18/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty18/dev', 0o644, b'4:18\n') +f('sys/devices/virtual/tty/tty18/uevent', 0o644, b'''MAJOR=4 +MINOR=18 +''') +d('sys/devices/virtual/tty/tty18/power', 0o755) +f('sys/devices/virtual/tty/tty18/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty42', 0o755) +l('sys/devices/virtual/tty/tty42/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty42/dev', 0o644, b'4:42\n') +f('sys/devices/virtual/tty/tty42/uevent', 0o644, b'''MAJOR=4 +MINOR=42 +''') +d('sys/devices/virtual/tty/tty42/power', 0o755) +f('sys/devices/virtual/tty/tty42/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty8', 0o755) +l('sys/devices/virtual/tty/tty8/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty8/dev', 0o644, b'4:8\n') +f('sys/devices/virtual/tty/tty8/uevent', 0o644, b'''MAJOR=4 +MINOR=8 +''') +d('sys/devices/virtual/tty/tty8/power', 0o755) +f('sys/devices/virtual/tty/tty8/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty37', 0o755) +l('sys/devices/virtual/tty/tty37/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty37/dev', 0o644, b'4:37\n') +f('sys/devices/virtual/tty/tty37/uevent', 0o644, b'''MAJOR=4 +MINOR=37 +''') +d('sys/devices/virtual/tty/tty37/power', 0o755) +f('sys/devices/virtual/tty/tty37/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty5', 0o755) +l('sys/devices/virtual/tty/tty5/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty5/dev', 0o644, b'4:5\n') +f('sys/devices/virtual/tty/tty5/uevent', 0o644, b'''MAJOR=4 +MINOR=5 +''') +d('sys/devices/virtual/tty/tty5/power', 0o755) +f('sys/devices/virtual/tty/tty5/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty48', 0o755) +l('sys/devices/virtual/tty/tty48/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty48/dev', 0o644, b'4:48\n') +f('sys/devices/virtual/tty/tty48/uevent', 0o644, b'''MAJOR=4 +MINOR=48 +''') +d('sys/devices/virtual/tty/tty48/power', 0o755) +f('sys/devices/virtual/tty/tty48/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty17', 0o755) +l('sys/devices/virtual/tty/tty17/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty17/dev', 0o644, b'4:17\n') +f('sys/devices/virtual/tty/tty17/uevent', 0o644, b'''MAJOR=4 +MINOR=17 +''') +d('sys/devices/virtual/tty/tty17/power', 0o755) +f('sys/devices/virtual/tty/tty17/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty62', 0o755) +l('sys/devices/virtual/tty/tty62/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty62/dev', 0o644, b'4:62\n') +f('sys/devices/virtual/tty/tty62/uevent', 0o644, b'''MAJOR=4 +MINOR=62 +''') +d('sys/devices/virtual/tty/tty62/power', 0o755) +f('sys/devices/virtual/tty/tty62/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty59', 0o755) +l('sys/devices/virtual/tty/tty59/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty59/dev', 0o644, b'4:59\n') +f('sys/devices/virtual/tty/tty59/uevent', 0o644, b'''MAJOR=4 +MINOR=59 +''') +d('sys/devices/virtual/tty/tty59/power', 0o755) +f('sys/devices/virtual/tty/tty59/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty50', 0o755) +l('sys/devices/virtual/tty/tty50/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty50/dev', 0o644, b'4:50\n') +f('sys/devices/virtual/tty/tty50/uevent', 0o644, b'''MAJOR=4 +MINOR=50 +''') +d('sys/devices/virtual/tty/tty50/power', 0o755) +f('sys/devices/virtual/tty/tty50/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty21', 0o755) +l('sys/devices/virtual/tty/tty21/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty21/dev', 0o644, b'4:21\n') +f('sys/devices/virtual/tty/tty21/uevent', 0o644, b'''MAJOR=4 +MINOR=21 +''') +d('sys/devices/virtual/tty/tty21/power', 0o755) +f('sys/devices/virtual/tty/tty21/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty19', 0o755) +l('sys/devices/virtual/tty/tty19/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty19/dev', 0o644, b'4:19\n') +f('sys/devices/virtual/tty/tty19/uevent', 0o644, b'''MAJOR=4 +MINOR=19 +''') +d('sys/devices/virtual/tty/tty19/power', 0o755) +f('sys/devices/virtual/tty/tty19/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/ptmx', 0o755) +l('sys/devices/virtual/tty/ptmx/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/ptmx/dev', 0o644, b'5:2\n') +f('sys/devices/virtual/tty/ptmx/uevent', 0o644, b'''MAJOR=5 +MINOR=2 +''') +d('sys/devices/virtual/tty/ptmx/power', 0o755) +f('sys/devices/virtual/tty/ptmx/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty46', 0o755) +l('sys/devices/virtual/tty/tty46/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty46/dev', 0o644, b'4:46\n') +f('sys/devices/virtual/tty/tty46/uevent', 0o644, b'''MAJOR=4 +MINOR=46 +''') +d('sys/devices/virtual/tty/tty46/power', 0o755) +f('sys/devices/virtual/tty/tty46/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty2', 0o755) +l('sys/devices/virtual/tty/tty2/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty2/dev', 0o644, b'4:2\n') +f('sys/devices/virtual/tty/tty2/uevent', 0o644, b'''MAJOR=4 +MINOR=2 +''') +d('sys/devices/virtual/tty/tty2/power', 0o755) +f('sys/devices/virtual/tty/tty2/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/console', 0o755) +l('sys/devices/virtual/tty/console/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/console/dev', 0o644, b'5:1\n') +f('sys/devices/virtual/tty/console/uevent', 0o644, b'''MAJOR=5 +MINOR=1 +DEVNAME=console +''') +d('sys/devices/virtual/tty/console/power', 0o755) +f('sys/devices/virtual/tty/console/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty41', 0o755) +l('sys/devices/virtual/tty/tty41/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty41/dev', 0o644, b'4:41\n') +f('sys/devices/virtual/tty/tty41/uevent', 0o644, b'''MAJOR=4 +MINOR=41 +''') +d('sys/devices/virtual/tty/tty41/power', 0o755) +f('sys/devices/virtual/tty/tty41/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty4', 0o755) +l('sys/devices/virtual/tty/tty4/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty4/dev', 0o644, b'4:4\n') +f('sys/devices/virtual/tty/tty4/uevent', 0o644, b'''MAJOR=4 +MINOR=4 +''') +d('sys/devices/virtual/tty/tty4/power', 0o755) +f('sys/devices/virtual/tty/tty4/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty29', 0o755) +l('sys/devices/virtual/tty/tty29/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty29/dev', 0o644, b'4:29\n') +f('sys/devices/virtual/tty/tty29/uevent', 0o644, b'''MAJOR=4 +MINOR=29 +''') +d('sys/devices/virtual/tty/tty29/power', 0o755) +f('sys/devices/virtual/tty/tty29/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty', 0o755) +l('sys/devices/virtual/tty/tty/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty/dev', 0o644, b'5:0\n') +f('sys/devices/virtual/tty/tty/uevent', 0o644, b'''MAJOR=5 +MINOR=0 +''') +d('sys/devices/virtual/tty/tty/power', 0o755) +f('sys/devices/virtual/tty/tty/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty38', 0o755) +l('sys/devices/virtual/tty/tty38/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty38/dev', 0o644, b'4:38\n') +f('sys/devices/virtual/tty/tty38/uevent', 0o644, b'''MAJOR=4 +MINOR=38 +''') +d('sys/devices/virtual/tty/tty38/power', 0o755) +f('sys/devices/virtual/tty/tty38/power/wakeup', 0o644, b'\n') +d('sys/devices/virtual/tty/tty20', 0o755) +l('sys/devices/virtual/tty/tty20/subsystem', '../../../../class/tty') +f('sys/devices/virtual/tty/tty20/dev', 0o644, b'4:20\n') +f('sys/devices/virtual/tty/tty20/uevent', 0o644, b'''MAJOR=4 +MINOR=20 +''') +d('sys/devices/virtual/tty/tty20/power', 0o755) +f('sys/devices/virtual/tty/tty20/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00', 0o755) +l('sys/devices/LNXSYSTM:00/subsystem', '../../bus/acpi') +f('sys/devices/LNXSYSTM:00/hid', 0o644, b'LNXSYSTM\n') +f('sys/devices/LNXSYSTM:00/modalias', 0o644, b'acpi:LNXSYSTM:\n') +f('sys/devices/LNXSYSTM:00/path', 0o644, b'\\\n') +f('sys/devices/LNXSYSTM:00/uevent', 0o644, b'MODALIAS=acpi:LNXSYSTM:\n') +d('sys/devices/LNXSYSTM:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/ACPI0007:01', 0o755) +l('sys/devices/LNXSYSTM:00/ACPI0007:01/thermal_cooling', '../../virtual/thermal/cooling_device1') +l('sys/devices/LNXSYSTM:00/ACPI0007:01/subsystem', '../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/ACPI0007:01/sysdev', '../../system/cpu/cpu1') +l('sys/devices/LNXSYSTM:00/ACPI0007:01/driver', '../../../bus/acpi/drivers/processor') +f('sys/devices/LNXSYSTM:00/ACPI0007:01/hid', 0o644, b'ACPI0007\n') +f('sys/devices/LNXSYSTM:00/ACPI0007:01/modalias', 0o644, b'acpi:ACPI0007:\n') +f('sys/devices/LNXSYSTM:00/ACPI0007:01/path', 0o644, b'\\_PR_.CPU1\n') +f('sys/devices/LNXSYSTM:00/ACPI0007:01/uevent', 0o644, b'''DRIVER=processor +MODALIAS=acpi:ACPI0007: +''') +d('sys/devices/LNXSYSTM:00/ACPI0007:01/power', 0o755) +f('sys/devices/LNXSYSTM:00/ACPI0007:01/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/LNXTHERM:00', 0o755) +l('sys/devices/LNXSYSTM:00/LNXTHERM:00/subsystem', '../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/hid', 0o644, b'LNXTHERM\n') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/modalias', 0o644, b'acpi:LNXTHERM:\n') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/path', 0o644, b'\\_TZ_\n') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/uevent', 0o644, b'MODALIAS=acpi:LNXTHERM:\n') +d('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01', 0o755) +l('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01/thermal_zone', '../../../virtual/thermal/thermal_zone0') +l('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01/driver', '../../../../bus/acpi/drivers/thermal') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01/hid', 0o644, b'LNXTHERM\n') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01/modalias', 0o644, b'acpi:LNXTHERM:\n') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01/path', 0o644, b'\\_TZ_.THM0\n') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01/uevent', 0o644, b'''DRIVER=thermal +MODALIAS=acpi:LNXTHERM: +''') +d('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01/power', 0o755) +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/LNXTHERM:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02', 0o755) +l('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02/thermal_zone', '../../../virtual/thermal/thermal_zone1') +l('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02/driver', '../../../../bus/acpi/drivers/thermal') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02/hid', 0o644, b'LNXTHERM\n') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02/modalias', 0o644, b'acpi:LNXTHERM:\n') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02/path', 0o644, b'\\_TZ_.THM1\n') +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02/uevent', 0o644, b'''DRIVER=thermal +MODALIAS=acpi:LNXTHERM: +''') +d('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02/power', 0o755) +f('sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:02/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/subsystem', '../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/path', 0o644, b'\\_SB_\n') +f('sys/devices/LNXSYSTM:00/device:00/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:05', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:05/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:05/driver', '../../../../bus/acpi/drivers/pci_link') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:05/hid', 0o644, b'PNP0C0F\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:05/modalias', 0o644, b'acpi:PNP0C0F:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:05/path', 0o644, b'\\_SB_.LNKF\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:05/uevent', 0o644, b'''DRIVER=pci_link +MODALIAS=acpi:PNP0C0F: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:05/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:05/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/driver', '../../../../bus/acpi/drivers/button') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/hid', 0o644, b'PNP0C0E\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/modalias', 0o644, b'acpi:PNP0C0E:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/path', 0o644, b'\\_SB_.SLPB\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/uevent', 0o644, b'''DRIVER=button +MODALIAS=acpi:PNP0C0E: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input', 0o755) +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/subsystem', '../../../../../../class/input') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/device', '../../../PNP0C0E:00') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/uniq', 0o644, b'\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/phys', 0o644, b'PNP0C0E/button/input0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/modalias', 0o644, b'input:b0019v0000p0003e0000-e0,1,k8E,ramlsfw\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/name', 0o644, b'Sleep Button (CM)\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/uevent', 0o644, b'''PRODUCT=19/0/3/0 +NAME="Sleep Button (CM)" +PHYS="PNP0C0E/button/input0" +EV==3 +KEY==4000 0 0 +MODALIAS=input:b0019v0000p0003e0000-e0,1,k8E,ramlsfw +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/id', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/id/version', 0o644, b'0000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/id/product', 0o644, b'0003\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/id/vendor', 0o644, b'0000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/id/bustype', 0o644, b'0019\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/event5', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/event5/subsystem', '../../../../../../../class/input') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/event5/device', '../../input5') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/event5/dev', 0o644, b'13:69\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/event5/uevent', 0o644, b'''MAJOR=13 +MINOR=69 +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/event5/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/event5/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/capabilities', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/capabilities/msc', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/capabilities/abs', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/capabilities/snd', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/capabilities/ff', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/capabilities/key', 0o644, b'4000 0 0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/capabilities/rel', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/capabilities/sw', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/capabilities/ev', 0o644, b'3\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5/capabilities/led', 0o644, b'0\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/physical_node', '../../../pci0000:00') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/driver', '../../../../bus/acpi/drivers/pci_root') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/hid', 0o644, b'PNP0A08\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/modalias', 0o644, b'acpi:PNP0A08:PNP0A03:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/path', 0o644, b'\\_SB_.PCI0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/uevent', 0o644, b'''DRIVER=pci_root +MODALIAS=acpi:PNP0A08:PNP0A03: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/physical_node', '../../../../pci0000:00/0000:00:1e.0') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/path', 0o644, b'\\_SB_.PCI0.PCI1\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/device:12', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/device:12/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/device:12/physical_node', '../../../../../pci0000:00/0000:00:1e.0/0000:15:00.0') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/device:12/path', 0o644, b'\\_SB_.PCI0.PCI1.CDBS\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/device:12/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/device:12/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:11/device:12/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/physical_node', '../../../../pci0000:00/0000:00:1d.7') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/path', 0o644, b'\\_SB_.PCI0.USB7\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/path', 0o644, b'\\_SB_.PCI0.USB7.URTH\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:23', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:23/subsystem', '../../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:23/path', 0o644, b'\\_SB_.PCI0.USB7.URTH.UPDK\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:23/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:23/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:23/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:24', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:24/subsystem', '../../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:24/path', 0o644, b'\\_SB_.PCI0.USB7.URTH.UPEX\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:24/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:24/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:21/device:22/device:24/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0b', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0b/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0b/physical_node', '../../../../pci0000:00/0000:00:1c.0') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0b/path', 0o644, b'\\_SB_.PCI0.EXP0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0b/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0b/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0b/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/physical_node', '../../../../pci0000:00/0000:00:01.0') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/path', 0o644, b'\\_SB_.PCI0.AGP_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/physical_node', '../../../../../pci0000:00/0000:00:01.0/0000:01:00.0') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/modalias', 0o644, b'acpi:LNXVIDEO:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/path', 0o644, b'\\_SB_.PCI0.AGP_.VID_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/uevent', 0o644, b'MODALIAS=acpi:LNXVIDEO:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:08', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:08/subsystem', '../../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:08/path', 0o644, b'\\_SB_.PCI0.AGP_.VID_.LCD0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:08/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:08/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:08/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:09', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:09/subsystem', '../../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:09/path', 0o644, b'\\_SB_.PCI0.AGP_.VID_.CRT0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:09/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:09/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:09/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:0a', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:0a/subsystem', '../../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:0a/path', 0o644, b'\\_SB_.PCI0.AGP_.VID_.DVI0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:0a/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:0a/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:06/device:07/device:0a/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:18', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:18/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:18/physical_node', '../../../../pci0000:00/0000:00:1f.3') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:18/path', 0o644, b'\\_SB_.PCI0.SMBU\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:18/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:18/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:18/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0c', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0c/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0c/physical_node', '../../../../pci0000:00/0000:00:1c.1') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0c/path', 0o644, b'\\_SB_.PCI0.EXP1\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0c/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0c/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0c/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/subsystem', '../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/modalias', 0o644, b'acpi:LNXVIDEO:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/path', 0o644, b'\\_SB_.PCI0.VID_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/uevent', 0o644, b'MODALIAS=acpi:LNXVIDEO:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:04', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:04/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:04/path', 0o644, b'\\_SB_.PCI0.VID_.CRT0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:04/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:04/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:04/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:05', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:05/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:05/path', 0o644, b'\\_SB_.PCI0.VID_.DVI0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:05/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:05/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:05/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:03', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:03/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:03/path', 0o644, b'\\_SB_.PCI0.VID_.LCD0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:03/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:03/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/device:03/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/physical_node', '../../../../pci0000:00/0000:00:1f.1') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/path', 0o644, b'\\_SB_.PCI0.IDE0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/path', 0o644, b'\\_SB_.PCI0.IDE0.PRIM\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/device:15', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/device:15/subsystem', '../../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/device:15/modalias', 0o644, b'acpi:LNXIOBAY:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/device:15/path', 0o644, b'\\_SB_.PCI0.IDE0.PRIM.MSTR\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/device:15/uevent', 0o644, b'MODALIAS=acpi:LNXIOBAY:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/device:15/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:13/device:14/device:15/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/physical_node', '../../../../pci0000:00/0000:00:1d.2') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/path', 0o644, b'\\_SB_.PCI0.USB2\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/path', 0o644, b'\\_SB_.PCI0.USB2.URTH\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/device:1f', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/device:1f/subsystem', '../../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/device:1f/path', 0o644, b'\\_SB_.PCI0.USB2.URTH.UPDK\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/device:1f/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/device:1f/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/device:1f/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1d/device:1e/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:19', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:19/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:19/physical_node', '../../../../pci0000:00/0000:00:1d.0') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:19/path', 0o644, b'\\_SB_.PCI0.USB0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:19/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:19/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:19/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/physical_node', '../../../../pci0000:00/0000:00:1d.1') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/path', 0o644, b'\\_SB_.PCI0.USB1\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/path', 0o644, b'\\_SB_.PCI0.USB1.URTH\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/device:1c', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/device:1c/subsystem', '../../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/device:1c/path', 0o644, b'\\_SB_.PCI0.USB1.URTH.UPEX\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/device:1c/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/device:1c/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/device:1c/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:1a/device:1b/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/physical_node', '../../../../pci0000:00/0000:00:1c.2') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/path', 0o644, b'\\_SB_.PCI0.EXP2\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/device:0e', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/device:0e/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/device:0e/path', 0o644, b'\\_SB_.PCI0.EXP2.EXUP\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/device:0e/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/device:0e/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/device:0e/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:25', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:25/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:25/physical_node', '../../../../pci0000:00/0000:00:1b.0') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:25/path', 0o644, b'\\_SB_.PCI0.HDEF\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:25/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:25/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:25/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/physical_node', '../../../../pci0000:00/0000:00:1f.0') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/path', 0o644, b'\\_SB_.PCI0.LPC_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0000:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0000:00/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0000:00/hid', 0o644, b'PNP0000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0000:00/modalias', 0o644, b'acpi:PNP0000:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0000:00/path', 0o644, b'\\_SB_.PCI0.LPC_.PIC_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0000:00/uevent', 0o644, b'MODALIAS=acpi:PNP0000:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0000:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0000:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00/physical_node', '../../../../../pnp0/00:03') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00/hid', 0o644, b'PNP0103\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00/modalias', 0o644, b'acpi:PNP0103:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00/path', 0o644, b'\\_SB_.PCI0.LPC_.HPET\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00/uevent', 0o644, b'MODALIAS=acpi:PNP0103:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0103:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00/physical_node', '../../../../../pnp0/00:0a') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00/hid', 0o644, b'ATM1200\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00/modalias', 0o644, b'acpi:ATM1200:PNP0C31:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00/path', 0o644, b'\\_SB_.PCI0.LPC_.TPM_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00/uevent', 0o644, b'MODALIAS=acpi:ATM1200:PNP0C31:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/ATM1200:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00/physical_node', '../../../../../pnp0/00:08') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00/hid', 0o644, b'PNP0303\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00/modalias', 0o644, b'acpi:PNP0303:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00/path', 0o644, b'\\_SB_.PCI0.LPC_.KBD_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00/uevent', 0o644, b'MODALIAS=acpi:PNP0303:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0303:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00/physical_node', '../../../../../pnp0/00:06') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00/hid', 0o644, b'PNP0C04\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00/modalias', 0o644, b'acpi:PNP0C04:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00/path', 0o644, b'\\_SB_.PCI0.LPC_.FPU_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00/uevent', 0o644, b'MODALIAS=acpi:PNP0C04:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C04:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00/physical_node', '../../../../../pnp0/00:05') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00/hid', 0o644, b'PNP0800\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00/modalias', 0o644, b'acpi:PNP0800:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00/path', 0o644, b'\\_SB_.PCI0.LPC_.SPKR\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00/uevent', 0o644, b'MODALIAS=acpi:PNP0800:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0800:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00/physical_node', '../../../../../pnp0/00:02') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00/hid', 0o644, b'PNP0C02\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00/modalias', 0o644, b'acpi:PNP0C02:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00/path', 0o644, b'\\_SB_.PCI0.LPC_.SIO_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00/uevent', 0o644, b'MODALIAS=acpi:PNP0C02:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C02:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0100:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0100:00/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0100:00/hid', 0o644, b'PNP0100\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0100:00/modalias', 0o644, b'acpi:PNP0100:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0100:00/path', 0o644, b'\\_SB_.PCI0.LPC_.TIMR\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0100:00/uevent', 0o644, b'MODALIAS=acpi:PNP0100:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0100:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0100:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/driver', '../../../../../../bus/acpi/drivers/ec') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/hid', 0o644, b'PNP0C09\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/modalias', 0o644, b'acpi:PNP0C09:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/path', 0o644, b'\\_SB_.PCI0.LPC_.EC__\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/uevent', 0o644, b'''DRIVER=ec +MODALIAS=acpi:PNP0C09: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00/subsystem', '../../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00/driver', '../../../../../../../bus/acpi/drivers/power') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00/hid', 0o644, b'LNXPOWER\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00/modalias', 0o644, b'acpi:LNXPOWER:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00/path', 0o644, b'\\_SB_.PCI0.LPC_.EC__.PUBS\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00/uevent', 0o644, b'''DRIVER=power +MODALIAS=acpi:LNXPOWER: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/LNXPOWER:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/subsystem', '../../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/driver', '../../../../../../../bus/acpi/drivers/ac') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/hid', 0o644, b'ACPI0003\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/modalias', 0o644, b'acpi:ACPI0003:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/path', 0o644, b'\\_SB_.PCI0.LPC_.EC__.AC__\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/uevent', 0o644, b'''DRIVER=ac +MODALIAS=acpi:ACPI0003: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power_supply', 0o755) +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power_supply/AC', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power_supply/AC/subsystem', '../../../../../../../../../class/power_supply') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power_supply/AC/device', '../../../ACPI0003:00') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power_supply/AC/type', 0o644, b'Mains\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power_supply/AC/online', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power_supply/AC/uevent', 0o644, b'''POWER_SUPPLY_NAME=AC +POWER_SUPPLY_TYPE=Mains +POWER_SUPPLY_ONLINE=0 +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power_supply/AC/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/subsystem', '../../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/driver', '../../../../../../../bus/acpi/drivers/battery') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/hid', 0o644, b'PNP0C0A\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/modalias', 0o644, b'acpi:PNP0C0A:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/path', 0o644, b'\\_SB_.PCI0.LPC_.EC__.BAT0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/uevent', 0o644, b'''DRIVER=battery +MODALIAS=acpi:PNP0C0A: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply', 0o755) +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/subsystem', '../../../../../../../../../class/power_supply') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/device', '../../../PNP0C0A:00') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/model_name', 0o644, b'42T5245\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/voltage_min_design', 0o644, b'10800000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/type', 0o644, b'Battery\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/current_now', 0o644, b'25830000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/energy_now', 0o644, b'59980000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/technology', 0o644, b'Li-ion\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/voltage_now', 0o644, b'12207000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/energy_full_design', 0o644, b'84240000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/serial_number', 0o644, b' 6463\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/present', 0o644, b'1\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/alarm', 0o644, b'3075000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/uevent', 0o644, b'''POWER_SUPPLY_NAME=BAT0 +POWER_SUPPLY_TYPE=Battery +POWER_SUPPLY_STATUS=Discharging +POWER_SUPPLY_PRESENT=1 +POWER_SUPPLY_TECHNOLOGY=Li-ion +POWER_SUPPLY_VOLTAGE_MIN_DESIGN=10800000 +POWER_SUPPLY_VOLTAGE_NOW=12207000 +POWER_SUPPLY_CURRENT_NOW=25830000 +POWER_SUPPLY_ENERGY_FULL_DESIGN=84240000 +POWER_SUPPLY_ENERGY_FULL=61510000 +POWER_SUPPLY_ENERGY_NOW=59980000 +POWER_SUPPLY_MODEL_NAME=42T5245 +POWER_SUPPLY_MANUFACTURER=SANYO +POWER_SUPPLY_SERIAL_NUMBER= 6463 +''') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/manufacturer', 0o644, b'SANYO\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/energy_full', 0o644, b'61510000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/status', 0o644, b'Discharging\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00/subsystem', '../../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00/driver', '../../../../../../../bus/acpi/drivers/thinkpad_hotkey') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00/hid', 0o644, b'IBM0068\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00/modalias', 0o644, b'acpi:IBM0068:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00/path', 0o644, b'\\_SB_.PCI0.LPC_.EC__.HKEY\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00/uevent', 0o644, b'''DRIVER=thinkpad_hotkey +MODALIAS=acpi:IBM0068: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/IBM0068:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00/physical_node', '../../../../../pnp0/00:04') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00/hid', 0o644, b'PNP0200\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00/modalias', 0o644, b'acpi:PNP0200:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00/path', 0o644, b'\\_SB_.PCI0.LPC_.DMAC\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00/uevent', 0o644, b'MODALIAS=acpi:PNP0200:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0200:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00/physical_node', '../../../../../pnp0/00:09') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00/hid', 0o644, b'IBM0057\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00/modalias', 0o644, b'acpi:IBM0057:PNP0F13:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00/path', 0o644, b'\\_SB_.PCI0.LPC_.MOU_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00/uevent', 0o644, b'MODALIAS=acpi:IBM0057:PNP0F13:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/IBM0057:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00/subsystem', '../../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00/physical_node', '../../../../../pnp0/00:07') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00/hid', 0o644, b'PNP0B00\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00/modalias', 0o644, b'acpi:PNP0B00:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00/path', 0o644, b'\\_SB_.PCI0.LPC_.RTC_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00/uevent', 0o644, b'MODALIAS=acpi:PNP0B00:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0B00:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:20', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:20/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:20/physical_node', '../../../../pci0000:00/0000:00:1d.3') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:20/path', 0o644, b'\\_SB_.PCI0.USB3\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:20/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:20/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:20/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/physical_node', '../../../../pci0000:00/0000:00:1c.3') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/path', 0o644, b'\\_SB_.PCI0.EXP3\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/device:10', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/device:10/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/device:10/path', 0o644, b'\\_SB_.PCI0.EXP3.EXPD\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/device:10/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/device:10/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0f/device:10/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/subsystem', '../../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/physical_node', '../../../../pci0000:00/0000:00:1f.2') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/path', 0o644, b'\\_SB_.PCI0.SATA\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/device:17', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/device:17/subsystem', '../../../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/device:17/path', 0o644, b'\\_SB_.PCI0.SATA.PRT0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/device:17/uevent', 0o644, b'') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/device:17/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/device:17/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:16/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/IBM0079:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/IBM0079:00/subsystem', '../../../../bus/acpi') +f('sys/devices/LNXSYSTM:00/device:00/IBM0079:00/hid', 0o644, b'IBM0079\n') +f('sys/devices/LNXSYSTM:00/device:00/IBM0079:00/modalias', 0o644, b'acpi:IBM0079:PNP0C15:LNXDOCK:\n') +f('sys/devices/LNXSYSTM:00/device:00/IBM0079:00/path', 0o644, b'\\_SB_.GDCK\n') +f('sys/devices/LNXSYSTM:00/device:00/IBM0079:00/uevent', 0o644, b'MODALIAS=acpi:IBM0079:PNP0C15:LNXDOCK:\n') +d('sys/devices/LNXSYSTM:00/device:00/IBM0079:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/IBM0079:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/driver', '../../../../bus/acpi/drivers/button') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/hid', 0o644, b'PNP0C0D\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/modalias', 0o644, b'acpi:PNP0C0D:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/path', 0o644, b'\\_SB_.LID_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/uevent', 0o644, b'''DRIVER=button +MODALIAS=acpi:PNP0C0D: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input', 0o755) +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/subsystem', '../../../../../../class/input') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/device', '../../../PNP0C0D:00') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/uniq', 0o644, b'\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/phys', 0o644, b'PNP0C0D/button/input0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/modalias', 0o644, b'input:b0019v0000p0005e0000-e0,5,kramlsfw0,\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/name', 0o644, b'Lid Switch\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/uevent', 0o644, b'''PRODUCT=19/0/5/0 +NAME="Lid Switch" +PHYS="PNP0C0D/button/input0" +EV==21 +SW==1 +MODALIAS=input:b0019v0000p0005e0000-e0,5,kramlsfw0, +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/event4', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/event4/subsystem', '../../../../../../../class/input') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/event4/device', '../../input4') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/event4/dev', 0o644, b'13:68\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/event4/uevent', 0o644, b'''MAJOR=13 +MINOR=68 +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/event4/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/event4/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/id', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/id/version', 0o644, b'0000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/id/product', 0o644, b'0005\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/id/vendor', 0o644, b'0000\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/id/bustype', 0o644, b'0019\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/capabilities', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/capabilities/msc', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/capabilities/abs', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/capabilities/snd', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/capabilities/ff', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/capabilities/key', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/capabilities/rel', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/capabilities/sw', 0o644, b'1\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/capabilities/ev', 0o644, b'21\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input4/capabilities/led', 0o644, b'0\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C01:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C01:00/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C01:00/physical_node', '../../../pnp0/00:00') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C01:00/hid', 0o644, b'PNP0C01\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C01:00/modalias', 0o644, b'acpi:PNP0C01:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C01:00/path', 0o644, b'\\_SB_.MEM_\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C01:00/uevent', 0o644, b'MODALIAS=acpi:PNP0C01:\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C01:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C01:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:07', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:07/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:07/driver', '../../../../bus/acpi/drivers/pci_link') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:07/hid', 0o644, b'PNP0C0F\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:07/modalias', 0o644, b'acpi:PNP0C0F:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:07/path', 0o644, b'\\_SB_.LNKH\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:07/uevent', 0o644, b'''DRIVER=pci_link +MODALIAS=acpi:PNP0C0F: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:07/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:07/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:04', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:04/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:04/driver', '../../../../bus/acpi/drivers/pci_link') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:04/hid', 0o644, b'PNP0C0F\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:04/modalias', 0o644, b'acpi:PNP0C0F:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:04/path', 0o644, b'\\_SB_.LNKE\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:04/uevent', 0o644, b'''DRIVER=pci_link +MODALIAS=acpi:PNP0C0F: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:04/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:04/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:02', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:02/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:02/driver', '../../../../bus/acpi/drivers/pci_link') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:02/hid', 0o644, b'PNP0C0F\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:02/modalias', 0o644, b'acpi:PNP0C0F:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:02/path', 0o644, b'\\_SB_.LNKC\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:02/uevent', 0o644, b'''DRIVER=pci_link +MODALIAS=acpi:PNP0C0F: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:02/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:02/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:00', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:00/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:00/driver', '../../../../bus/acpi/drivers/pci_link') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:00/hid', 0o644, b'PNP0C0F\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:00/modalias', 0o644, b'acpi:PNP0C0F:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:00/path', 0o644, b'\\_SB_.LNKA\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:00/uevent', 0o644, b'''DRIVER=pci_link +MODALIAS=acpi:PNP0C0F: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:01', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:01/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:01/driver', '../../../../bus/acpi/drivers/pci_link') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:01/hid', 0o644, b'PNP0C0F\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:01/modalias', 0o644, b'acpi:PNP0C0F:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:01/path', 0o644, b'\\_SB_.LNKB\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:01/uevent', 0o644, b'''DRIVER=pci_link +MODALIAS=acpi:PNP0C0F: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:01/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:01/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:06', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:06/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:06/driver', '../../../../bus/acpi/drivers/pci_link') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:06/hid', 0o644, b'PNP0C0F\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:06/modalias', 0o644, b'acpi:PNP0C0F:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:06/path', 0o644, b'\\_SB_.LNKG\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:06/uevent', 0o644, b'''DRIVER=pci_link +MODALIAS=acpi:PNP0C0F: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:06/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:06/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:03', 0o755) +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:03/subsystem', '../../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:03/driver', '../../../../bus/acpi/drivers/pci_link') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:03/hid', 0o644, b'PNP0C0F\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:03/modalias', 0o644, b'acpi:PNP0C0F:\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:03/path', 0o644, b'\\_SB_.LNKD\n') +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:03/uevent', 0o644, b'''DRIVER=pci_link +MODALIAS=acpi:PNP0C0F: +''') +d('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:03/power', 0o755) +f('sys/devices/LNXSYSTM:00/device:00/PNP0C0F:03/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/ACPI0007:00', 0o755) +l('sys/devices/LNXSYSTM:00/ACPI0007:00/thermal_cooling', '../../virtual/thermal/cooling_device0') +l('sys/devices/LNXSYSTM:00/ACPI0007:00/subsystem', '../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/ACPI0007:00/sysdev', '../../system/cpu/cpu0') +l('sys/devices/LNXSYSTM:00/ACPI0007:00/driver', '../../../bus/acpi/drivers/processor') +f('sys/devices/LNXSYSTM:00/ACPI0007:00/hid', 0o644, b'ACPI0007\n') +f('sys/devices/LNXSYSTM:00/ACPI0007:00/modalias', 0o644, b'acpi:ACPI0007:\n') +f('sys/devices/LNXSYSTM:00/ACPI0007:00/path', 0o644, b'\\_PR_.CPU0\n') +f('sys/devices/LNXSYSTM:00/ACPI0007:00/uevent', 0o644, b'''DRIVER=processor +MODALIAS=acpi:ACPI0007: +''') +d('sys/devices/LNXSYSTM:00/ACPI0007:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/ACPI0007:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/LNXPWRBN:00', 0o755) +l('sys/devices/LNXSYSTM:00/LNXPWRBN:00/subsystem', '../../../bus/acpi') +l('sys/devices/LNXSYSTM:00/LNXPWRBN:00/driver', '../../../bus/acpi/drivers/button') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/hid', 0o644, b'LNXPWRBN\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/modalias', 0o644, b'acpi:LNXPWRBN:\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/uevent', 0o644, b'''DRIVER=button +MODALIAS=acpi:LNXPWRBN: +''') +d('sys/devices/LNXSYSTM:00/LNXPWRBN:00/power', 0o755) +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input', 0o755) +d('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3', 0o755) +l('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/subsystem', '../../../../../class/input') +l('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/device', '../../../LNXPWRBN:00') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/uniq', 0o644, b'\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/phys', 0o644, b'LNXPWRBN/button/input0\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/modalias', 0o644, b'input:b0019v0000p0002e0000-e0,1,k74,ramlsfw\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/name', 0o644, b'Power Button (FF)\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/uevent', 0o644, b'''PRODUCT=19/0/2/0 +NAME="Power Button (FF)" +PHYS="LNXPWRBN/button/input0" +EV==3 +KEY==10000000000000 0 +MODALIAS=input:b0019v0000p0002e0000-e0,1,k74,ramlsfw +''') +d('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/id', 0o755) +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/id/version', 0o644, b'0000\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/id/product', 0o644, b'0002\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/id/vendor', 0o644, b'0000\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/id/bustype', 0o644, b'0019\n') +d('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/power', 0o755) +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/event3', 0o755) +l('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/event3/subsystem', '../../../../../../class/input') +l('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/event3/device', '../../input3') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/event3/dev', 0o644, b'13:67\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/event3/uevent', 0o644, b'''MAJOR=13 +MINOR=67 +''') +d('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/event3/power', 0o755) +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/event3/power/wakeup', 0o644, b'\n') +d('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/capabilities', 0o755) +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/capabilities/msc', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/capabilities/abs', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/capabilities/snd', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/capabilities/ff', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/capabilities/key', 0o644, b'10000000000000 0\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/capabilities/rel', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/capabilities/sw', 0o644, b'0\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/capabilities/ev', 0o644, b'3\n') +f('sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/capabilities/led', 0o644, b'0\n') +d('sys/devices/platform', 0o755) +f('sys/devices/platform/uevent', 0o644, b'') +d('sys/devices/platform/pcspkr', 0o755) +l('sys/devices/platform/pcspkr/subsystem', '../../../bus/platform') +l('sys/devices/platform/pcspkr/driver', '../../../bus/platform/drivers/pcspkr') +f('sys/devices/platform/pcspkr/modalias', 0o644, b'platform:pcspkr\n') +f('sys/devices/platform/pcspkr/uevent', 0o644, b'''DRIVER=pcspkr +MODALIAS=platform:pcspkr +''') +d('sys/devices/platform/pcspkr/power', 0o755) +f('sys/devices/platform/pcspkr/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/pcspkr/input', 0o755) +d('sys/devices/platform/pcspkr/input/input2', 0o755) +l('sys/devices/platform/pcspkr/input/input2/subsystem', '../../../../../class/input') +l('sys/devices/platform/pcspkr/input/input2/device', '../../../pcspkr') +f('sys/devices/platform/pcspkr/input/input2/uniq', 0o644, b'\n') +f('sys/devices/platform/pcspkr/input/input2/phys', 0o644, b'isa0061/input0\n') +f('sys/devices/platform/pcspkr/input/input2/modalias', 0o644, b'input:b0010v001Fp0001e0100-e0,12,kramls1,2,fw\n') +f('sys/devices/platform/pcspkr/input/input2/name', 0o644, b'PC Speaker\n') +f('sys/devices/platform/pcspkr/input/input2/uevent', 0o644, b'''PRODUCT=10/1f/1/100 +NAME="PC Speaker" +PHYS="isa0061/input0" +EV==40001 +SND==6 +MODALIAS=input:b0010v001Fp0001e0100-e0,12,kramls1,2,fw +''') +d('sys/devices/platform/pcspkr/input/input2/event2', 0o755) +l('sys/devices/platform/pcspkr/input/input2/event2/subsystem', '../../../../../../class/input') +l('sys/devices/platform/pcspkr/input/input2/event2/device', '../../input2') +f('sys/devices/platform/pcspkr/input/input2/event2/dev', 0o644, b'13:66\n') +f('sys/devices/platform/pcspkr/input/input2/event2/uevent', 0o644, b'''MAJOR=13 +MINOR=66 +''') +d('sys/devices/platform/pcspkr/input/input2/event2/power', 0o755) +f('sys/devices/platform/pcspkr/input/input2/event2/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/pcspkr/input/input2/id', 0o755) +f('sys/devices/platform/pcspkr/input/input2/id/version', 0o644, b'0100\n') +f('sys/devices/platform/pcspkr/input/input2/id/product', 0o644, b'0001\n') +f('sys/devices/platform/pcspkr/input/input2/id/vendor', 0o644, b'001f\n') +f('sys/devices/platform/pcspkr/input/input2/id/bustype', 0o644, b'0010\n') +d('sys/devices/platform/pcspkr/input/input2/power', 0o755) +f('sys/devices/platform/pcspkr/input/input2/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/pcspkr/input/input2/capabilities', 0o755) +f('sys/devices/platform/pcspkr/input/input2/capabilities/msc', 0o644, b'0\n') +f('sys/devices/platform/pcspkr/input/input2/capabilities/abs', 0o644, b'0\n') +f('sys/devices/platform/pcspkr/input/input2/capabilities/snd', 0o644, b'6\n') +f('sys/devices/platform/pcspkr/input/input2/capabilities/ff', 0o644, b'0\n') +f('sys/devices/platform/pcspkr/input/input2/capabilities/key', 0o644, b'0\n') +f('sys/devices/platform/pcspkr/input/input2/capabilities/rel', 0o644, b'0\n') +f('sys/devices/platform/pcspkr/input/input2/capabilities/sw', 0o644, b'0\n') +f('sys/devices/platform/pcspkr/input/input2/capabilities/ev', 0o644, b'40001\n') +f('sys/devices/platform/pcspkr/input/input2/capabilities/led', 0o644, b'0\n') +d('sys/devices/platform/power', 0o755) +f('sys/devices/platform/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/vesafb.0', 0o755) +l('sys/devices/platform/vesafb.0/subsystem', '../../../bus/platform') +l('sys/devices/platform/vesafb.0/driver', '../../../bus/platform/drivers/vesafb') +f('sys/devices/platform/vesafb.0/modalias', 0o644, b'platform:vesafb\n') +f('sys/devices/platform/vesafb.0/uevent', 0o644, b'''DRIVER=vesafb +MODALIAS=platform:vesafb +''') +d('sys/devices/platform/vesafb.0/power', 0o755) +f('sys/devices/platform/vesafb.0/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/vesafb.0/graphics', 0o755) +d('sys/devices/platform/vesafb.0/graphics/fb0', 0o755) +l('sys/devices/platform/vesafb.0/graphics/fb0/subsystem', '../../../../../class/graphics') +l('sys/devices/platform/vesafb.0/graphics/fb0/device', '../../../vesafb.0') +f('sys/devices/platform/vesafb.0/graphics/fb0/pan', 0o644, b'0,0\n') +f('sys/devices/platform/vesafb.0/graphics/fb0/rotate', 0o644, b'0\n') +f('sys/devices/platform/vesafb.0/graphics/fb0/mode', 0o644, b'') +f('sys/devices/platform/vesafb.0/graphics/fb0/virtual_size', 0o644, b'800,600\n') +f('sys/devices/platform/vesafb.0/graphics/fb0/dev', 0o644, b'29:0\n') +f('sys/devices/platform/vesafb.0/graphics/fb0/state', 0o644, b'0\n') +f('sys/devices/platform/vesafb.0/graphics/fb0/blank', 0o644, b'') +f('sys/devices/platform/vesafb.0/graphics/fb0/bits_per_pixel', 0o644, b'16\n') +f('sys/devices/platform/vesafb.0/graphics/fb0/stride', 0o644, b'1600\n') +f('sys/devices/platform/vesafb.0/graphics/fb0/name', 0o644, b'VESA VGA\n') +f('sys/devices/platform/vesafb.0/graphics/fb0/modes', 0o644, b'U:800x600p-75\n') +f('sys/devices/platform/vesafb.0/graphics/fb0/cursor', 0o644, b'') +f('sys/devices/platform/vesafb.0/graphics/fb0/uevent', 0o644, b'''MAJOR=29 +MINOR=0 +''') +f('sys/devices/platform/vesafb.0/graphics/fb0/console', 0o644, b'') +d('sys/devices/platform/vesafb.0/graphics/fb0/power', 0o755) +f('sys/devices/platform/vesafb.0/graphics/fb0/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/dock.0', 0o755) +l('sys/devices/platform/dock.0/subsystem', '../../../bus/platform') +f('sys/devices/platform/dock.0/modalias', 0o644, b'platform:dock\n') +f('sys/devices/platform/dock.0/uid', 0o644, b'0\n') +f('sys/devices/platform/dock.0/flags', 0o644, b'0\n') +f('sys/devices/platform/dock.0/docked', 0o644, b'0\n') +f('sys/devices/platform/dock.0/uevent', 0o644, b'MODALIAS=platform:dock\n') +d('sys/devices/platform/dock.0/power', 0o755) +f('sys/devices/platform/dock.0/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/serial8250', 0o755) +l('sys/devices/platform/serial8250/subsystem', '../../../bus/platform') +l('sys/devices/platform/serial8250/driver', '../../../bus/platform/drivers/serial8250') +f('sys/devices/platform/serial8250/modalias', 0o644, b'platform:serial8250\n') +f('sys/devices/platform/serial8250/uevent', 0o644, b'''DRIVER=serial8250 +MODALIAS=platform:serial8250 +''') +d('sys/devices/platform/serial8250/power', 0o755) +f('sys/devices/platform/serial8250/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/serial8250/tty', 0o755) +d('sys/devices/platform/serial8250/tty/ttyS1', 0o755) +l('sys/devices/platform/serial8250/tty/ttyS1/subsystem', '../../../../../class/tty') +l('sys/devices/platform/serial8250/tty/ttyS1/device', '../../../serial8250') +f('sys/devices/platform/serial8250/tty/ttyS1/dev', 0o644, b'4:65\n') +f('sys/devices/platform/serial8250/tty/ttyS1/uevent', 0o644, b'''MAJOR=4 +MINOR=65 +''') +d('sys/devices/platform/serial8250/tty/ttyS1/power', 0o755) +f('sys/devices/platform/serial8250/tty/ttyS1/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/platform/serial8250/tty/ttyS3', 0o755) +l('sys/devices/platform/serial8250/tty/ttyS3/subsystem', '../../../../../class/tty') +l('sys/devices/platform/serial8250/tty/ttyS3/device', '../../../serial8250') +f('sys/devices/platform/serial8250/tty/ttyS3/dev', 0o644, b'4:67\n') +f('sys/devices/platform/serial8250/tty/ttyS3/uevent', 0o644, b'''MAJOR=4 +MINOR=67 +''') +d('sys/devices/platform/serial8250/tty/ttyS3/power', 0o755) +f('sys/devices/platform/serial8250/tty/ttyS3/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/platform/serial8250/tty/ttyS0', 0o755) +l('sys/devices/platform/serial8250/tty/ttyS0/subsystem', '../../../../../class/tty') +l('sys/devices/platform/serial8250/tty/ttyS0/device', '../../../serial8250') +f('sys/devices/platform/serial8250/tty/ttyS0/dev', 0o644, b'4:64\n') +f('sys/devices/platform/serial8250/tty/ttyS0/uevent', 0o644, b'''MAJOR=4 +MINOR=64 +''') +d('sys/devices/platform/serial8250/tty/ttyS0/power', 0o755) +f('sys/devices/platform/serial8250/tty/ttyS0/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/platform/serial8250/tty/ttyS2', 0o755) +l('sys/devices/platform/serial8250/tty/ttyS2/subsystem', '../../../../../class/tty') +l('sys/devices/platform/serial8250/tty/ttyS2/device', '../../../serial8250') +f('sys/devices/platform/serial8250/tty/ttyS2/dev', 0o644, b'4:66\n') +f('sys/devices/platform/serial8250/tty/ttyS2/uevent', 0o644, b'''MAJOR=4 +MINOR=66 +''') +d('sys/devices/platform/serial8250/tty/ttyS2/power', 0o755) +f('sys/devices/platform/serial8250/tty/ttyS2/power/wakeup', 0o644, b'disabled\n') +d('sys/devices/platform/thinkpad_acpi', 0o755) +l('sys/devices/platform/thinkpad_acpi/subsystem', '../../../bus/platform') +l('sys/devices/platform/thinkpad_acpi/driver', '../../../bus/platform/drivers/thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/modalias', 0o644, b'platform:thinkpad_acpi\n') +f('sys/devices/platform/thinkpad_acpi/hotkey_all_mask', 0o644, b'0x00ffffff\n') +f('sys/devices/platform/thinkpad_acpi/hotkey_poll_freq', 0o644, b'10\n') +f('sys/devices/platform/thinkpad_acpi/hotkey_bios_enabled', 0o644, b'0\n') +f('sys/devices/platform/thinkpad_acpi/hotkey_recommended_mask', 0o644, b'0x008c7fff\n') +f('sys/devices/platform/thinkpad_acpi/hotkey_bios_mask', 0o644, b'0x0000080c\n') +f('sys/devices/platform/thinkpad_acpi/hotkey_mask', 0o644, b'0x00ffffff\n') +f('sys/devices/platform/thinkpad_acpi/wakeup_hotunplug_complete', 0o644, b'0\n') +f('sys/devices/platform/thinkpad_acpi/hotkey_source_mask', 0o644, b'0x00000000\n') +f('sys/devices/platform/thinkpad_acpi/hotkey_report_mode', 0o644, b'1\n') +f('sys/devices/platform/thinkpad_acpi/hotkey_radio_sw', 0o644, b'1\n') +f('sys/devices/platform/thinkpad_acpi/hotkey_enable', 0o644, b'1\n') +f('sys/devices/platform/thinkpad_acpi/uevent', 0o644, b'''DRIVER=thinkpad_acpi +MODALIAS=platform:thinkpad_acpi +''') +f('sys/devices/platform/thinkpad_acpi/bluetooth_enable', 0o644, b'1\n') +f('sys/devices/platform/thinkpad_acpi/wakeup_reason', 0o644, b'0\n') +d('sys/devices/platform/thinkpad_acpi/rfkill', 0o755) +d('sys/devices/platform/thinkpad_acpi/rfkill/rfkill0', 0o755) +l('sys/devices/platform/thinkpad_acpi/rfkill/rfkill0/subsystem', '../../../../../class/rfkill') +l('sys/devices/platform/thinkpad_acpi/rfkill/rfkill0/device', '../../../thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/rfkill/rfkill0/type', 0o644, b'bluetooth\n') +f('sys/devices/platform/thinkpad_acpi/rfkill/rfkill0/state', 0o644, b'1\n') +f('sys/devices/platform/thinkpad_acpi/rfkill/rfkill0/name', 0o644, b'tpacpi_bluetooth_sw\n') +f('sys/devices/platform/thinkpad_acpi/rfkill/rfkill0/uevent', 0o644, b'''RFKILL_NAME=tpacpi_bluetooth_sw +RFKILL_TYPE=bluetooth +RFKILL_STATE=1 +''') +f('sys/devices/platform/thinkpad_acpi/rfkill/rfkill0/claim', 0o644, b'0\n') +d('sys/devices/platform/thinkpad_acpi/rfkill/rfkill0/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/rfkill/rfkill0/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_acpi/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_acpi/leds', 0o755) +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::bay_active', 0o755) +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::bay_active/subsystem', '../../../../../class/leds') +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::bay_active/device', '../../../thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::bay_active/trigger', 0o644, b'[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx phy0assoc phy0radio \n') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::bay_active/brightness', 0o644, b'0\n\x00') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::bay_active/uevent', 0o644, b'') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::bay_active/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::bay_active/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi:orange:batt', 0o755) +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi:orange:batt/subsystem', '../../../../../class/leds') +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi:orange:batt/device', '../../../thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi:orange:batt/trigger', 0o644, b'[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx phy0assoc phy0radio \n') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi:orange:batt/brightness', 0o644, b'0\n\x00') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi:orange:batt/uevent', 0o644, b'') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi:orange:batt/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi:orange:batt/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_active', 0o755) +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_active/subsystem', '../../../../../class/leds') +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_active/device', '../../../thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_active/trigger', 0o644, b'[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx phy0assoc phy0radio \n') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_active/brightness', 0o644, b'0\n\x00') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_active/uevent', 0o644, b'') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_active/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_active/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::unknown_led', 0o755) +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::unknown_led/subsystem', '../../../../../class/leds') +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::unknown_led/device', '../../../thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::unknown_led/trigger', 0o644, b'[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx phy0assoc phy0radio \n') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::unknown_led/brightness', 0o644, b'0\n\x00') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::unknown_led/uevent', 0o644, b'') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::unknown_led/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::unknown_led/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi:green:batt', 0o755) +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi:green:batt/subsystem', '../../../../../class/leds') +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi:green:batt/device', '../../../thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi:green:batt/trigger', 0o644, b'[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx phy0assoc phy0radio \n') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi:green:batt/brightness', 0o644, b'0\n\x00') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi:green:batt/uevent', 0o644, b'') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi:green:batt/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi:green:batt/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_batt', 0o755) +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_batt/subsystem', '../../../../../class/leds') +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_batt/device', '../../../thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_batt/trigger', 0o644, b'[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx phy0assoc phy0radio \n') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_batt/brightness', 0o644, b'0\n\x00') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_batt/uevent', 0o644, b'') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_batt/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::dock_batt/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::thinklight', 0o755) +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::thinklight/subsystem', '../../../../../class/leds') +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::thinklight/device', '../../../thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::thinklight/trigger', 0o644, b'[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx phy0assoc phy0radio \n') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::thinklight/brightness', 0o644, b'255\n\x00') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::thinklight/uevent', 0o644, b'') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::thinklight/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::thinklight/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::power', 0o755) +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::power/subsystem', '../../../../../class/leds') +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::power/device', '../../../thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::power/trigger', 0o644, b'[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx phy0assoc phy0radio \n') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::power/brightness', 0o644, b'0\n\x00') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::power/uevent', 0o644, b'') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::power/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::power/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::standby', 0o755) +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::standby/subsystem', '../../../../../class/leds') +l('sys/devices/platform/thinkpad_acpi/leds/tpacpi::standby/device', '../../../thinkpad_acpi') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::standby/trigger', 0o644, b'[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full rfkill0 phy0rx phy0tx phy0assoc phy0radio \n') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::standby/brightness', 0o644, b'0\n\x00') +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::standby/uevent', 0o644, b'') +d('sys/devices/platform/thinkpad_acpi/leds/tpacpi::standby/power', 0o755) +f('sys/devices/platform/thinkpad_acpi/leds/tpacpi::standby/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_hwmon', 0o755) +l('sys/devices/platform/thinkpad_hwmon/subsystem', '../../../bus/platform') +l('sys/devices/platform/thinkpad_hwmon/driver', '../../../bus/platform/drivers/thinkpad_hwmon') +f('sys/devices/platform/thinkpad_hwmon/fan1_input', 0o644, b'3446\n') +f('sys/devices/platform/thinkpad_hwmon/temp4_input', 0o644, b'63000\n') +f('sys/devices/platform/thinkpad_hwmon/pwm1', 0o644, b'255\n') +f('sys/devices/platform/thinkpad_hwmon/temp11_input', 0o644, b'43000\n') +f('sys/devices/platform/thinkpad_hwmon/modalias', 0o644, b'platform:thinkpad_hwmon\n') +f('sys/devices/platform/thinkpad_hwmon/temp15_input', 0o644, b'') +f('sys/devices/platform/thinkpad_hwmon/temp2_input', 0o644, b'41000\n') +f('sys/devices/platform/thinkpad_hwmon/temp1_input', 0o644, b'46000\n') +f('sys/devices/platform/thinkpad_hwmon/temp5_input', 0o644, b'35000\n') +f('sys/devices/platform/thinkpad_hwmon/temp13_input', 0o644, b'') +f('sys/devices/platform/thinkpad_hwmon/temp6_input', 0o644, b'') +f('sys/devices/platform/thinkpad_hwmon/temp8_input', 0o644, b'') +f('sys/devices/platform/thinkpad_hwmon/pwm1_enable', 0o644, b'2\n') +f('sys/devices/platform/thinkpad_hwmon/temp10_input', 0o644, b'49000\n') +f('sys/devices/platform/thinkpad_hwmon/temp3_input', 0o644, b'33000\n') +f('sys/devices/platform/thinkpad_hwmon/temp9_input', 0o644, b'35000\n') +f('sys/devices/platform/thinkpad_hwmon/name', 0o644, b'thinkpad\n') +f('sys/devices/platform/thinkpad_hwmon/temp12_input', 0o644, b'') +f('sys/devices/platform/thinkpad_hwmon/uevent', 0o644, b'''DRIVER=thinkpad_hwmon +MODALIAS=platform:thinkpad_hwmon +''') +f('sys/devices/platform/thinkpad_hwmon/temp7_input', 0o644, b'33000\n') +f('sys/devices/platform/thinkpad_hwmon/temp16_input', 0o644, b'') +f('sys/devices/platform/thinkpad_hwmon/temp14_input', 0o644, b'') +d('sys/devices/platform/thinkpad_hwmon/hwmon', 0o755) +d('sys/devices/platform/thinkpad_hwmon/hwmon/hwmon0', 0o755) +l('sys/devices/platform/thinkpad_hwmon/hwmon/hwmon0/subsystem', '../../../../../class/hwmon') +l('sys/devices/platform/thinkpad_hwmon/hwmon/hwmon0/device', '../../../thinkpad_hwmon') +f('sys/devices/platform/thinkpad_hwmon/hwmon/hwmon0/uevent', 0o644, b'') +d('sys/devices/platform/thinkpad_hwmon/hwmon/hwmon0/power', 0o755) +f('sys/devices/platform/thinkpad_hwmon/hwmon/hwmon0/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/thinkpad_hwmon/power', 0o755) +f('sys/devices/platform/thinkpad_hwmon/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/microcode', 0o755) +l('sys/devices/platform/microcode/subsystem', '../../../bus/platform') +f('sys/devices/platform/microcode/modalias', 0o644, b'platform:microcode\n') +f('sys/devices/platform/microcode/uevent', 0o644, b'MODALIAS=platform:microcode\n') +d('sys/devices/platform/microcode/power', 0o755) +f('sys/devices/platform/microcode/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/i8042', 0o755) +l('sys/devices/platform/i8042/subsystem', '../../../bus/platform') +l('sys/devices/platform/i8042/driver', '../../../bus/platform/drivers/i8042') +f('sys/devices/platform/i8042/modalias', 0o644, b'platform:i8042\n') +f('sys/devices/platform/i8042/uevent', 0o644, b'''DRIVER=i8042 +MODALIAS=platform:i8042 +''') +d('sys/devices/platform/i8042/power', 0o755) +f('sys/devices/platform/i8042/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/i8042/serio0', 0o755) +l('sys/devices/platform/i8042/serio0/subsystem', '../../../../bus/serio') +l('sys/devices/platform/i8042/serio0/driver', '../../../../bus/serio/drivers/atkbd') +f('sys/devices/platform/i8042/serio0/modalias', 0o644, b'serio:ty06pr00id00ex00\n') +f('sys/devices/platform/i8042/serio0/set', 0o644, b'2\n') +f('sys/devices/platform/i8042/serio0/bind_mode', 0o644, b'auto\n') +f('sys/devices/platform/i8042/serio0/description', 0o644, b'i8042 KBD port\n') +f('sys/devices/platform/i8042/serio0/softrepeat', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio0/scroll', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio0/softraw', 0o644, b'1\n') +f('sys/devices/platform/i8042/serio0/err_count', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio0/extra', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio0/uevent', 0o644, b'''DRIVER=atkbd +SERIO_TYPE=06 +SERIO_PROTO=00 +SERIO_ID=00 +SERIO_EXTRA=00 +MODALIAS=serio:ty06pr00id00ex00 +''') +d('sys/devices/platform/i8042/serio0/id', 0o755) +f('sys/devices/platform/i8042/serio0/id/proto', 0o644, b'00\n') +f('sys/devices/platform/i8042/serio0/id/id', 0o644, b'00\n') +f('sys/devices/platform/i8042/serio0/id/type', 0o644, b'06\n') +f('sys/devices/platform/i8042/serio0/id/extra', 0o644, b'00\n') +d('sys/devices/platform/i8042/serio0/power', 0o755) +f('sys/devices/platform/i8042/serio0/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/i8042/serio0/input', 0o755) +d('sys/devices/platform/i8042/serio0/input/input0', 0o755) +l('sys/devices/platform/i8042/serio0/input/input0/subsystem', '../../../../../../class/input') +l('sys/devices/platform/i8042/serio0/input/input0/device', '../../../serio0') +f('sys/devices/platform/i8042/serio0/input/input0/uniq', 0o644, b'\n') +f('sys/devices/platform/i8042/serio0/input/input0/phys', 0o644, b'isa0060/serio0/input0\n') +f('sys/devices/platform/i8042/serio0/input/input0/modalias', 0o644, b'input:b0011v0001p0001eAB54-e0,1,4,11,14,k71,72,73,74,75,76,77,79,7A,7B,7C,7D,7E,7F,80,8C,8E,8F,9B,9C,9D,9E,9F,A3,A4,A5,A6,AC,AD,B7,B8,B9,D9,E2,ram4,l0,1,2,sfw\n') +f('sys/devices/platform/i8042/serio0/input/input0/name', 0o644, b'AT Translated Set 2 keyboard\n') +f('sys/devices/platform/i8042/serio0/input/input0/uevent', 0o644, b'''PRODUCT=11/1/1/ab54 +NAME="AT Translated Set 2 keyboard" +PHYS="isa0060/serio0/input0" +EV==120013 +KEY==402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe +MSC==10 +LED==7 +MODALIAS=input:b0011v0001p0001eAB54-e0,1,4,11,14,k71,72,73,74,75,76,77,79,7A,7B,7C,7D,7E,7F,80,8C,8E,8F,9B,9C,9D,9E,9F,A3,A4,A5,A6,AC,AD,B7,B8,B9,D9,E2,ram4,l0,1,2,sfw +''') +d('sys/devices/platform/i8042/serio0/input/input0/event0', 0o755) +l('sys/devices/platform/i8042/serio0/input/input0/event0/subsystem', '../../../../../../../class/input') +l('sys/devices/platform/i8042/serio0/input/input0/event0/device', '../../input0') +f('sys/devices/platform/i8042/serio0/input/input0/event0/dev', 0o644, b'13:64\n') +f('sys/devices/platform/i8042/serio0/input/input0/event0/uevent', 0o644, b'''MAJOR=13 +MINOR=64 +''') +d('sys/devices/platform/i8042/serio0/input/input0/event0/power', 0o755) +f('sys/devices/platform/i8042/serio0/input/input0/event0/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/i8042/serio0/input/input0/id', 0o755) +f('sys/devices/platform/i8042/serio0/input/input0/id/version', 0o644, b'ab54\n') +f('sys/devices/platform/i8042/serio0/input/input0/id/product', 0o644, b'0001\n') +f('sys/devices/platform/i8042/serio0/input/input0/id/vendor', 0o644, b'0001\n') +f('sys/devices/platform/i8042/serio0/input/input0/id/bustype', 0o644, b'0011\n') +d('sys/devices/platform/i8042/serio0/input/input0/power', 0o755) +f('sys/devices/platform/i8042/serio0/input/input0/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/i8042/serio0/input/input0/capabilities', 0o755) +f('sys/devices/platform/i8042/serio0/input/input0/capabilities/msc', 0o644, b'10\n') +f('sys/devices/platform/i8042/serio0/input/input0/capabilities/abs', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio0/input/input0/capabilities/snd', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio0/input/input0/capabilities/ff', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio0/input/input0/capabilities/key', 0o644, b'402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe\n') +f('sys/devices/platform/i8042/serio0/input/input0/capabilities/rel', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio0/input/input0/capabilities/sw', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio0/input/input0/capabilities/ev', 0o644, b'120013\n') +f('sys/devices/platform/i8042/serio0/input/input0/capabilities/led', 0o644, b'7\n') +d('sys/devices/platform/i8042/serio1', 0o755) +l('sys/devices/platform/i8042/serio1/subsystem', '../../../../bus/serio') +l('sys/devices/platform/i8042/serio1/driver', '../../../../bus/serio/drivers/psmouse') +f('sys/devices/platform/i8042/serio1/upthresh', 0o644, b'255\n') +f('sys/devices/platform/i8042/serio1/modalias', 0o644, b'serio:ty01pr00id00ex00\n') +f('sys/devices/platform/i8042/serio1/resync_time', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio1/skipback', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio1/draghys', 0o644, b'255\n') +f('sys/devices/platform/i8042/serio1/ext_dev', 0o644, b'1\n') +f('sys/devices/platform/i8042/serio1/bind_mode', 0o644, b'auto\n') +f('sys/devices/platform/i8042/serio1/resolution', 0o644, b'200\n') +f('sys/devices/platform/i8042/serio1/resetafter', 0o644, b'5\n') +f('sys/devices/platform/i8042/serio1/sensitivity', 0o644, b'128\n') +f('sys/devices/platform/i8042/serio1/rate', 0o644, b'100\n') +f('sys/devices/platform/i8042/serio1/inertia', 0o644, b'6\n') +f('sys/devices/platform/i8042/serio1/mindrag', 0o644, b'20\n') +f('sys/devices/platform/i8042/serio1/reach', 0o644, b'10\n') +f('sys/devices/platform/i8042/serio1/description', 0o644, b'i8042 AUX port\n') +f('sys/devices/platform/i8042/serio1/press_to_select', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio1/ztime', 0o644, b'38\n') +f('sys/devices/platform/i8042/serio1/speed', 0o644, b'97\n') +f('sys/devices/platform/i8042/serio1/thresh', 0o644, b'8\n') +f('sys/devices/platform/i8042/serio1/jenks', 0o644, b'135\n') +f('sys/devices/platform/i8042/serio1/uevent', 0o644, b'''DRIVER=psmouse +SERIO_TYPE=01 +SERIO_PROTO=00 +SERIO_ID=00 +SERIO_EXTRA=00 +MODALIAS=serio:ty01pr00id00ex00 +''') +f('sys/devices/platform/i8042/serio1/protocol', 0o644, b'TPPS/2\n') +d('sys/devices/platform/i8042/serio1/id', 0o755) +f('sys/devices/platform/i8042/serio1/id/proto', 0o644, b'00\n') +f('sys/devices/platform/i8042/serio1/id/id', 0o644, b'00\n') +f('sys/devices/platform/i8042/serio1/id/type', 0o644, b'01\n') +f('sys/devices/platform/i8042/serio1/id/extra', 0o644, b'00\n') +d('sys/devices/platform/i8042/serio1/power', 0o755) +f('sys/devices/platform/i8042/serio1/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/i8042/serio1/input', 0o755) +d('sys/devices/platform/i8042/serio1/input/input1', 0o755) +l('sys/devices/platform/i8042/serio1/input/input1/subsystem', '../../../../../../class/input') +l('sys/devices/platform/i8042/serio1/input/input1/device', '../../../serio1') +f('sys/devices/platform/i8042/serio1/input/input1/uniq', 0o644, b'\n') +f('sys/devices/platform/i8042/serio1/input/input1/phys', 0o644, b'isa0060/serio1/input0\n') +f('sys/devices/platform/i8042/serio1/input/input1/modalias', 0o644, b'input:b0011v0002p000Ae0000-e0,1,2,k110,111,112,r0,1,amlsfw\n') +f('sys/devices/platform/i8042/serio1/input/input1/name', 0o644, b'TPPS/2 IBM TrackPoint\n') +f('sys/devices/platform/i8042/serio1/input/input1/uevent', 0o644, b'''PRODUCT=11/2/a/0 +NAME="TPPS/2 IBM TrackPoint" +PHYS="isa0060/serio1/input0" +EV==7 +KEY==70000 0 0 0 0 +REL==3 +MODALIAS=input:b0011v0002p000Ae0000-e0,1,2,k110,111,112,r0,1,amlsfw +''') +d('sys/devices/platform/i8042/serio1/input/input1/mouse0', 0o755) +l('sys/devices/platform/i8042/serio1/input/input1/mouse0/subsystem', '../../../../../../../class/input') +l('sys/devices/platform/i8042/serio1/input/input1/mouse0/device', '../../input1') +f('sys/devices/platform/i8042/serio1/input/input1/mouse0/dev', 0o644, b'13:32\n') +f('sys/devices/platform/i8042/serio1/input/input1/mouse0/uevent', 0o644, b'''MAJOR=13 +MINOR=32 +''') +d('sys/devices/platform/i8042/serio1/input/input1/mouse0/power', 0o755) +f('sys/devices/platform/i8042/serio1/input/input1/mouse0/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/i8042/serio1/input/input1/id', 0o755) +f('sys/devices/platform/i8042/serio1/input/input1/id/version', 0o644, b'0000\n') +f('sys/devices/platform/i8042/serio1/input/input1/id/product', 0o644, b'000a\n') +f('sys/devices/platform/i8042/serio1/input/input1/id/vendor', 0o644, b'0002\n') +f('sys/devices/platform/i8042/serio1/input/input1/id/bustype', 0o644, b'0011\n') +d('sys/devices/platform/i8042/serio1/input/input1/power', 0o755) +f('sys/devices/platform/i8042/serio1/input/input1/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/i8042/serio1/input/input1/event1', 0o755) +l('sys/devices/platform/i8042/serio1/input/input1/event1/subsystem', '../../../../../../../class/input') +l('sys/devices/platform/i8042/serio1/input/input1/event1/device', '../../input1') +f('sys/devices/platform/i8042/serio1/input/input1/event1/dev', 0o644, b'13:65\n') +f('sys/devices/platform/i8042/serio1/input/input1/event1/uevent', 0o644, b'''MAJOR=13 +MINOR=65 +''') +d('sys/devices/platform/i8042/serio1/input/input1/event1/power', 0o755) +f('sys/devices/platform/i8042/serio1/input/input1/event1/power/wakeup', 0o644, b'\n') +d('sys/devices/platform/i8042/serio1/input/input1/capabilities', 0o755) +f('sys/devices/platform/i8042/serio1/input/input1/capabilities/msc', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio1/input/input1/capabilities/abs', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio1/input/input1/capabilities/snd', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio1/input/input1/capabilities/ff', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio1/input/input1/capabilities/key', 0o644, b'70000 0 0 0 0\n') +f('sys/devices/platform/i8042/serio1/input/input1/capabilities/rel', 0o644, b'3\n') +f('sys/devices/platform/i8042/serio1/input/input1/capabilities/sw', 0o644, b'0\n') +f('sys/devices/platform/i8042/serio1/input/input1/capabilities/ev', 0o644, b'7\n') +f('sys/devices/platform/i8042/serio1/input/input1/capabilities/led', 0o644, b'0\n') diff --git a/test/sys.tar.xz b/test/sys.tar.xz Binary files differdeleted file mode 100644 index 49ee8027b2..0000000000 --- a/test/sys.tar.xz +++ /dev/null diff --git a/test/test-execute/exec-read-only-path-succeed.service b/test/test-execute/exec-read-only-path-succeed.service new file mode 100644 index 0000000000..b54d48f281 --- /dev/null +++ b/test/test-execute/exec-read-only-path-succeed.service @@ -0,0 +1,8 @@ +[Service] +Type=oneshot +# This should work, as we explicitly disable the effect of ReadOnlyPaths= +ExecStart=+/bin/touch /tmp/thisisasimpletest +# This should also work, as we do not disable the effect of ReadOnlyPaths= but invert the exit code +ExecStart=/bin/sh -x -c '! /bin/touch /tmp/thisisasimpletest' +ExecStart=+/bin/rm /tmp/thisisasimpletest +ReadOnlyPaths=/tmp diff --git a/src/resolve/test-data/_443._tcp.fedoraproject.org.pkts b/test/test-resolve/_443._tcp.fedoraproject.org.pkts Binary files differindex a383c6286d..a383c6286d 100644 --- a/src/resolve/test-data/_443._tcp.fedoraproject.org.pkts +++ b/test/test-resolve/_443._tcp.fedoraproject.org.pkts diff --git a/src/resolve/test-data/_openpgpkey.fedoraproject.org.pkts b/test/test-resolve/_openpgpkey.fedoraproject.org.pkts Binary files differindex 15de02e997..15de02e997 100644 --- a/src/resolve/test-data/_openpgpkey.fedoraproject.org.pkts +++ b/test/test-resolve/_openpgpkey.fedoraproject.org.pkts diff --git a/src/resolve/test-data/fake-caa.pkts b/test/test-resolve/fake-caa.pkts Binary files differindex 1c3ecc5491..1c3ecc5491 100644 --- a/src/resolve/test-data/fake-caa.pkts +++ b/test/test-resolve/fake-caa.pkts diff --git a/src/resolve/test-data/fedoraproject.org.pkts b/test/test-resolve/fedoraproject.org.pkts Binary files differindex 17874844d9..17874844d9 100644 --- a/src/resolve/test-data/fedoraproject.org.pkts +++ b/test/test-resolve/fedoraproject.org.pkts diff --git a/src/resolve/test-data/gandi.net.pkts b/test/test-resolve/gandi.net.pkts Binary files differindex 5ef51e0c8e..5ef51e0c8e 100644 --- a/src/resolve/test-data/gandi.net.pkts +++ b/test/test-resolve/gandi.net.pkts diff --git a/src/resolve/test-data/google.com.pkts b/test/test-resolve/google.com.pkts Binary files differindex f98c4cd855..f98c4cd855 100644 --- a/src/resolve/test-data/google.com.pkts +++ b/test/test-resolve/google.com.pkts diff --git a/src/resolve/test-data/kyhwana.org.pkts b/test/test-resolve/kyhwana.org.pkts Binary files differindex e28a725c9a..e28a725c9a 100644 --- a/src/resolve/test-data/kyhwana.org.pkts +++ b/test/test-resolve/kyhwana.org.pkts diff --git a/src/resolve/test-data/root.pkts b/test/test-resolve/root.pkts Binary files differindex 54ba668c75..54ba668c75 100644 --- a/src/resolve/test-data/root.pkts +++ b/test/test-resolve/root.pkts diff --git a/src/resolve/test-data/sw1a1aa-sw1a2aa-sw1a2ab-sw1a2ac.find.me.uk.pkts b/test/test-resolve/sw1a1aa-sw1a2aa-sw1a2ab-sw1a2ac.find.me.uk.pkts Binary files differindex a854249532..a854249532 100644 --- a/src/resolve/test-data/sw1a1aa-sw1a2aa-sw1a2ab-sw1a2ac.find.me.uk.pkts +++ b/test/test-resolve/sw1a1aa-sw1a2aa-sw1a2ab-sw1a2ac.find.me.uk.pkts diff --git a/src/resolve/test-data/teamits.com.pkts b/test/test-resolve/teamits.com.pkts Binary files differindex 11deb39677..11deb39677 100644 --- a/src/resolve/test-data/teamits.com.pkts +++ b/test/test-resolve/teamits.com.pkts diff --git a/src/resolve/test-data/zbyszek@fedoraproject.org.pkts b/test/test-resolve/zbyszek@fedoraproject.org.pkts Binary files differindex f0a6f982df..f0a6f982df 100644 --- a/src/resolve/test-data/zbyszek@fedoraproject.org.pkts +++ b/test/test-resolve/zbyszek@fedoraproject.org.pkts diff --git a/units/systemd-nspawn@.service.in b/units/systemd-nspawn@.service.in index c8141639b6..8c0685aef5 100644 --- a/units/systemd-nspawn@.service.in +++ b/units/systemd-nspawn@.service.in @@ -10,7 +10,7 @@ Description=Container %i Documentation=man:systemd-nspawn(1) PartOf=machines.target Before=machines.target -After=network.target +After=network.target systemd-resolved.service [Service] ExecStart=@bindir@/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth -U --settings=override --machine=%i @@ -22,9 +22,9 @@ Slice=machine.slice Delegate=yes TasksMax=16384 -# Enforce a strict device policy, similar to the one nspawn configures -# when it allocates its own scope unit. Make sure to keep these -# policies in sync if you change them! +## Enforce a strict device policy, similar to the one nspawn configures +## when it allocates its own scope unit. Make sure to keep these +## policies in sync if you change them! DevicePolicy=closed DeviceAllow=/dev/net/tun rwm DeviceAllow=char-pts rw diff --git a/units/systemd-resolved.service.m4.in b/units/systemd-resolved.service.m4.in index 820e299168..70491e0751 100644 --- a/units/systemd-resolved.service.m4.in +++ b/units/systemd-resolved.service.m4.in @@ -41,3 +41,4 @@ ReadWritePaths=/run/systemd [Install] WantedBy=multi-user.target +Alias=dbus-org.freedesktop.resolve1.service |