From 45b1eb7115da3619bbecc8c248aeb0ac40d561d0 Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Tue, 9 Feb 2021 13:42:10 -0800 Subject: [PATCH 01/62] UPSTREAM: mm/mremap: fix BUILD_BUG_ON() error in get_extent clang can't evaluate this function argument at compile time when the function is not inlined, which leads to a link time failure: ld.lld: error: undefined symbol: __compiletime_assert_414 >>> referenced by mremap.c >>> mremap.o:(get_extent) in archive mm/built-in.a Mark the function as __always_inline to avoid it. Link: https://lkml.kernel.org/r/20201230154104.522605-1-arnd@kernel.org Fixes: 9ad9718bfa41 ("mm/mremap: calculate extent in one place") Signed-off-by: Arnd Bergmann Tested-by: Nick Desaulniers Reviewed-by: Nathan Chancellor Tested-by: Sedat Dilek Cc: Kirill A. Shutemov" Cc: Wei Yang Cc: Vlastimil Babka Cc: Dmitry Safonov <0x7f454c46@gmail.com> Cc: Brian Geffon Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Bug: 199373673 (cherry picked from commit a30a29091b5a6d4c64b5fc77040720a65e2dd4e6) Change-Id: I02055457d396b59eea974331a876cde049623423 Signed-off-by: Yee Lee --- mm/mremap.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mm/mremap.c b/mm/mremap.c index 12ca03d66311..c859b117f8e5 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -336,8 +336,9 @@ enum pgt_entry { * valid. Else returns a smaller extent bounded by the end of the source and * destination pgt_entry. */ -static unsigned long get_extent(enum pgt_entry entry, unsigned long old_addr, - unsigned long old_end, unsigned long new_addr) +static __always_inline unsigned long get_extent(enum pgt_entry entry, + unsigned long old_addr, unsigned long old_end, + unsigned long new_addr) { unsigned long next, extent, mask, size; From 70e365831f64b4cd6519623cba0f16b9749866a9 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Tue, 15 Dec 2020 20:46:20 -0800 Subject: [PATCH 02/62] UPSTREAM: ubsan: remove redundant -Wno-maybe-uninitialized Patch series "Clean up UBSAN Makefile", v2. This series attempts to address the issues seen with UBSAN's object-size sanitizer causing problems under GCC. In the process, the Kconfig and Makefile are refactored to do all the cc-option calls in the Kconfig. Additionally start to detangle -Wno-maybe-uninitialized, disable UBSAN_TRAP under COMPILE_TEST for wider build coverage, and expand the libusan tests. This patch (of 7): In commit 78a5255ffb6a ("Stop the ad-hoc games with -Wno-maybe-initialized") -Wmaybe-uninitialized was disabled globally, so keeping the disabling logic here too doesn't make sense. Link: https://lkml.kernel.org/r/20201203004437.389959-1-keescook@chromium.org Link: https://lkml.kernel.org/r/20201203004437.389959-2-keescook@chromium.org Signed-off-by: Kees Cook Cc: Linus Torvalds Cc: Ard Biesheuvel Cc: Arnd Bergmann Cc: Masahiro Yamada Cc: Michal Marek Cc: Nathan Chancellor Cc: Nick Desaulniers Cc: Marco Elver Cc: Randy Dunlap Cc: Dmitry Vyukov Cc: George Popescu Cc: Herbert Xu Cc: Peter Oberparleiter Cc: Andrey Ryabinin Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Bug: 199373673 (cherry picked from commit d8a7f62b6eec198e85b8602e062c00e199f5c328) Signed-off-by: Yee Lee Change-Id: Ibbbb5088dd6b34d72f56424fc6c3da9b97f15e38 --- lib/Kconfig.ubsan | 4 ---- scripts/Makefile.ubsan | 4 ---- 2 files changed, 8 deletions(-) diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan index 58f8d03d037b..d8d4d6557b80 100644 --- a/lib/Kconfig.ubsan +++ b/lib/Kconfig.ubsan @@ -72,10 +72,6 @@ config UBSAN_MISC config UBSAN_SANITIZE_ALL bool "Enable instrumentation for the entire kernel" depends on ARCH_HAS_UBSAN_SANITIZE_ALL - - # We build with -Wno-maybe-uninitilzed, but we still want to - # use -Wmaybe-uninitilized in allmodconfig builds. - # So dependsy bellow used to disable this option in allmodconfig depends on !COMPILE_TEST default y help diff --git a/scripts/Makefile.ubsan b/scripts/Makefile.ubsan index 9716dab06bc7..c18fecc53605 100644 --- a/scripts/Makefile.ubsan +++ b/scripts/Makefile.ubsan @@ -31,7 +31,3 @@ endif ifdef CONFIG_UBSAN_TRAP CFLAGS_UBSAN += $(call cc-option, -fsanitize-undefined-trap-on-error) endif - - # -fsanitize=* options makes GCC less smart than usual and - # increase number of 'maybe-uninitialized false-positives - CFLAGS_UBSAN += $(call cc-option, -Wno-maybe-uninitialized) From 9ecd3c915d08be65468e26db45f59324d71f49a8 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Tue, 15 Dec 2020 20:46:24 -0800 Subject: [PATCH 03/62] UPSTREAM: ubsan: move cc-option tests into Kconfig Instead of doing if/endif blocks with cc-option calls in the UBSAN Makefile, move all the tests into Kconfig and use the Makefile to collect the results. Link: https://lkml.kernel.org/r/20201203004437.389959-3-keescook@chromium.org Link: https://lore.kernel.org/lkml/CAHk-=wjPasyJrDuwDnpHJS2TuQfExwe=px-SzLeN8GFMAQJPmQ@mail.gmail.com/ Signed-off-by: Kees Cook Suggested-by: Linus Torvalds Reviewed-by: Nathan Chancellor Tested-by: Nathan Chancellor Cc: Andrey Ryabinin Cc: Ard Biesheuvel Cc: Arnd Bergmann Cc: Dmitry Vyukov Cc: George Popescu Cc: Herbert Xu Cc: Marco Elver Cc: Masahiro Yamada Cc: Michal Marek Cc: Nick Desaulniers Cc: Peter Oberparleiter Cc: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Bug: 199373673 (cherry picked from commit cdf8a76fda4ae3b53c5a09e5a8c79e27b7b65d68) Signed-off-by: Yee Lee Change-Id: Ib192ad08af1aabd92f4a04cda2494ae3518c5028 --- lib/Kconfig.ubsan | 61 +++++++++++++++++++++++++++++++++++++++--- scripts/Makefile.ubsan | 45 +++++++++++-------------------- 2 files changed, 73 insertions(+), 33 deletions(-) diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan index d8d4d6557b80..05147112b355 100644 --- a/lib/Kconfig.ubsan +++ b/lib/Kconfig.ubsan @@ -36,10 +36,17 @@ config UBSAN_KCOV_BROKEN See https://bugs.llvm.org/show_bug.cgi?id=45831 for the status in newer releases. +config CC_HAS_UBSAN_BOUNDS + def_bool $(cc-option,-fsanitize=bounds) + +config CC_HAS_UBSAN_ARRAY_BOUNDS + def_bool $(cc-option,-fsanitize=array-bounds) + config UBSAN_BOUNDS bool "Perform array index bounds checking" default UBSAN depends on !UBSAN_KCOV_BROKEN + depends on CC_HAS_UBSAN_ARRAY_BOUNDS || CC_HAS_UBSAN_BOUNDS help This option enables detection of directly indexed out of bounds array accesses, where the array size is known at compile time. @@ -47,15 +54,30 @@ config UBSAN_BOUNDS to the {str,mem}*cpy() family of functions (that is addressed by CONFIG_FORTIFY_SOURCE). +config UBSAN_ONLY_BOUNDS + def_bool CC_HAS_UBSAN_BOUNDS && !CC_HAS_UBSAN_ARRAY_BOUNDS + depends on UBSAN_BOUNDS + help + This is a weird case: Clang's -fsanitize=bounds includes + -fsanitize=local-bounds, but it's trapping-only, so for + Clang, we must use -fsanitize=array-bounds when we want + traditional array bounds checking enabled. For GCC, we + want -fsanitize=bounds. + +config UBSAN_ARRAY_BOUNDS + def_bool CC_HAS_UBSAN_ARRAY_BOUNDS + depends on UBSAN_BOUNDS + config UBSAN_LOCAL_BOUNDS bool "Perform array local bounds checking" depends on UBSAN_TRAP - depends on CC_IS_CLANG depends on !UBSAN_KCOV_BROKEN + depends on $(cc-option,-fsanitize=local-bounds) help This option enables -fsanitize=local-bounds which traps when an - exception/error is detected. Therefore, it should be enabled only - if trapping is expected. + exception/error is detected. Therefore, it may only be enabled + with CONFIG_UBSAN_TRAP. + Enabling this option detects errors due to accesses through a pointer that is derived from an object of a statically-known size, where an added offset (which may not be known statically) is @@ -69,6 +91,38 @@ config UBSAN_MISC own Kconfig options. Disable this if you only want to have individually selected checks. +config UBSAN_SHIFT + def_bool UBSAN_MISC + depends on $(cc-option,-fsanitize=shift) + +config UBSAN_DIV_ZERO + def_bool UBSAN_MISC + depends on $(cc-option,-fsanitize=integer-divide-by-zero) + +config UBSAN_UNREACHABLE + def_bool UBSAN_MISC + depends on $(cc-option,-fsanitize=unreachable) + +config UBSAN_SIGNED_OVERFLOW + def_bool UBSAN_MISC + depends on $(cc-option,-fsanitize=signed-integer-overflow) + +config UBSAN_UNSIGNED_OVERFLOW + def_bool UBSAN_MISC + depends on $(cc-option,-fsanitize=unsigned-integer-overflow) + +config UBSAN_OBJECT_SIZE + def_bool UBSAN_MISC + depends on $(cc-option,-fsanitize=object-size) + +config UBSAN_BOOL + def_bool UBSAN_MISC + depends on $(cc-option,-fsanitize=bool) + +config UBSAN_ENUM + def_bool UBSAN_MISC + depends on $(cc-option,-fsanitize=enum) + config UBSAN_SANITIZE_ALL bool "Enable instrumentation for the entire kernel" depends on ARCH_HAS_UBSAN_SANITIZE_ALL @@ -85,6 +139,7 @@ config UBSAN_ALIGNMENT bool "Enable checks for pointers alignment" default !HAVE_EFFICIENT_UNALIGNED_ACCESS depends on !UBSAN_TRAP + depends on $(cc-option,-fsanitize=alignment) help This option enables the check of unaligned memory accesses. Enabling this option on architectures that support unaligned diff --git a/scripts/Makefile.ubsan b/scripts/Makefile.ubsan index c18fecc53605..0e53a93e8f15 100644 --- a/scripts/Makefile.ubsan +++ b/scripts/Makefile.ubsan @@ -1,33 +1,18 @@ # SPDX-License-Identifier: GPL-2.0 -export CFLAGS_UBSAN := +# Enable available and selected UBSAN features. +ubsan-cflags-$(CONFIG_UBSAN_ALIGNMENT) += -fsanitize=alignment +ubsan-cflags-$(CONFIG_UBSAN_ONLY_BOUNDS) += -fsanitize=bounds +ubsan-cflags-$(CONFIG_UBSAN_ARRAY_BOUNDS) += -fsanitize=array-bounds +ubsan-cflags-$(CONFIG_UBSAN_LOCAL_BOUNDS) += -fsanitize=local-bounds +ubsan-cflags-$(CONFIG_UBSAN_SHIFT) += -fsanitize=shift +ubsan-cflags-$(CONFIG_UBSAN_DIV_ZERO) += -fsanitize=integer-divide-by-zero +ubsan-cflags-$(CONFIG_UBSAN_UNREACHABLE) += -fsanitize=unreachable +ubsan-cflags-$(CONFIG_UBSAN_SIGNED_OVERFLOW) += -fsanitize=signed-integer-overflow +ubsan-cflags-$(CONFIG_UBSAN_UNSIGNED_OVERFLOW) += -fsanitize=unsigned-integer-overflow +ubsan-cflags-$(CONFIG_UBSAN_OBJECT_SIZE) += -fsanitize=object-size +ubsan-cflags-$(CONFIG_UBSAN_BOOL) += -fsanitize=bool +ubsan-cflags-$(CONFIG_UBSAN_ENUM) += -fsanitize=enum +ubsan-cflags-$(CONFIG_UBSAN_TRAP) += -fsanitize-undefined-trap-on-error -ifdef CONFIG_UBSAN_ALIGNMENT - CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment) -endif - -ifdef CONFIG_UBSAN_BOUNDS - ifdef CONFIG_CC_IS_CLANG - CFLAGS_UBSAN += -fsanitize=array-bounds - else - CFLAGS_UBSAN += $(call cc-option, -fsanitize=bounds) - endif -endif - -ifdef CONFIG_UBSAN_LOCAL_BOUNDS - CFLAGS_UBSAN += -fsanitize=local-bounds -endif - -ifdef CONFIG_UBSAN_MISC - CFLAGS_UBSAN += $(call cc-option, -fsanitize=shift) - CFLAGS_UBSAN += $(call cc-option, -fsanitize=integer-divide-by-zero) - CFLAGS_UBSAN += $(call cc-option, -fsanitize=unreachable) - CFLAGS_UBSAN += $(call cc-option, -fsanitize=signed-integer-overflow) - CFLAGS_UBSAN += $(call cc-option, -fsanitize=object-size) - CFLAGS_UBSAN += $(call cc-option, -fsanitize=bool) - CFLAGS_UBSAN += $(call cc-option, -fsanitize=enum) -endif - -ifdef CONFIG_UBSAN_TRAP - CFLAGS_UBSAN += $(call cc-option, -fsanitize-undefined-trap-on-error) -endif +export CFLAGS_UBSAN := $(ubsan-cflags-y) From c108d79a122aa94d1c5fe6305be8c4fec4b64ec5 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Tue, 15 Dec 2020 20:46:28 -0800 Subject: [PATCH 04/62] UPSTREAM: ubsan: disable object-size sanitizer under GCC GCC's -fsanitize=object-size (as part of CONFIG_UBSAN_MISC) greatly increases stack utilization. Do not allow this under GCC. Link: https://lkml.kernel.org/r/20201203004437.389959-4-keescook@chromium.org Link: https://lore.kernel.org/lkml/CAHk-=wjPasyJrDuwDnpHJS2TuQfExwe=px-SzLeN8GFMAQJPmQ@mail.gmail.com/ Signed-off-by: Kees Cook Reviewed-by: Nathan Chancellor Suggested-by: Linus Torvalds Cc: Andrey Ryabinin Cc: Ard Biesheuvel Cc: Arnd Bergmann Cc: Dmitry Vyukov Cc: George Popescu Cc: Herbert Xu Cc: Marco Elver Cc: Masahiro Yamada Cc: Michal Marek Cc: Nick Desaulniers Cc: Peter Oberparleiter Cc: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Bug: 199373673 (cherry picked from commit 61e0349f703d1576a12f88c15f25e0a56fd277af) Signed-off-by: Yee Lee Change-Id: If7f5ecfe7a8bc47ff9a8300026bf2a0744cd7507 --- lib/Kconfig.ubsan | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan index 05147112b355..4190a99b1eaa 100644 --- a/lib/Kconfig.ubsan +++ b/lib/Kconfig.ubsan @@ -113,6 +113,9 @@ config UBSAN_UNSIGNED_OVERFLOW config UBSAN_OBJECT_SIZE def_bool UBSAN_MISC + # gcc hugely expands stack usage with -fsanitize=object-size + # https://lore.kernel.org/lkml/CAHk-=wjPasyJrDuwDnpHJS2TuQfExwe=px-SzLeN8GFMAQJPmQ@mail.gmail.com/ + depends on !CC_IS_GCC depends on $(cc-option,-fsanitize=object-size) config UBSAN_BOOL From 5eb5780afe798166ccdd4b65bd6694734e800b12 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Tue, 15 Dec 2020 20:46:31 -0800 Subject: [PATCH 05/62] UPSTREAM: ubsan: disable UBSAN_TRAP for all*config Doing all*config builds attempts to build as much as possible. UBSAN_TRAP effectively short-circuits lib/usban.c, so it should be disabled for COMPILE_TEST so that the lib/ubsan.c code gets built. Link: https://lkml.kernel.org/r/20201203004437.389959-5-keescook@chromium.org Signed-off-by: Kees Cook Reviewed-by: Nathan Chancellor Cc: Andrey Ryabinin Cc: Ard Biesheuvel Cc: Arnd Bergmann Cc: Dmitry Vyukov Cc: George Popescu Cc: Herbert Xu Cc: Linus Torvalds Cc: Marco Elver Cc: Masahiro Yamada Cc: Michal Marek Cc: Nick Desaulniers Cc: Peter Oberparleiter Cc: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Bug: 199373673 (cherry picked from commit 79791378a1bc9e218462211742e48e375371e8c5) Signed-off-by: Yee Lee Change-Id: I550630279775ddf4d1129d7cfa717152c103b24a --- lib/Kconfig.ubsan | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan index 4190a99b1eaa..6e8b67d4b0d9 100644 --- a/lib/Kconfig.ubsan +++ b/lib/Kconfig.ubsan @@ -14,6 +14,7 @@ if UBSAN config UBSAN_TRAP bool "On Sanitizer warnings, abort the running kernel code" + depends on !COMPILE_TEST depends on $(cc-option, -fsanitize-undefined-trap-on-error) help Building kernels with Sanitizer features enabled tends to grow From c2985e13ddc87258e98fad13e435129a210092b6 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Tue, 15 Dec 2020 20:46:35 -0800 Subject: [PATCH 06/62] UPSTREAM: ubsan: enable for all*config builds With UBSAN_OBJECT_SIZE disabled for GCC, only UBSAN_ALIGNMENT remained a noisy UBSAN option. Disable it for COMPILE_TEST so the rest of UBSAN can be used for full all*config builds or other large combinations. [sfr@canb.auug.org.au: add .data..Lubsan_data*/.data..Lubsan_type* sections explicitly] Link: https://lkml.kernel.org/r/20201208230157.42c42789@canb.auug.org.au Link: https://lore.kernel.org/lkml/CAHk-=wgXW=YLxGN0QVpp-1w5GDd2pf1W-FqY15poKzoVfik2qA@mail.gmail.com/ Link: https://lkml.kernel.org/r/20201203004437.389959-6-keescook@chromium.org Signed-off-by: Kees Cook Signed-off-by: Stephen Rothwell Cc: Andrey Ryabinin Cc: Ard Biesheuvel Cc: Arnd Bergmann Cc: Dmitry Vyukov Cc: George Popescu Cc: Herbert Xu Cc: Linus Torvalds Cc: Marco Elver Cc: Masahiro Yamada Cc: Michal Marek Cc: Nathan Chancellor Cc: Nick Desaulniers Cc: Peter Oberparleiter Cc: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Bug: 199373673 (cherry picked from commit d0a3ac549f389c1511a4df0d7638536305205d20) Signed-off-by: Yee Lee Change-Id: I5c7f60627993e4fa4e866dfa27a459cc8e4674d9 --- arch/powerpc/kernel/vmlinux.lds.S | 4 ++++ lib/Kconfig.ubsan | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index 4a1f494ef03f..72fa3c00229a 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S @@ -311,6 +311,10 @@ SECTIONS #else .data : AT(ADDR(.data) - LOAD_OFFSET) { DATA_DATA +#ifdef CONFIG_UBSAN + *(.data..Lubsan_data*) + *(.data..Lubsan_type*) +#endif *(.data.rel*) *(.toc1) *(.branch_lt) diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan index 6e8b67d4b0d9..fa78f0f3c1dc 100644 --- a/lib/Kconfig.ubsan +++ b/lib/Kconfig.ubsan @@ -130,7 +130,6 @@ config UBSAN_ENUM config UBSAN_SANITIZE_ALL bool "Enable instrumentation for the entire kernel" depends on ARCH_HAS_UBSAN_SANITIZE_ALL - depends on !COMPILE_TEST default y help This option activates instrumentation for the entire kernel. @@ -142,7 +141,7 @@ config UBSAN_SANITIZE_ALL config UBSAN_ALIGNMENT bool "Enable checks for pointers alignment" default !HAVE_EFFICIENT_UNALIGNED_ACCESS - depends on !UBSAN_TRAP + depends on !UBSAN_TRAP && !COMPILE_TEST depends on $(cc-option,-fsanitize=alignment) help This option enables the check of unaligned memory accesses. From fca16257ca2966b34ef1689ef101170bf932e835 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Tue, 15 Dec 2020 20:46:39 -0800 Subject: [PATCH 07/62] UPSTREAM: ubsan: remove UBSAN_MISC in favor of individual options Make each UBSAN option individually selectable and remove UBSAN_MISC which no longer has any purpose. Add help text for each Kconfig, and include a reference to the Clang sanitizer documentation. Disable unsigned overflow by default (not available with GCC and makes x86 unbootable with Clang). Disable unreachable when objtool is in use (redundant and confuses things: instrumentation appears at unreachable locations). Link: https://lkml.kernel.org/r/20201203004437.389959-7-keescook@chromium.org Signed-off-by: Kees Cook Cc: Andrey Ryabinin Cc: Ard Biesheuvel Cc: Arnd Bergmann Cc: Dmitry Vyukov Cc: George Popescu Cc: Herbert Xu Cc: Linus Torvalds Cc: Marco Elver Cc: Masahiro Yamada Cc: Michal Marek Cc: Nathan Chancellor Cc: Nick Desaulniers Cc: Peter Oberparleiter Cc: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Bug: 199373673 (cherry picked from commit c637693b20da8706b7f48d96882c9c80ae935151) Signed-off-by: Yee Lee Change-Id: I23c9578641db66e1514ff4c37874864298a12767 --- Documentation/dev-tools/ubsan.rst | 1 + lib/Kconfig.ubsan | 82 +++++++++++++++++++++---------- 2 files changed, 57 insertions(+), 26 deletions(-) diff --git a/Documentation/dev-tools/ubsan.rst b/Documentation/dev-tools/ubsan.rst index 655e6b63c227..1be6618e232d 100644 --- a/Documentation/dev-tools/ubsan.rst +++ b/Documentation/dev-tools/ubsan.rst @@ -86,3 +86,4 @@ References .. _1: https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Debugging-Options.html .. _2: https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html +.. _3: https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan index fa78f0f3c1dc..8b635fd75fe4 100644 --- a/lib/Kconfig.ubsan +++ b/lib/Kconfig.ubsan @@ -84,48 +84,88 @@ config UBSAN_LOCAL_BOUNDS where an added offset (which may not be known statically) is out-of-bounds. -config UBSAN_MISC - bool "Enable all other Undefined Behavior sanity checks" - default UBSAN - help - This option enables all sanity checks that don't have their - own Kconfig options. Disable this if you only want to have - individually selected checks. - config UBSAN_SHIFT - def_bool UBSAN_MISC + bool "Perform checking for bit-shift overflows" + default UBSAN depends on $(cc-option,-fsanitize=shift) + help + This option enables -fsanitize=shift which checks for bit-shift + operations that overflow to the left or go switch to negative + for signed types. config UBSAN_DIV_ZERO - def_bool UBSAN_MISC + bool "Perform checking for integer divide-by-zero" depends on $(cc-option,-fsanitize=integer-divide-by-zero) + help + This option enables -fsanitize=integer-divide-by-zero which checks + for integer division by zero. This is effectively redundant with the + kernel's existing exception handling, though it can provide greater + debugging information under CONFIG_UBSAN_REPORT_FULL. config UBSAN_UNREACHABLE - def_bool UBSAN_MISC + bool "Perform checking for unreachable code" + # objtool already handles unreachable checking and gets angry about + # seeing UBSan instrumentation located in unreachable places. + depends on !STACK_VALIDATION depends on $(cc-option,-fsanitize=unreachable) + help + This option enables -fsanitize=unreachable which checks for control + flow reaching an expected-to-be-unreachable position. config UBSAN_SIGNED_OVERFLOW - def_bool UBSAN_MISC + bool "Perform checking for signed arithmetic overflow" + default UBSAN depends on $(cc-option,-fsanitize=signed-integer-overflow) + help + This option enables -fsanitize=signed-integer-overflow which checks + for overflow of any arithmetic operations with signed integers. config UBSAN_UNSIGNED_OVERFLOW - def_bool UBSAN_MISC + bool "Perform checking for unsigned arithmetic overflow" depends on $(cc-option,-fsanitize=unsigned-integer-overflow) + help + This option enables -fsanitize=unsigned-integer-overflow which checks + for overflow of any arithmetic operations with unsigned integers. This + currently causes x86 to fail to boot. config UBSAN_OBJECT_SIZE - def_bool UBSAN_MISC + bool "Perform checking for accesses beyond the end of objects" + default UBSAN # gcc hugely expands stack usage with -fsanitize=object-size # https://lore.kernel.org/lkml/CAHk-=wjPasyJrDuwDnpHJS2TuQfExwe=px-SzLeN8GFMAQJPmQ@mail.gmail.com/ depends on !CC_IS_GCC depends on $(cc-option,-fsanitize=object-size) + help + This option enables -fsanitize=object-size which checks for accesses + beyond the end of objects where the optimizer can determine both the + object being operated on and its size, usually seen with bad downcasts, + or access to struct members from NULL pointers. config UBSAN_BOOL - def_bool UBSAN_MISC + bool "Perform checking for non-boolean values used as boolean" + default UBSAN depends on $(cc-option,-fsanitize=bool) + help + This option enables -fsanitize=bool which checks for boolean values being + loaded that are neither 0 nor 1. config UBSAN_ENUM - def_bool UBSAN_MISC + bool "Perform checking for out of bounds enum values" + default UBSAN depends on $(cc-option,-fsanitize=enum) + help + This option enables -fsanitize=enum which checks for values being loaded + into an enum that are outside the range of given values for the given enum. + +config UBSAN_ALIGNMENT + bool "Perform checking for misaligned pointer usage" + default !HAVE_EFFICIENT_UNALIGNED_ACCESS + depends on !UBSAN_TRAP && !COMPILE_TEST + depends on $(cc-option,-fsanitize=alignment) + help + This option enables the check of unaligned memory accesses. + Enabling this option on architectures that support unaligned + accesses may produce a lot of false positives. config UBSAN_SANITIZE_ALL bool "Enable instrumentation for the entire kernel" @@ -138,16 +178,6 @@ config UBSAN_SANITIZE_ALL Enabling this option will get kernel image size increased significantly. -config UBSAN_ALIGNMENT - bool "Enable checks for pointers alignment" - default !HAVE_EFFICIENT_UNALIGNED_ACCESS - depends on !UBSAN_TRAP && !COMPILE_TEST - depends on $(cc-option,-fsanitize=alignment) - help - This option enables the check of unaligned memory accesses. - Enabling this option on architectures that support unaligned - accesses may produce a lot of false positives. - config TEST_UBSAN tristate "Module for testing for undefined behavior detection" depends on m From 7611578ecbeb8dde637d8d65d270e242a1aae87a Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Tue, 15 Dec 2020 20:46:43 -0800 Subject: [PATCH 08/62] UPSTREAM: ubsan: expand tests and reporting Expand the UBSAN tests to include some additional UB cases. Notably the out-of-bounds enum loading appears not to work. Also include per-test reporting, including the relevant CONFIG_UBSAN... Kconfigs. Link: https://lkml.kernel.org/r/20201203004437.389959-8-keescook@chromium.org Signed-off-by: Kees Cook Cc: Andrey Ryabinin Cc: Ard Biesheuvel Cc: Arnd Bergmann Cc: Dmitry Vyukov Cc: George Popescu Cc: Herbert Xu Cc: Linus Torvalds Cc: Marco Elver Cc: Masahiro Yamada Cc: Michal Marek Cc: Nathan Chancellor Cc: Nick Desaulniers Cc: Peter Oberparleiter Cc: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Bug: 199373673 (cherry picked from commit 4a26f49b7b3dbe998d9b2561f9f256a1c3fdb74a) Signed-off-by: Yee Lee Change-Id: I7fb1fdd9301a54d30d8defdecf00300cd8bdcf30 --- lib/test_ubsan.c | 74 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 66 insertions(+), 8 deletions(-) diff --git a/lib/test_ubsan.c b/lib/test_ubsan.c index 9ea10adf7a66..5e5d9355ef49 100644 --- a/lib/test_ubsan.c +++ b/lib/test_ubsan.c @@ -5,32 +5,54 @@ typedef void(*test_ubsan_fp)(void); +#define UBSAN_TEST(config, ...) do { \ + pr_info("%s " __VA_ARGS__ "%s(%s=%s)\n", __func__, \ + sizeof(" " __VA_ARGS__) > 2 ? " " : "", \ + #config, IS_ENABLED(config) ? "y" : "n"); \ + } while (0) + static void test_ubsan_add_overflow(void) { volatile int val = INT_MAX; + volatile unsigned int uval = UINT_MAX; + UBSAN_TEST(CONFIG_UBSAN_SIGNED_OVERFLOW); val += 2; + + UBSAN_TEST(CONFIG_UBSAN_UNSIGNED_OVERFLOW); + uval += 2; } static void test_ubsan_sub_overflow(void) { volatile int val = INT_MIN; + volatile unsigned int uval = 0; volatile int val2 = 2; + UBSAN_TEST(CONFIG_UBSAN_SIGNED_OVERFLOW); val -= val2; + + UBSAN_TEST(CONFIG_UBSAN_UNSIGNED_OVERFLOW); + uval -= val2; } static void test_ubsan_mul_overflow(void) { volatile int val = INT_MAX / 2; + volatile unsigned int uval = UINT_MAX / 2; + UBSAN_TEST(CONFIG_UBSAN_SIGNED_OVERFLOW); val *= 3; + + UBSAN_TEST(CONFIG_UBSAN_UNSIGNED_OVERFLOW); + uval *= 3; } static void test_ubsan_negate_overflow(void) { volatile int val = INT_MIN; + UBSAN_TEST(CONFIG_UBSAN_SIGNED_OVERFLOW); val = -val; } @@ -39,37 +61,67 @@ static void test_ubsan_divrem_overflow(void) volatile int val = 16; volatile int val2 = 0; + UBSAN_TEST(CONFIG_UBSAN_DIV_ZERO); val /= val2; } static void test_ubsan_shift_out_of_bounds(void) { - volatile int val = -1; - int val2 = 10; + volatile int neg = -1, wrap = 4; + int val1 = 10; + int val2 = INT_MAX; - val2 <<= val; + UBSAN_TEST(CONFIG_UBSAN_SHIFT, "negative exponent"); + val1 <<= neg; + + UBSAN_TEST(CONFIG_UBSAN_SHIFT, "left overflow"); + val2 <<= wrap; } static void test_ubsan_out_of_bounds(void) { - volatile int i = 4, j = 5; + volatile int i = 4, j = 5, k = -1; + volatile char above[4] = { }; /* Protect surrounding memory. */ volatile int arr[4]; + volatile char below[4] = { }; /* Protect surrounding memory. */ + above[0] = below[0]; + + UBSAN_TEST(CONFIG_UBSAN_BOUNDS, "above"); arr[j] = i; + + UBSAN_TEST(CONFIG_UBSAN_BOUNDS, "below"); + arr[k] = i; } +enum ubsan_test_enum { + UBSAN_TEST_ZERO = 0, + UBSAN_TEST_ONE, + UBSAN_TEST_MAX, +}; + static void test_ubsan_load_invalid_value(void) { volatile char *dst, *src; bool val, val2, *ptr; - char c = 4; + enum ubsan_test_enum eval, eval2, *eptr; + unsigned char c = 0xff; + UBSAN_TEST(CONFIG_UBSAN_BOOL, "bool"); dst = (char *)&val; src = &c; *dst = *src; ptr = &val2; val2 = val; + + UBSAN_TEST(CONFIG_UBSAN_ENUM, "enum"); + dst = (char *)&eval; + src = &c; + *dst = *src; + + eptr = &eval2; + eval2 = eval; } static void test_ubsan_null_ptr_deref(void) @@ -77,6 +129,7 @@ static void test_ubsan_null_ptr_deref(void) volatile int *ptr = NULL; int val; + UBSAN_TEST(CONFIG_UBSAN_OBJECT_SIZE); val = *ptr; } @@ -85,6 +138,7 @@ static void test_ubsan_misaligned_access(void) volatile char arr[5] __aligned(4) = {1, 2, 3, 4, 5}; volatile int *ptr, val = 6; + UBSAN_TEST(CONFIG_UBSAN_ALIGNMENT); ptr = (int *)(arr + 1); *ptr = val; } @@ -95,6 +149,7 @@ static void test_ubsan_object_size_mismatch(void) volatile int val __aligned(8) = 4; volatile long long *ptr, val2; + UBSAN_TEST(CONFIG_UBSAN_OBJECT_SIZE); ptr = (long long *)&val; val2 = *ptr; } @@ -104,15 +159,19 @@ static const test_ubsan_fp test_ubsan_array[] = { test_ubsan_sub_overflow, test_ubsan_mul_overflow, test_ubsan_negate_overflow, - test_ubsan_divrem_overflow, test_ubsan_shift_out_of_bounds, test_ubsan_out_of_bounds, test_ubsan_load_invalid_value, - //test_ubsan_null_ptr_deref, /* exclude it because there is a crash */ test_ubsan_misaligned_access, test_ubsan_object_size_mismatch, }; +/* Excluded because they Oops the module. */ +static const test_ubsan_fp skip_ubsan_array[] = { + test_ubsan_divrem_overflow, + test_ubsan_null_ptr_deref, +}; + static int __init test_ubsan_init(void) { unsigned int i; @@ -120,7 +179,6 @@ static int __init test_ubsan_init(void) for (i = 0; i < ARRAY_SIZE(test_ubsan_array); i++) test_ubsan_array[i](); - (void)test_ubsan_null_ptr_deref; /* to avoid unsed-function warning */ return 0; } module_init(test_ubsan_init); From 65a04c1a8ec4d275b3c2e77bef839c05448ef6bd Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Sat, 23 Jan 2021 21:01:48 -0800 Subject: [PATCH 09/62] UPSTREAM: ubsan: disable unsigned-overflow check for i386 Building ubsan kernels even for compile-testing introduced these warnings in my randconfig environment: crypto/blake2b_generic.c:98:13: error: stack frame size of 9636 bytes in function 'blake2b_compress' [-Werror,-Wframe-larger-than=] static void blake2b_compress(struct blake2b_state *S, crypto/sha512_generic.c:151:13: error: stack frame size of 1292 bytes in function 'sha512_generic_block_fn' [-Werror,-Wframe-larger-than=] static void sha512_generic_block_fn(struct sha512_state *sst, u8 const *src, lib/crypto/curve25519-fiat32.c:312:22: error: stack frame size of 2180 bytes in function 'fe_mul_impl' [-Werror,-Wframe-larger-than=] static noinline void fe_mul_impl(u32 out[10], const u32 in1[10], const u32 in2[10]) lib/crypto/curve25519-fiat32.c:444:22: error: stack frame size of 1588 bytes in function 'fe_sqr_impl' [-Werror,-Wframe-larger-than=] static noinline void fe_sqr_impl(u32 out[10], const u32 in1[10]) Further testing showed that this is caused by -fsanitize=unsigned-integer-overflow, but is isolated to the 32-bit x86 architecture. The one in blake2b immediately overflows the 8KB stack area architectures, so better ensure this never happens by disabling the option for 32-bit x86. Link: https://lkml.kernel.org/r/20210112202922.2454435-1-arnd@kernel.org Link: https://lore.kernel.org/lkml/20201230154749.746641-1-arnd@kernel.org/ Fixes: d0a3ac549f38 ("ubsan: enable for all*config builds") Signed-off-by: Arnd Bergmann Acked-by: Kees Cook Reviewed-by: Nathan Chancellor Cc: Nick Desaulniers Cc: Stephen Rothwell Cc: Marco Elver Cc: George Popescu Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Bug: 199373673 (cherry picked from commit 251b5497c5c95e4548e3d33cbda3f638fea2c11e) Signed-off-by: Yee Lee Change-Id: I1855d47cb0525cdbf523fced4cbb75189dbb6f32 --- lib/Kconfig.ubsan | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan index 8b635fd75fe4..3a0b1c930733 100644 --- a/lib/Kconfig.ubsan +++ b/lib/Kconfig.ubsan @@ -123,6 +123,7 @@ config UBSAN_SIGNED_OVERFLOW config UBSAN_UNSIGNED_OVERFLOW bool "Perform checking for unsigned arithmetic overflow" depends on $(cc-option,-fsanitize=unsigned-integer-overflow) + depends on !X86_32 # avoid excessive stack usage on x86-32/clang help This option enables -fsanitize=unsigned-integer-overflow which checks for overflow of any arithmetic operations with unsigned integers. This From 71f70987f97bd71c6ec99c544ffe477e584fdf12 Mon Sep 17 00:00:00 2001 From: Andrey Ryabinin Date: Thu, 25 Feb 2021 17:22:42 -0800 Subject: [PATCH 10/62] UPSTREAM: ubsan: remove overflow checks Since GCC 8.0 -fsanitize=signed-integer-overflow doesn't work with -fwrapv. -fwrapv makes signed overflows defines and GCC essentially disables ubsan checks. On GCC < 8.0 -fwrapv doesn't have influence on -fsanitize=signed-integer-overflow setting, so it kinda works but generates false-positves and violates uaccess rules: lib/iov_iter.o: warning: objtool: iovec_from_user()+0x22d: call to __ubsan_handle_add_overflow() with UACCESS enabled Disable signed overflow checks to avoid these problems. Remove unsigned overflow checks as well. Unsigned overflow appeared as side effect of commit cdf8a76fda4a ("ubsan: move cc-option tests into Kconfig"), but it never worked (kernel doesn't boot). And unsigned overflows are allowed by C standard, so it just pointless. Link: https://lkml.kernel.org/r/20210209232348.20510-1-ryabinin.a.a@gmail.com Signed-off-by: Andrey Ryabinin Acked-by: Peter Zijlstra (Intel) Cc: Josh Poimboeuf Cc: Randy Dunlap Cc: Stephen Rothwell Cc: Dmitry Vyukov Cc: Kees Cook Cc: Alexander Viro Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Bug: 199373673 (cherry picked from commit 6aaa31aeb9cf260e1b7155cc11ec864f052db5ec) Signed-off-by: Yee Lee Change-Id: I7f0e9d7a4d7c69c21e42bd21070c5d265bddbff1 --- lib/Kconfig.ubsan | 17 ----------- lib/test_ubsan.c | 49 ------------------------------ lib/ubsan.c | 68 ------------------------------------------ scripts/Makefile.ubsan | 2 -- 4 files changed, 136 deletions(-) diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan index 3a0b1c930733..e5372a13511d 100644 --- a/lib/Kconfig.ubsan +++ b/lib/Kconfig.ubsan @@ -112,23 +112,6 @@ config UBSAN_UNREACHABLE This option enables -fsanitize=unreachable which checks for control flow reaching an expected-to-be-unreachable position. -config UBSAN_SIGNED_OVERFLOW - bool "Perform checking for signed arithmetic overflow" - default UBSAN - depends on $(cc-option,-fsanitize=signed-integer-overflow) - help - This option enables -fsanitize=signed-integer-overflow which checks - for overflow of any arithmetic operations with signed integers. - -config UBSAN_UNSIGNED_OVERFLOW - bool "Perform checking for unsigned arithmetic overflow" - depends on $(cc-option,-fsanitize=unsigned-integer-overflow) - depends on !X86_32 # avoid excessive stack usage on x86-32/clang - help - This option enables -fsanitize=unsigned-integer-overflow which checks - for overflow of any arithmetic operations with unsigned integers. This - currently causes x86 to fail to boot. - config UBSAN_OBJECT_SIZE bool "Perform checking for accesses beyond the end of objects" default UBSAN diff --git a/lib/test_ubsan.c b/lib/test_ubsan.c index 5e5d9355ef49..7e7bbd0f3fd2 100644 --- a/lib/test_ubsan.c +++ b/lib/test_ubsan.c @@ -11,51 +11,6 @@ typedef void(*test_ubsan_fp)(void); #config, IS_ENABLED(config) ? "y" : "n"); \ } while (0) -static void test_ubsan_add_overflow(void) -{ - volatile int val = INT_MAX; - volatile unsigned int uval = UINT_MAX; - - UBSAN_TEST(CONFIG_UBSAN_SIGNED_OVERFLOW); - val += 2; - - UBSAN_TEST(CONFIG_UBSAN_UNSIGNED_OVERFLOW); - uval += 2; -} - -static void test_ubsan_sub_overflow(void) -{ - volatile int val = INT_MIN; - volatile unsigned int uval = 0; - volatile int val2 = 2; - - UBSAN_TEST(CONFIG_UBSAN_SIGNED_OVERFLOW); - val -= val2; - - UBSAN_TEST(CONFIG_UBSAN_UNSIGNED_OVERFLOW); - uval -= val2; -} - -static void test_ubsan_mul_overflow(void) -{ - volatile int val = INT_MAX / 2; - volatile unsigned int uval = UINT_MAX / 2; - - UBSAN_TEST(CONFIG_UBSAN_SIGNED_OVERFLOW); - val *= 3; - - UBSAN_TEST(CONFIG_UBSAN_UNSIGNED_OVERFLOW); - uval *= 3; -} - -static void test_ubsan_negate_overflow(void) -{ - volatile int val = INT_MIN; - - UBSAN_TEST(CONFIG_UBSAN_SIGNED_OVERFLOW); - val = -val; -} - static void test_ubsan_divrem_overflow(void) { volatile int val = 16; @@ -155,10 +110,6 @@ static void test_ubsan_object_size_mismatch(void) } static const test_ubsan_fp test_ubsan_array[] = { - test_ubsan_add_overflow, - test_ubsan_sub_overflow, - test_ubsan_mul_overflow, - test_ubsan_negate_overflow, test_ubsan_shift_out_of_bounds, test_ubsan_out_of_bounds, test_ubsan_load_invalid_value, diff --git a/lib/ubsan.c b/lib/ubsan.c index adf8dcf3c84e..6e36b167ce67 100644 --- a/lib/ubsan.c +++ b/lib/ubsan.c @@ -163,74 +163,6 @@ static void ubsan_epilogue(void) } } -static void handle_overflow(struct overflow_data *data, void *lhs, - void *rhs, char op) -{ - - struct type_descriptor *type = data->type; - char lhs_val_str[VALUE_LENGTH]; - char rhs_val_str[VALUE_LENGTH]; - - if (suppress_report(&data->location)) - return; - - ubsan_prologue(&data->location, type_is_signed(type) ? - "signed-integer-overflow" : - "unsigned-integer-overflow"); - - val_to_string(lhs_val_str, sizeof(lhs_val_str), type, lhs); - val_to_string(rhs_val_str, sizeof(rhs_val_str), type, rhs); - pr_err("%s %c %s cannot be represented in type %s\n", - lhs_val_str, - op, - rhs_val_str, - type->type_name); - - ubsan_epilogue(); -} - -void __ubsan_handle_add_overflow(void *data, - void *lhs, void *rhs) -{ - - handle_overflow(data, lhs, rhs, '+'); -} -EXPORT_SYMBOL(__ubsan_handle_add_overflow); - -void __ubsan_handle_sub_overflow(void *data, - void *lhs, void *rhs) -{ - handle_overflow(data, lhs, rhs, '-'); -} -EXPORT_SYMBOL(__ubsan_handle_sub_overflow); - -void __ubsan_handle_mul_overflow(void *data, - void *lhs, void *rhs) -{ - handle_overflow(data, lhs, rhs, '*'); -} -EXPORT_SYMBOL(__ubsan_handle_mul_overflow); - -void __ubsan_handle_negate_overflow(void *_data, void *old_val) -{ - struct overflow_data *data = _data; - char old_val_str[VALUE_LENGTH]; - - if (suppress_report(&data->location)) - return; - - ubsan_prologue(&data->location, "negation-overflow"); - - val_to_string(old_val_str, sizeof(old_val_str), data->type, old_val); - - pr_err("negation of %s cannot be represented in type %s:\n", - old_val_str, data->type->type_name); - - ubsan_epilogue(); -} -EXPORT_SYMBOL(__ubsan_handle_negate_overflow); - - void __ubsan_handle_divrem_overflow(void *_data, void *lhs, void *rhs) { struct overflow_data *data = _data; diff --git a/scripts/Makefile.ubsan b/scripts/Makefile.ubsan index 0e53a93e8f15..9e2092fd5206 100644 --- a/scripts/Makefile.ubsan +++ b/scripts/Makefile.ubsan @@ -8,8 +8,6 @@ ubsan-cflags-$(CONFIG_UBSAN_LOCAL_BOUNDS) += -fsanitize=local-bounds ubsan-cflags-$(CONFIG_UBSAN_SHIFT) += -fsanitize=shift ubsan-cflags-$(CONFIG_UBSAN_DIV_ZERO) += -fsanitize=integer-divide-by-zero ubsan-cflags-$(CONFIG_UBSAN_UNREACHABLE) += -fsanitize=unreachable -ubsan-cflags-$(CONFIG_UBSAN_SIGNED_OVERFLOW) += -fsanitize=signed-integer-overflow -ubsan-cflags-$(CONFIG_UBSAN_UNSIGNED_OVERFLOW) += -fsanitize=unsigned-integer-overflow ubsan-cflags-$(CONFIG_UBSAN_OBJECT_SIZE) += -fsanitize=object-size ubsan-cflags-$(CONFIG_UBSAN_BOOL) += -fsanitize=bool ubsan-cflags-$(CONFIG_UBSAN_ENUM) += -fsanitize=enum From 44b339535eb67a5c888edf01edc32b8b8a697e2e Mon Sep 17 00:00:00 2001 From: Yee Lee Date: Mon, 27 Sep 2021 11:13:57 +0800 Subject: [PATCH 11/62] ANDROID: gki_defconfig: remove CONFIG_UBSAN_MISC entry CONFIG_UBSAN_MISC is seperated to individual options and no longer existed in configuration. Hence, remove the entry from gki_defconfig. The other UBSAN configs are unset to align with android-mainline. Bug: 199373673 Ref: https://android-review.googlesource.com/c/kernel/common/+/1584824 Signed-off-by: Yee Lee Change-Id: I9f525fcd386eb7cc2503afb130a5230b5e730bee --- arch/arm64/configs/gki_defconfig | 5 ++++- arch/x86/configs/gki_defconfig | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index 30bd964dd2c8..ecb15f5a0888 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -667,7 +667,10 @@ CONFIG_MAGIC_SYSRQ=y CONFIG_UBSAN=y CONFIG_UBSAN_TRAP=y CONFIG_UBSAN_LOCAL_BOUNDS=y -# CONFIG_UBSAN_MISC is not set +# CONFIG_UBSAN_SHIFT is not set +# CONFIG_UBSAN_OBJECT_SIZE is not set +# CONFIG_UBSAN_BOOL is not set +# CONFIG_UBSAN_ENUM is not set CONFIG_PAGE_OWNER=y CONFIG_PAGE_PINNER=y CONFIG_DEBUG_MEMORY_INIT=y diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 332d9b539ed8..41a1b44c4e0a 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -601,7 +601,10 @@ CONFIG_MAGIC_SYSRQ=y CONFIG_UBSAN=y CONFIG_UBSAN_TRAP=y CONFIG_UBSAN_LOCAL_BOUNDS=y -# CONFIG_UBSAN_MISC is not set +# CONFIG_UBSAN_SHIFT is not set +# CONFIG_UBSAN_OBJECT_SIZE is not set +# CONFIG_UBSAN_BOOL is not set +# CONFIG_UBSAN_ENUM is not set CONFIG_PAGE_OWNER=y CONFIG_PAGE_PINNER=y CONFIG_DEBUG_MEMORY_INIT=y From bd4a84253c5edcd9224af565d9cb0089c63c4d5b Mon Sep 17 00:00:00 2001 From: Bean Huo Date: Wed, 4 Aug 2021 20:21:27 +0200 Subject: [PATCH 12/62] UPSTREAM: core: Add L2P entry swap quirk for Micron UFS For Micron UFS devices the L2P entry need to be byteswapped before sending an HPB READ command to the UFS device. Add the quirk UFS_DEVICE_QUIRK_SWAP_L2P_ENTRY_FOR_HPB_READ to address this. Link: https://lore.kernel.org/r/20210804182128.458356-2-huobean@gmail.com Reviewed-by: Avri Altman Signed-off-by: Bean Huo Signed-off-by: Martin K. Petersen (cherry picked from commit 63522bf3aced0a782b59f0314dbad5cdc8b14c59) Signed-off-by: Luca Porzio Change-Id: I69cfa43c5439e8cace4fe5b2760a38b43d734621 Signed-off-by: Bart Van Assche --- drivers/scsi/ufs/ufs_quirks.h | 6 ++++++ drivers/scsi/ufs/ufshcd.c | 3 ++- drivers/scsi/ufs/ufshpb.c | 15 ++++++++++----- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/drivers/scsi/ufs/ufs_quirks.h b/drivers/scsi/ufs/ufs_quirks.h index 07f559ac5883..35ec9ea79869 100644 --- a/drivers/scsi/ufs/ufs_quirks.h +++ b/drivers/scsi/ufs/ufs_quirks.h @@ -116,4 +116,10 @@ struct ufs_dev_fix { */ #define UFS_DEVICE_QUIRK_DELAY_AFTER_LPM (1 << 11) +/* + * Some UFS devices require L2P entry should be swapped before being sent to the + * UFS device for HPB READ command. + */ +#define UFS_DEVICE_QUIRK_SWAP_L2P_ENTRY_FOR_HPB_READ (1 << 12) + #endif /* UFS_QUIRKS_H_ */ diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index e161805fe136..cede7163b8d8 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -202,7 +202,8 @@ ufs_get_desired_pm_lvl_for_dev_link_state(enum ufs_dev_pwr_mode dev_state, static struct ufs_dev_fix ufs_fixups[] = { /* UFS cards deviations table */ UFS_FIX(UFS_VENDOR_MICRON, UFS_ANY_MODEL, - UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM), + UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM | + UFS_DEVICE_QUIRK_SWAP_L2P_ENTRY_FOR_HPB_READ), UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL, UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM | UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE | diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c index 10d8b3dde976..3cce91d1e63f 100644 --- a/drivers/scsi/ufs/ufshpb.c +++ b/drivers/scsi/ufs/ufshpb.c @@ -329,15 +329,19 @@ ufshpb_get_pos_from_lpn(struct ufshpb_lu *hpb, unsigned long lpn, int *rgn_idx, } static void -ufshpb_set_hpb_read_to_upiu(struct ufshpb_lu *hpb, struct ufshcd_lrb *lrbp, - u32 lpn, __be64 ppn, u8 transfer_len, int read_id) +ufshpb_set_hpb_read_to_upiu(struct ufs_hba *hba, struct ufshpb_lu *hpb, + struct ufshcd_lrb *lrbp, u32 lpn, __be64 ppn, + u8 transfer_len, int read_id) { unsigned char *cdb = lrbp->cmd->cmnd; - + __be64 ppn_tmp = ppn; cdb[0] = UFSHPB_READ; + if (hba->dev_quirks & UFS_DEVICE_QUIRK_SWAP_L2P_ENTRY_FOR_HPB_READ) + ppn_tmp = swab64(ppn); + /* ppn value is stored as big-endian in the host memory */ - memcpy(&cdb[6], &ppn, sizeof(__be64)); + memcpy(&cdb[6], &ppn_tmp, sizeof(__be64)); cdb[14] = transfer_len; cdb[15] = read_id; @@ -696,7 +700,8 @@ int ufshpb_prep(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) } } - ufshpb_set_hpb_read_to_upiu(hpb, lrbp, lpn, ppn, transfer_len, read_id); + ufshpb_set_hpb_read_to_upiu(hba, hpb, lrbp, lpn, ppn, transfer_len, + read_id); hpb->stats.hit_cnt++; return 0; From 9329ddc34d46c495d997f96d8669f993a2ac5af4 Mon Sep 17 00:00:00 2001 From: Liangliang Li Date: Fri, 22 Oct 2021 20:54:07 +0800 Subject: [PATCH 13/62] ANDROID: GKI: Add some symbols to symbol list to support vendor module Add symbol to symbol list for oem module. Functions changes summary: 0 Removed, 0 Changed (4125 filtered out), 0 Added functions Variables changes summary: 0 Removed, 0 Changed (404 filtered out), 5 Added variables 5 Added variables: [A] 'tracepoint __tracepoint_android_rvh_tcp_recvmsg' [A] 'tracepoint __tracepoint_android_rvh_tcp_recvmsg_stat' [A] 'tracepoint __tracepoint_android_rvh_tcp_sendmsg_locked' [A] 'tracepoint __tracepoint_android_rvh_udp_recvmsg' [A] 'tracepoint __tracepoint_android_rvh_udp_sendmsg' Bug: 203861645 Change-Id: I13ac74ea48f26ec1ea4a9dd4fc01aded1b04e106 Signed-off-by: Liangliang Li --- android/abi_gki_aarch64.xml | 219 ++++++++++++++++++++++++++++++++++- android/abi_gki_aarch64_vivo | 5 + 2 files changed, 221 insertions(+), 3 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 7b1f4613c60d..7923e6c4f467 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -5635,6 +5635,9 @@ + + + @@ -5642,6 +5645,8 @@ + + @@ -12133,6 +12138,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -14183,6 +14208,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -21304,6 +21412,14 @@ + + + + + + + + @@ -65677,7 +65793,14 @@ - + + + + + + + + @@ -66934,7 +67057,20 @@ - + + + + + + + + + + + + + + @@ -67812,6 +67948,7 @@ + @@ -74209,6 +74346,7 @@ + @@ -85828,7 +85966,65 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -90608,6 +90804,7 @@ + @@ -110066,6 +110263,17 @@ + + + + + + + + + + + @@ -116190,6 +116398,9 @@ + + + @@ -116197,6 +116408,8 @@ + + diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index 464ac490992d..00d7caaae715 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -1782,10 +1782,15 @@ __tracepoint_android_rvh_set_readahead_gfp_mask __tracepoint_android_rvh_set_skip_swapcache_flags __tracepoint_android_rvh_set_task_cpu + __tracepoint_android_rvh_tcp_recvmsg + __tracepoint_android_rvh_tcp_recvmsg_stat + __tracepoint_android_rvh_tcp_sendmsg_locked __tracepoint_android_rvh_tick_entry __tracepoint_android_rvh_try_to_wake_up __tracepoint_android_rvh_try_to_wake_up_success __tracepoint_android_rvh_ttwu_cond + __tracepoint_android_rvh_udp_recvmsg + __tracepoint_android_rvh_udp_sendmsg __tracepoint_android_rvh_update_cpu_capacity __tracepoint_android_rvh_update_cpus_allowed __tracepoint_android_rvh_update_misfit_status From 28edc30761cd3ac6c66a0271d3982883f0442704 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Fri, 23 Jul 2021 18:15:31 +0800 Subject: [PATCH 14/62] ANDROID: GKI: rockchip: Add build script Add build script for rockchip platform. Bug: 194515348 Signed-off-by: Kever Yang Change-Id: Id848456a233114bb270d1715a7262788bb467b58 --- arch/arm64/configs/rockchip_gki.fragment | 237 +++++++++++++++++++++++ build.config.rockchip | 8 + 2 files changed, 245 insertions(+) create mode 100644 arch/arm64/configs/rockchip_gki.fragment create mode 100644 build.config.rockchip diff --git a/arch/arm64/configs/rockchip_gki.fragment b/arch/arm64/configs/rockchip_gki.fragment new file mode 100644 index 000000000000..36645c46d0b4 --- /dev/null +++ b/arch/arm64/configs/rockchip_gki.fragment @@ -0,0 +1,237 @@ +CONFIG_ARCH_ROCKCHIP=y +CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=m +CONFIG_ARM_ROCKCHIP_CPUFREQ=m +# CONFIG_ATA_SFF is not set +CONFIG_BACKLIGHT_PWM=m +CONFIG_BATTERY_CW2015=m +CONFIG_BATTERY_RK817=m +CONFIG_BATTERY_RK818=m +CONFIG_BLK_DEV_NVME=m +CONFIG_BMA2XX_ACC=m +CONFIG_CHARGER_BQ25700=m +CONFIG_CHARGER_RK817=m +CONFIG_CHARGER_RK818=m +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=m +# CONFIG_CLK_RK1808 is not set +# CONFIG_CLK_RK3308 is not set +CONFIG_COMMON_CLK_PWM=m +CONFIG_COMMON_CLK_RK808=m +CONFIG_COMMON_CLK_ROCKCHIP=m +CONFIG_COMMON_CLK_SCMI=m +CONFIG_COMPASS_AK8963=m +CONFIG_COMPASS_AK8975=m +CONFIG_COMPASS_DEVICE=m +CONFIG_CPUFREQ_DT=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_PX30=y +CONFIG_CPU_RK3328=y +CONFIG_CPU_RK3368=y +CONFIG_CPU_RK3399=y +CONFIG_CPU_RK3568=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=m +CONFIG_CRYPTO_GHASH_ARM64_CE=m +CONFIG_CRYPTO_SHA1_ARM64_CE=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_DEVFREQ_EVENT_ROCKCHIP_NOCP=m +CONFIG_DMABUF_HEAPS_CMA=m +CONFIG_DMABUF_HEAPS_SYSTEM=m +CONFIG_DRAGONRISE_FF=y +CONFIG_DRM_DW_HDMI_CEC=m +CONFIG_DRM_DW_HDMI_I2S_AUDIO=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_ROCKCHIP=m +CONFIG_DRM_SII902X=m +CONFIG_DTC_SYMBOLS=y +# CONFIG_DWMAC_GENERIC is not set +CONFIG_DW_WATCHDOG=m +CONFIG_GPIO_ROCKCHIP=m +CONFIG_GREENASIA_FF=y +CONFIG_GSENSOR_DEVICE=m +CONFIG_GS_DA223=m +CONFIG_GS_KXTJ9=m +CONFIG_GS_LIS3DH=m +CONFIG_GS_LSM303D=m +CONFIG_GS_MC3230=m +CONFIG_GS_MMA7660=m +CONFIG_GS_MMA8452=m +CONFIG_GS_MXC6655XA=m +CONFIG_GS_SC7660=m +CONFIG_GS_SC7A20=m +CONFIG_GS_SC7A30=m +CONFIG_GYROSCOPE_DEVICE=m +CONFIG_GYRO_EWTSA=m +CONFIG_GYRO_L3G20D=m +CONFIG_GYRO_L3G4200D=m +CONFIG_GYRO_LSM330=m +CONFIG_GYRO_MPU6500=m +CONFIG_GYRO_MPU6880=m +CONFIG_HALL_DEVICE=m +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_ALPS=m +CONFIG_HID_APPLEIR=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GREENASIA=m +CONFIG_HID_GYRATION=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_ICADE=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LENOVO=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PRIMAX=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_WALTOP=m +CONFIG_HID_ZEROPLUS=m +CONFIG_HID_ZYDACRON=m +CONFIG_HS_MH248=m +CONFIG_HW_RANDOM_ROCKCHIP=m +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HID=m +CONFIG_I2C_RK3X=m +CONFIG_IIO_BUFFER_CB=m +CONFIG_INPUT_RK805_PWRKEY=m +CONFIG_ION=y +CONFIG_ION_SYSTEM_HEAP=y +CONFIG_JOLIET=y +CONFIG_KEYBOARD_ADC=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LIGHT_DEVICE=m +CONFIG_LSM330_ACC=m +CONFIG_LS_CM3217=m +CONFIG_LS_CM3218=m +CONFIG_LS_STK3410=m +# CONFIG_MALI400_PROFILING is not set +CONFIG_MFD_RK808=m +CONFIG_MMC_DW=m +CONFIG_MMC_DW_ROCKCHIP=m +CONFIG_MMC_SDHCI_OF_ARASAN=m +CONFIG_MMC_SDHCI_OF_DWCMSHC=m +CONFIG_MPU6500_ACC=m +CONFIG_MPU6880_ACC=m +CONFIG_OPTEE=m +CONFIG_PANTHERLORD_FF=y +CONFIG_PHY_ROCKCHIP_DP=m +CONFIG_PHY_ROCKCHIP_EMMC=m +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m +CONFIG_PHY_ROCKCHIP_INNO_USB2=m +CONFIG_PHY_ROCKCHIP_INNO_USB3=m +CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=m +CONFIG_PHY_ROCKCHIP_NANENG_EDP=m +CONFIG_PHY_ROCKCHIP_PCIE=m +CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=m +CONFIG_PHY_ROCKCHIP_TYPEC=m +CONFIG_PHY_ROCKCHIP_USB=m +CONFIG_PINCTRL_RK805=m +CONFIG_PINCTRL_ROCKCHIP=m +CONFIG_PL330_DMA=m +CONFIG_PROXIMITY_DEVICE=m +CONFIG_PS_STK3410=m +CONFIG_PWM_ROCKCHIP=m +CONFIG_REGULATOR_ACT8865=m +CONFIG_REGULATOR_FAN53555=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_LP8752=m +CONFIG_REGULATOR_MP8865=m +CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_RK808=m +CONFIG_REGULATOR_TPS65132=m +CONFIG_REGULATOR_XZ3216=m +CONFIG_RK_CONSOLE_THREAD=y +CONFIG_RK_NAND=m +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_CPUINFO=m +CONFIG_ROCKCHIP_DEBUG=m +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_ROCKCHIP_EFUSE=m +CONFIG_ROCKCHIP_FIQ_DEBUGGER=m +CONFIG_ROCKCHIP_GRF=m +CONFIG_ROCKCHIP_INNO_HDMI=y +CONFIG_ROCKCHIP_IODOMAIN=m +CONFIG_ROCKCHIP_IOMMU=m +CONFIG_ROCKCHIP_IPA=m +CONFIG_ROCKCHIP_LVDS=y +CONFIG_ROCKCHIP_OPP=m +CONFIG_ROCKCHIP_OTP=m +CONFIG_ROCKCHIP_PHY=m +CONFIG_ROCKCHIP_PM_DOMAINS=m +CONFIG_ROCKCHIP_PVTM=m +CONFIG_ROCKCHIP_REMOTECTL=m +CONFIG_ROCKCHIP_REMOTECTL_PWM=m +CONFIG_ROCKCHIP_RGB=y +CONFIG_ROCKCHIP_SARADC=m +CONFIG_ROCKCHIP_SIP=m +CONFIG_ROCKCHIP_SYSTEM_MONITOR=m +CONFIG_ROCKCHIP_THERMAL=m +CONFIG_ROCKCHIP_VENDOR_STORAGE=m +CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y +CONFIG_RTC_DRV_RK808=m +CONFIG_SENSOR_DEVICE=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_SOC_BT_SCO=m +CONFIG_SND_SOC_CX2072X=m +CONFIG_SND_SOC_DUMMY_CODEC=m +CONFIG_SND_SOC_ES7202=m +CONFIG_SND_SOC_ES7210=m +CONFIG_SND_SOC_ES7243E=m +CONFIG_SND_SOC_ES8311=m +CONFIG_SND_SOC_ES8316=m +CONFIG_SND_SOC_ES8396=m +CONFIG_SND_SOC_RK3328=m +CONFIG_SND_SOC_RK817=m +CONFIG_SND_SOC_RK_CODEC_DIGITAL=m +CONFIG_SND_SOC_ROCKCHIP=m +CONFIG_SND_SOC_ROCKCHIP_PDM=m +CONFIG_SND_SOC_ROCKCHIP_SPDIF=m +CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SPI_ROCKCHIP=m +CONFIG_SPI_SPIDEV=m +CONFIG_SW_SYNC=m +CONFIG_SYSCON_REBOOT_MODE=m +CONFIG_TEE=m +CONFIG_TEST_POWER=m +CONFIG_TOUCHSCREEN_GSLX680_PAD=m +CONFIG_TOUCHSCREEN_GT1X=m +CONFIG_TYPEC_DP_ALTMODE=m +CONFIG_TYPEC_FUSB302=m +CONFIG_VIDEO_DW9714=m +CONFIG_VIDEO_OV2680=m +CONFIG_VIDEO_OV5695=m +CONFIG_ZISOFS=y +CONFIG_ZRAM=m +CONFIG_ZSMALLOC=m +# CONFIG_USB_DUMMY_HCD is not set diff --git a/build.config.rockchip b/build.config.rockchip new file mode 100644 index 000000000000..e7f08311793b --- /dev/null +++ b/build.config.rockchip @@ -0,0 +1,8 @@ +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki.aarch64 + + +DEFCONFIG=rockchip_aarch64_gki_defconfig +KMI_SYMBOL_LIST=android/abi_gki_aarch64_rockchip +PRE_DEFCONFIG_CMDS="KCONFIG_CONFIG=${ROOT_DIR}/common/arch/arm64/configs/${DEFCONFIG} ${ROOT_DIR}/common/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/common/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/common/arch/arm64/configs/rockchip_gki.config" +POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/common/arch/arm64/configs/${DEFCONFIG}" + From 8e9111c2b2be493a332adb256ffb2e1575c77aa1 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Thu, 21 Oct 2021 16:28:35 +0800 Subject: [PATCH 15/62] ANDROID: GKI: rockchip: Enable symbols for typec Leaf changes summary: 11 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 11 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 11 Added functions: [A] 'function int __typec_altmode_register_driver(typec_altmode_driver*, module*)' [A] 'function fwnode_handle* fwnode_create_software_node(const property_entry*, const fwnode_handle*)' [A] 'function tcpm_port* tcpm_register_port(device*, tcpc_dev*)' [A] 'function void tcpm_unregister_port(tcpm_port*)' [A] 'function typec_port* typec_altmode2port(typec_altmode*)' [A] 'function int typec_altmode_enter(typec_altmode*, u32*)' [A] 'function int typec_altmode_exit(typec_altmode*)' [A] 'function int typec_altmode_notify(typec_altmode*, unsigned long int, void*)' [A] 'function void typec_altmode_unregister_driver(typec_altmode_driver*)' [A] 'function int typec_altmode_vdm(typec_altmode*, const u32, const u32*, int)' [A] 'function int typec_get_negotiated_svdm_version(typec_port*)' Bug: 194515348 Signed-off-by: Kever Yang Change-Id: Iced97aa635613a36cde1af500edda173e12a2ca6 --- android/abi_gki_aarch64.xml | 524 ++++++++++++++++++------------- android/abi_gki_aarch64_rockchip | 51 ++- 2 files changed, 344 insertions(+), 231 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 7923e6c4f467..fadedc39249e 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -556,6 +556,7 @@ + @@ -2268,6 +2269,7 @@ + @@ -4761,8 +4763,10 @@ + + @@ -4891,9 +4895,16 @@ + + + + + + + @@ -12138,26 +12149,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -20291,6 +20282,14 @@ + + + + + + + + @@ -21412,14 +21411,6 @@ - - - - - - - - @@ -38885,6 +38876,7 @@ + @@ -39215,6 +39207,17 @@ + + + + + + + + + + + @@ -40960,6 +40963,7 @@ + @@ -53003,6 +53007,7 @@ + @@ -60779,7 +60784,65 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -61306,6 +61369,7 @@ + @@ -65311,6 +65375,11 @@ + + + + + @@ -67057,20 +67126,7 @@ - - - - - - - - - - - - - - + @@ -67837,6 +67893,7 @@ + @@ -67948,7 +68005,6 @@ - @@ -74346,7 +74402,6 @@ - @@ -76301,6 +76356,17 @@ + + + + + + + + + + + @@ -81056,6 +81122,7 @@ + @@ -81592,6 +81659,14 @@ + + + + + + + + @@ -85966,65 +86041,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -93043,6 +93060,7 @@ + @@ -94632,6 +94650,20 @@ + + + + + + + + + + + + + + @@ -99993,6 +100025,7 @@ + @@ -103607,6 +103640,10 @@ + + + + @@ -110263,17 +110300,6 @@ - - - - - - - - - - - @@ -112749,6 +112775,7 @@ + @@ -116655,6 +116682,11 @@ + + + + + @@ -125736,6 +125768,11 @@ + + + + + @@ -138492,6 +138529,11 @@ + + + + + @@ -138500,6 +138542,10 @@ + + + + @@ -139182,19 +139228,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -139443,48 +139523,48 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - - - + + + + + - - - - - - + + + + + + @@ -139494,13 +139574,13 @@ - - - + + + - - + + @@ -139509,31 +139589,31 @@ - - + + - - + + - - - + + + - - + + - - + + - - - - + + + + @@ -139565,91 +139645,91 @@ - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index d2a2cad1d6cf..f28bb0337447 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -308,6 +308,7 @@ flush_workqueue fpsimd_context_busy frame_vector_to_pages + free_irq __free_pages free_pages fwnode_handle_put @@ -358,6 +359,7 @@ i2c_get_adapter i2c_put_adapter i2c_register_driver + i2c_smbus_read_byte_data __i2c_smbus_xfer i2c_smbus_xfer i2c_transfer @@ -450,6 +452,7 @@ memset memstart_addr mmc_of_parse + mod_delayed_work_on mod_timer module_layout module_put @@ -616,6 +619,7 @@ regulator_set_voltage_time_sel remap_pfn_range remove_proc_entry + request_threaded_irq reset_control_assert reset_control_deassert revalidate_disk_size @@ -624,6 +628,7 @@ rtc_tm_to_time64 rtc_valid_tm scatterwalk_map_and_copy + sched_clock schedule schedule_timeout scnprintf @@ -694,6 +699,7 @@ sysfs_create_file_ns sysfs_create_group sysfs_create_link + __sysfs_match_string sysfs_remove_group sysfs_remove_link system_unbound_wq @@ -714,6 +720,7 @@ update_devfreq up_read up_write + usb_debug_root usleep_range uuid_null v4l2_async_notifier_cleanup @@ -968,7 +975,6 @@ extcon_set_property_capability hdmi_drm_infoframe_pack hdmi_vendor_infoframe_pack - mod_delayed_work_on of_get_i2c_adapter_by_node # required by dw-mipi-dsi.ko @@ -1031,7 +1037,6 @@ usb_add_hcd usb_calc_bus_time usb_create_hcd - usb_debug_root usb_del_gadget_udc usb_disabled usb_ep_set_maxpacket_limit @@ -1060,6 +1065,23 @@ # required by fan53555.ko gpiod_set_raw_value +# required by fusb302.ko + device_get_named_child_node + disable_irq_nosync + extcon_get_extcon_dev + fwnode_create_software_node + i2c_smbus_read_i2c_block_data + i2c_smbus_write_byte_data + i2c_smbus_write_i2c_block_data + tcpm_cc_change + tcpm_pd_hard_reset + tcpm_pd_receive + tcpm_pd_transmit_complete + tcpm_register_port + tcpm_unregister_port + tcpm_vbus_change + vsnprintf + # required by ghash-ce.ko aes_expandkey gf128mul_lle @@ -1119,14 +1141,12 @@ # required by i2c-hid.ko dev_printk - free_irq hid_add_device hid_allocate_device hid_destroy_device hid_input_report hid_parse_report i2c_smbus_read_byte - request_threaded_irq # required by i2c-mux.ko i2c_add_numbered_adapter @@ -1457,7 +1477,6 @@ # required by rk808.ko devm_mfd_add_devices - i2c_smbus_read_byte_data kobject_create_and_add platform_device_add platform_device_alloc @@ -1571,9 +1590,6 @@ iio_push_to_buffers iio_trigger_notify_done -# required by rockchip_sip.ko - sched_clock - # required by rockchip_thermal.ko devm_thermal_zone_of_sensor_register thermal_zone_device_disable @@ -1889,6 +1905,12 @@ __sg_page_iter_next __sg_page_iter_start +# required by tcpci_husb311.ko + i2c_smbus_read_word_data + tcpci_irq + tcpci_register_port + tcpci_unregister_port + # required by tee.ko bus_register bus_unregister @@ -1913,6 +1935,18 @@ # required by tps65132-regulator.ko regulator_set_active_discharge_regmap +# required by typec_displayport.ko + sysfs_notify + typec_altmode2port + typec_altmode_enter + typec_altmode_exit + typec_altmode_get_partner + typec_altmode_notify + __typec_altmode_register_driver + typec_altmode_unregister_driver + typec_altmode_vdm + typec_get_negotiated_svdm_version + # required by v4l2-fwnode.ko fwnode_device_is_available fwnode_get_name @@ -1970,7 +2004,6 @@ page_endio register_blkdev strcpy - __sysfs_match_string sysfs_streq unregister_blkdev vzalloc From a0345d459053d2c9e4c7c1fd1dc3c4897ed25abc Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Fri, 22 Oct 2021 15:01:58 +0800 Subject: [PATCH 16/62] ANDROID: GKI: rockchip: Enable symbols for pinctrl and rk8xx Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 2 Added functions: [A] 'function pinctrl_gpio_range* pinctrl_find_gpio_range_from_pin(pinctrl_dev*, unsigned int)' [A] 'function int spi_write_then_read(spi_device*, void*, unsigned int, void*, unsigned int)' Bug: 194515348 Signed-off-by: Kever Yang Change-Id: I97054044d799ddfdc969c4c616a2121187c41e77 --- android/abi_gki_aarch64.xml | 112 +++++-------------------------- android/abi_gki_aarch64_rockchip | 97 +++++++++++++++++++------- 2 files changed, 89 insertions(+), 120 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index fadedc39249e..43398a15bad4 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -3645,6 +3645,7 @@ + @@ -4628,6 +4629,7 @@ + @@ -20282,14 +20284,6 @@ - - - - - - - - @@ -39207,17 +39201,6 @@ - - - - - - - - - - - @@ -40963,7 +40946,6 @@ - @@ -53007,7 +52989,6 @@ - @@ -60784,65 +60765,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -65375,11 +65298,6 @@ - - - - - @@ -81122,7 +81040,6 @@ - @@ -81659,14 +81576,6 @@ - - - - - - - - @@ -93060,7 +92969,6 @@ - @@ -112775,7 +112683,6 @@ - @@ -132815,6 +132722,11 @@ + + + + + @@ -137863,6 +137775,14 @@ + + + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index f28bb0337447..dd78baf2a17a 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -56,7 +56,11 @@ __clk_get_name clk_get_parent clk_get_rate + clk_hw_get_flags clk_hw_get_name + clk_hw_get_parent + clk_hw_get_rate + __clk_mux_determine_rate clk_notifier_register clk_notifier_unregister clk_prepare @@ -109,6 +113,7 @@ del_gendisk del_timer del_timer_sync + desc_to_gpio destroy_workqueue dev_driver_string _dev_err @@ -140,9 +145,10 @@ devm_devfreq_register_opp_notifier devm_extcon_dev_allocate devm_extcon_dev_register - devm_extcon_register_notifier devm_free_irq devm_fwnode_gpiod_get_index + devm_get_clk_from_child + devm_gpiochip_add_data_with_key devm_gpiod_get devm_gpiod_get_index devm_gpiod_get_index_optional @@ -156,18 +162,21 @@ devm_kmemdup devm_kstrdup devm_led_classdev_register_ext + devm_mfd_add_devices devm_nvmem_register devm_of_clk_add_hw_provider __devm_of_phy_provider_register devm_phy_create devm_phy_get devm_pinctrl_get + devm_pinctrl_register devm_platform_get_and_ioremap_resource devm_platform_ioremap_resource devm_platform_ioremap_resource_byname devm_power_supply_register devm_pwm_get devm_regmap_field_alloc + __devm_regmap_init __devm_regmap_init_i2c __devm_regmap_init_mmio_clk devm_regulator_bulk_get @@ -294,7 +303,6 @@ dummy_irq_chip enable_irq extcon_get_edev_by_phandle - extcon_get_property extcon_get_state extcon_register_notifier extcon_set_state_sync @@ -341,6 +349,7 @@ gpiod_set_value_cansleep gpiod_to_irq gpio_to_desc + handle_nested_irq handle_simple_irq hid_debug hid_hw_close @@ -385,11 +394,14 @@ iommu_get_domain_for_dev __ioremap iounmap + irq_create_mapping_affinity __irq_domain_add irq_domain_remove irq_find_mapping irq_get_irq_data + irq_modify_status irq_set_chained_handler_and_data + irq_set_chip irq_set_chip_and_handler_name irq_set_chip_data irq_set_irq_type @@ -451,6 +463,7 @@ memdup_user memset memstart_addr + mfd_remove_devices mmc_of_parse mod_delayed_work_on mod_timer @@ -474,6 +487,7 @@ of_clk_del_provider of_clk_get of_clk_get_by_name + of_clk_src_onecell_get of_clk_src_simple_get of_count_phandle_with_args of_devfreq_cooling_register_power @@ -525,11 +539,15 @@ phy_power_off phy_power_on phy_set_mode_ext + pinconf_generic_dt_node_to_map pinctrl_dev_get_drvdata + pinctrl_gpio_direction_input + pinctrl_gpio_direction_output pinctrl_lookup_state pinctrl_pm_select_default_state pinctrl_pm_select_sleep_state pinctrl_select_state + pinctrl_utils_free_map platform_bus_type platform_device_put platform_device_register_full @@ -596,7 +614,9 @@ regmap_bulk_write regmap_field_read regmap_field_update_bits_base + regmap_irq_get_domain regmap_irq_get_virq + regmap_raw_write regmap_read regmap_update_bits_base regmap_write @@ -681,6 +701,8 @@ snd_soc_put_enum_double snd_soc_put_volsw snprintf + __spi_register_driver + spi_sync sprintf sscanf __stack_chk_fail @@ -833,7 +855,6 @@ drm_dp_dpcd_write drm_dp_start_crc drm_dp_stop_crc - irq_modify_status # required by ch.ko param_array_ops @@ -846,6 +867,15 @@ of_clk_add_hw_provider of_clk_hw_simple_get +# required by clk-rk628.ko + devm_reset_controller_register + +# required by clk-rockchip-regmap.ko + clk_hw_get_num_parents + clk_hw_get_parent_by_index + divider_recalc_rate + divider_round_rate_parent + # required by clk-rockchip.ko clk_divider_ops clk_divider_ro_ops @@ -853,12 +883,8 @@ clk_fractional_divider_ops clk_gate_ops __clk_get_hw - clk_hw_get_flags - clk_hw_get_parent - clk_hw_get_rate clk_hw_register_composite clk_hw_round_rate - __clk_mux_determine_rate clk_mux_ops clk_mux_ro_ops clk_register_composite @@ -868,7 +894,6 @@ clk_register_mux_table divider_get_val match_string - of_clk_src_onecell_get register_restart_handler reset_controller_register __udelay @@ -929,7 +954,6 @@ power_supply_get_battery_info power_supply_put_battery_info regmap_raw_read - regmap_raw_write # required by dw-hdmi-cec.ko cec_allocate_adapter @@ -1095,7 +1119,6 @@ handle_edge_irq handle_level_irq __irq_alloc_domain_generic_chips - irq_create_mapping_affinity irq_gc_ack_set_bit irq_gc_mask_clr_bit irq_gc_mask_set_bit @@ -1136,7 +1159,6 @@ i2c_verify_client # required by i2c-gpio.ko - desc_to_gpio i2c_bit_add_numbered_bus # required by i2c-hid.ko @@ -1401,6 +1423,7 @@ nvmem_cell_get # required by phy-rockchip-inno-usb2.ko + devm_extcon_register_notifier extcon_set_state extcon_sync wakeup_source_remove @@ -1409,16 +1432,24 @@ strcasecmp usb_add_phy +# required by phy-rockchip-typec.ko + extcon_get_property + # required by phy-rockchip-usb.ko __of_reset_control_get -# required by pinctrl-rk805.ko - devm_gpiochip_add_data_with_key - devm_pinctrl_register - pinconf_generic_dt_node_to_map - pinctrl_gpio_direction_input - pinctrl_gpio_direction_output - pinctrl_utils_free_map +# required by pinctrl-rk628.ko + irq_domain_xlate_twocell + pinctrl_add_gpio_range + pinctrl_find_gpio_range_from_pin + +# required by pinctrl-rockchip.ko + of_find_node_by_phandle + of_platform_populate + pinconf_generic_parse_dt_config + pinctrl_force_default + pinctrl_force_sleep + pin_get_name # required by pl330.ko amba_driver_register @@ -1468,21 +1499,35 @@ devres_release kernel_kobj +# required by rk628.ko + irq_dispose_mapping + irq_domain_xlate_onetwocell + irq_set_parent + mfd_add_devices + # required by rk805-pwrkey.ko devm_request_any_context_irq input_set_capability +# required by rk806-core.ko + devm_regmap_add_irq_chip + +# required by rk806-spi.ko + spi_write_then_read + # required by rk808-regulator.ko gpiod_is_active_low # required by rk808.ko - devm_mfd_add_devices kobject_create_and_add platform_device_add platform_device_alloc + pm_power_off_prepare + register_syscore_ops regmap_add_irq_chip regmap_del_irq_chip - regmap_irq_get_domain + system_state + unregister_syscore_ops # required by rk818_battery.ko blocking_notifier_call_chain @@ -1735,6 +1780,7 @@ drm_property_create_range drm_property_destroy __drm_puts_seq_file + drm_rect_calc_hscale drm_send_event_locked drm_simple_encoder_init drm_universal_plane_init @@ -1838,7 +1884,6 @@ of_property_read_variable_u8_array # required by snd-soc-cx2072x.ko - __devm_regmap_init regmap_multi_reg_write snd_soc_params_to_frame_size @@ -1856,8 +1901,13 @@ snd_pcm_hw_constraint_eld snd_soc_dapm_add_routes +# required by snd-soc-rk817.ko + snd_soc_add_component_controls + snd_soc_component_exit_regmap + snd_soc_component_init_regmap + snd_soc_unregister_component + # required by snd-soc-simple-card-utils.ko - devm_get_clk_from_child devm_kasprintf devm_kvasprintf snd_soc_card_jack_new @@ -1890,9 +1940,7 @@ spi_finalize_current_transfer # required by spidev.ko - __spi_register_driver spi_setup - spi_sync stream_open # required by system_heap.ko @@ -1936,6 +1984,7 @@ regulator_set_active_discharge_regmap # required by typec_displayport.ko + fwnode_find_reference sysfs_notify typec_altmode2port typec_altmode_enter From 48e5c07fe0d9ffd9057690985362632e97c97ee9 Mon Sep 17 00:00:00 2001 From: Guangming Cao Date: Wed, 15 Sep 2021 14:26:47 +0800 Subject: [PATCH 17/62] ANDROID: dma_heap: add dma_parms for uncached heap In system_heap_do_allocate, we will use uncached heap device to call dma_map_sgtable & dma_unmap_sgtable to do implicitly flush. However, device of uncached heap is not set dma_parms, default value(64KB) is too small for dma_heap buffer, it will cause some warning log below when CONFIG_DMA_API_DEBUG_SG is enabled. warning log sample: |DMA-API: dma_heap system-uncached: mapping sg segment longer than device claims to support [len=1048576] [max=65536] |WARNING: CPU: 4 PID: 576 at kernel/dma/debug.c:1173 debug_dma_map_sg+0x214/0x438 |...... Bug: 199986022 Change-Id: I97076de329f4a50d035d43d69cb17606064c3151 Signed-off-by: Guangming Cao --- drivers/dma-buf/heaps/system_heap.c | 34 +++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/drivers/dma-buf/heaps/system_heap.c b/drivers/dma-buf/heaps/system_heap.c index 2aa3b5eafaff..a9a9abfd4bb1 100644 --- a/drivers/dma-buf/heaps/system_heap.c +++ b/drivers/dma-buf/heaps/system_heap.c @@ -543,10 +543,37 @@ static struct dma_heap_ops system_uncached_heap_ops = { .allocate = system_uncached_heap_not_initialized, }; +static int set_heap_dev_dma(struct device *heap_dev) +{ + int err = 0; + + if (!heap_dev) + return -EINVAL; + + dma_coerce_mask_and_coherent(heap_dev, DMA_BIT_MASK(64)); + + if (!heap_dev->dma_parms) { + heap_dev->dma_parms = devm_kzalloc(heap_dev, + sizeof(*heap_dev->dma_parms), + GFP_KERNEL); + if (!heap_dev->dma_parms) + return -ENOMEM; + + err = dma_set_max_seg_size(heap_dev, (unsigned int)DMA_BIT_MASK(64)); + if (err) { + devm_kfree(heap_dev, heap_dev->dma_parms); + dev_err(heap_dev, "Failed to set DMA segment size, err:%d\n", err); + return err; + } + } + + return 0; +} + static int system_heap_create(void) { struct dma_heap_export_info exp_info; - int i; + int i, err = 0; for (i = 0; i < NUM_ORDERS; i++) { pools[i] = dmabuf_page_pool_create(order_flags[i], orders[i]); @@ -577,7 +604,10 @@ static int system_heap_create(void) if (IS_ERR(sys_uncached_heap)) return PTR_ERR(sys_uncached_heap); - dma_coerce_mask_and_coherent(dma_heap_get_dev(sys_uncached_heap), DMA_BIT_MASK(64)); + err = set_heap_dev_dma(dma_heap_get_dev(sys_uncached_heap)); + if (err) + return err; + mb(); /* make sure we only set allocate after dma_mask is set */ system_uncached_heap_ops.allocate = system_uncached_heap_allocate; From 6cb41901eada46c495ea70bc487f946a64026da0 Mon Sep 17 00:00:00 2001 From: Woogeun Lee Date: Fri, 22 Oct 2021 10:57:34 +0900 Subject: [PATCH 18/62] ANDROID: ABI: update allowed list for galaxy Leaf changes summary: 11 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 10 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable 10 Added functions: [A] 'function int blkcg_activate_policy(request_queue*, const blkcg_policy*)' [A] 'function void blkcg_deactivate_policy(request_queue*, const blkcg_policy*)' [A] 'function int blkcg_policy_register(blkcg_policy*)' [A] 'function void blkcg_policy_unregister(blkcg_policy*)' [A] 'function blkcg_gq* blkg_lookup_slowpath(blkcg*, request_queue*, bool)' [A] 'function cgroup_subsys_state* css_next_descendant_pre(cgroup_subsys_state*, cgroup_subsys_state*)' [A] 'function int dump_align(coredump_params*, int)' [A] 'function int dump_emit(coredump_params*, void*, int)' [A] 'function cgroup_subsys_state* kthread_blkcg()' [A] 'function cgroup_subsys_state* of_css(kernfs_open_file*)' 1 Added variable: [A] 'blkcg blkcg_root' Bug: 203800167 Signed-off-by: Woogeun Lee Change-Id: Ide71cb03541352a83466b922951bb9be4aba585f --- android/abi_gki_aarch64.xml | 152 +++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_galaxy | 16 ++++ 2 files changed, 168 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 43398a15bad4..36d2db93a951 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -836,11 +836,16 @@ + + + + + @@ -1182,6 +1187,7 @@ + @@ -2127,7 +2133,9 @@ + + @@ -2884,6 +2892,7 @@ + @@ -3276,6 +3285,7 @@ + @@ -5902,6 +5912,7 @@ + @@ -6202,6 +6213,12 @@ + + + + + + @@ -8508,6 +8525,7 @@ + @@ -10372,6 +10390,7 @@ + @@ -10648,6 +10667,7 @@ + @@ -15086,6 +15106,7 @@ + @@ -16445,6 +16466,7 @@ + @@ -22521,6 +22543,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -25744,6 +25810,10 @@ + + + + @@ -29589,6 +29659,7 @@ + @@ -30232,6 +30303,7 @@ + @@ -35057,6 +35129,7 @@ + @@ -40189,6 +40262,7 @@ + @@ -44421,6 +44495,7 @@ + @@ -48468,6 +48543,10 @@ + + + + @@ -50079,6 +50158,7 @@ + @@ -53546,6 +53626,7 @@ + @@ -56614,6 +56695,12 @@ + + + + + + @@ -67788,6 +67875,7 @@ + @@ -68633,6 +68721,7 @@ + @@ -71206,6 +71295,7 @@ + @@ -71975,6 +72065,7 @@ + @@ -77687,6 +77778,7 @@ + @@ -87574,6 +87666,7 @@ + @@ -88788,6 +88881,10 @@ + + + + @@ -91948,6 +92045,7 @@ + @@ -101202,6 +101300,7 @@ + @@ -104594,6 +104693,7 @@ + @@ -104844,6 +104944,7 @@ + @@ -110086,6 +110187,7 @@ + @@ -110339,6 +110441,7 @@ + @@ -112347,6 +112450,7 @@ + @@ -118060,6 +118164,25 @@ + + + + + + + + + + + + + + + + + + + @@ -118089,6 +118212,12 @@ + + + + + + @@ -119911,6 +120040,11 @@ + + + + + @@ -124935,12 +125069,23 @@ + + + + + + + + + + + @@ -128897,6 +129042,9 @@ + + + @@ -130799,6 +130947,10 @@ + + + + diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy index 6370941fad5e..e20b72055f08 100644 --- a/android/abi_gki_aarch64_galaxy +++ b/android/abi_gki_aarch64_galaxy @@ -749,11 +749,17 @@ blk_sync_queue blk_unregister_region blk_update_request blk_verify_command +blkcg_activate_policy +blkcg_deactivate_policy +blkcg_policy_register +blkcg_policy_unregister +blkcg_root blkdev_fsync blkdev_get_by_dev blkdev_get_by_path blkdev_issue_flush blkdev_put +blkg_lookup_slowpath blocking_notifier_call_chain blocking_notifier_chain_register blocking_notifier_chain_unregister @@ -922,6 +928,8 @@ copy_from_kernel_nofault copy_page cpu_all_bits cpu_bit_bitmap +cpu_hotplug_disable +cpu_hotplug_enable cpu_hwcap_keys cpu_hwcaps cpu_irqtime @@ -1010,6 +1018,7 @@ crypto_unregister_alg crypto_unregister_rngs crypto_unregister_scomp css_next_child +css_next_descendant_pre csum_ipv6_magic csum_partial csum_tcpudp_nofold @@ -1163,6 +1172,7 @@ device_del device_destroy device_find_child device_for_each_child +device_get_child_node_count device_get_dma_attr device_get_mac_address device_get_match_data @@ -1808,7 +1818,9 @@ drm_writeback_signal_completion drmm_kmalloc drmm_mode_config_init dst_release +dump_align dump_backtrace +dump_emit dump_stack dup_iter dw_handle_msi_irq @@ -2432,6 +2444,7 @@ kstrtoull_from_user ksys_sync_helper kthread_bind kthread_bind_mask +kthread_blkcg kthread_cancel_delayed_work_sync kthread_cancel_work_sync kthread_create_on_node @@ -2733,6 +2746,7 @@ of_clk_src_simple_get of_count_phandle_with_args of_cpu_node_to_id of_cpufreq_cooling_register +of_css of_devfreq_cooling_register of_devfreq_cooling_register_power of_device_get_match_data @@ -3442,6 +3456,7 @@ scsi_compat_ioctl scsi_device_get scsi_device_put scsi_device_quiesce +scsi_dma_unmap scsi_eh_ready_devs scsi_ioctl scsi_ioctl_block_when_processing_errors @@ -3484,6 +3499,7 @@ sdio_writesb securityfs_create_dir securityfs_create_file securityfs_remove +send_sig_info seq_buf_printf seq_file_path seq_hex_dump From 168de6b1d959bb27f7aea6a0041f848a2391b1e5 Mon Sep 17 00:00:00 2001 From: Wesley Cheng Date: Mon, 18 Oct 2021 12:26:47 -0700 Subject: [PATCH 19/62] FROMGIT: usb: dwc3: gadget: Change to dev_dbg() when queuing to inactive gadget/ep Since function drivers will still be active until dwc3_disconnect_gadget() is called, some applications will continue to queue packets to DWC3 gadget. This can lead to a flood of messages regarding failed ep queue, as the endpoint is in the process of being disabled. Change the log level to debug, so that it can be enabled when debugging issues. Signed-off-by: Wesley Cheng Link: https://lore.kernel.org/r/20211018192647.32121-1-wcheng@codeaurora.org Signed-off-by: Greg Kroah-Hartman (cherry picked from commit b851f7c7b8fd5365e447bb60e1e18eb6de628507 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next) Bug: 203763122 Change-Id: I5120890fa12f707ae54da551db9aab02dded0063 Signed-off-by: Wesley Cheng --- drivers/usb/dwc3/gadget.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 0c38791da695..b863f03af705 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -1811,7 +1811,7 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req) struct dwc3 *dwc = dep->dwc; if (!dep->endpoint.desc || !dwc->pullups_connected || !dwc->connected) { - dev_err(dwc->dev, "%s: can't queue to disabled endpoint\n", + dev_dbg(dwc->dev, "%s: can't queue to disabled endpoint\n", dep->name); return -ESHUTDOWN; } From a84e45d3c3dd218d28660b6c27a80592c3f5272b Mon Sep 17 00:00:00 2001 From: Jack Pham Date: Thu, 21 Oct 2021 11:01:28 -0700 Subject: [PATCH 20/62] FROMGIT: usb: dwc3: gadget: Skip resizing EP's TX FIFO if already resized Some functions may dynamically enable and disable their endpoints regularly throughout their operation, particularly when Set Interface is employed to switch between Alternate Settings. For instance the UAC2 function has its respective endpoints for playback & capture associated with AltSetting 1, in which case those endpoints would not get enabled until the host activates the AltSetting. And they conversely become disabled when the interfaces' AltSetting 0 is chosen. With the DWC3 FIFO resizing algorithm recently added, every usb_ep_enable() call results in a call to resize that EP's TXFIFO, but if the same endpoint is enabled again and again, this incorrectly leads to FIFO RAM allocation exhaustion as the mechanism did not account for the possibility that endpoints can be re-enabled many times. Example log splat: dwc3 a600000.dwc3: Fifosize(3717) > RAM size(3462) ep3in depth:217973127 configfs-gadget gadget: u_audio_start_capture:521 Error! dwc3 a600000.dwc3: request 000000000be13e18 was not queued to ep3in Add another bit DWC3_EP_TXFIFO_RESIZED to dep->flags to keep track of whether an EP had already been resized in the current configuration. If so, bail out of dwc3_gadget_resize_tx_fifos() to avoid the calculation error resulting from accumulating the EP's FIFO depth repeatedly. This flag is retained across multiple ep_disable() and ep_enable() calls and is cleared when GTXFIFOSIZn is reset in dwc3_gadget_clear_tx_fifos() upon receiving the next Set Config. Fixes: 9f607a309fbe9 ("usb: dwc3: Resize TX FIFOs to meet EP bursting requirements") Reviewed-by: Thinh Nguyen Signed-off-by: Jack Pham Link: https://lore.kernel.org/r/20211021180129.27938-1-jackp@codeaurora.org Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 876a75cb520f5869533a30a6ca01545ec817b7a0 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next) Bug: 204047971 Change-Id: Ia104c2fa9be36182a23a7e6f923e499ef3bcc3b1 Signed-off-by: Jack Pham --- drivers/usb/dwc3/core.h | 1 + drivers/usb/dwc3/gadget.c | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index f66fefaf401a..c6b05d6142d1 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -728,6 +728,7 @@ struct dwc3_ep { #define DWC3_EP_FORCE_RESTART_STREAM BIT(9) #define DWC3_EP_FIRST_STREAM_PRIMED BIT(10) #define DWC3_EP_PENDING_CLEAR_STALL BIT(11) +#define DWC3_EP_TXFIFO_RESIZED BIT(12) /* This last one is specific to EP0 */ #define DWC3_EP0_DIR_IN BIT(31) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index b863f03af705..224a4a34509a 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -700,6 +700,7 @@ void dwc3_gadget_clear_tx_fifos(struct dwc3 *dwc) DWC31_GTXFIFOSIZ_TXFRAMNUM; dwc3_writel(dwc->regs, DWC3_GTXFIFOSIZ(num >> 1), size); + dep->flags &= ~DWC3_EP_TXFIFO_RESIZED; } dwc->num_ep_resized = 0; } @@ -745,6 +746,10 @@ static int dwc3_gadget_resize_tx_fifos(struct dwc3_ep *dep) if (!usb_endpoint_dir_in(dep->endpoint.desc) || dep->number <= 1) return 0; + /* bail if already resized */ + if (dep->flags & DWC3_EP_TXFIFO_RESIZED) + return 0; + ram1_depth = DWC3_RAM1_DEPTH(dwc->hwparams.hwparams7); if ((dep->endpoint.maxburst > 1 && @@ -805,6 +810,7 @@ static int dwc3_gadget_resize_tx_fifos(struct dwc3_ep *dep) } dwc3_writel(dwc->regs, DWC3_GTXFIFOSIZ(dep->number >> 1), fifo_size); + dep->flags |= DWC3_EP_TXFIFO_RESIZED; dwc->num_ep_resized++; return 0; @@ -993,7 +999,7 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep) dep->stream_capable = false; dep->type = 0; - dep->flags = 0; + dep->flags &= DWC3_EP_TXFIFO_RESIZED; return 0; } From 16493a3c879e6a527051f9bd38eedd53baaa5a7e Mon Sep 17 00:00:00 2001 From: Bicycle Tsai Date: Tue, 26 Oct 2021 01:14:03 +0000 Subject: [PATCH 21/62] Revert "BACKPORT: ASoC: soc-pcm: Get all BEs along DAPM path" This reverts commit c82dbcbec1cfc7bd0a246cf12e9f100f0ca49e8f. Reason for revert: use vendor_hook approach instead of adding a new field. Change-Id: I001dafc1b90cfe4567a13f538c2f8d25a0929504 Signed-off-by: Bicycle Tsai --- include/sound/soc.h | 6 ------ sound/soc/soc-core.c | 8 -------- sound/soc/soc-pcm.c | 6 +----- 3 files changed, 1 insertion(+), 19 deletions(-) diff --git a/include/sound/soc.h b/include/sound/soc.h index 330c82c58afe..63338f68de48 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -1105,12 +1105,6 @@ struct snd_soc_card { ANDROID_KABI_RESERVE(3); ANDROID_KABI_RESERVE(4); }; - -struct snd_soc_card_ext { - struct snd_soc_card card; - unsigned int component_chaining:1; -}; - #define for_each_card_prelinks(card, i, link) \ for ((i) = 0; \ ((i) < (card)->num_links) && ((link) = &(card)->dai_link[i]); \ diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 59113d831c39..678547b939e5 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -2175,17 +2175,9 @@ EXPORT_SYMBOL_GPL(snd_soc_add_dai_controls); */ int snd_soc_register_card(struct snd_soc_card *card) { - struct snd_soc_card_ext *card_ext; - if (!card->name || !card->dev) return -EINVAL; - card_ext = devm_kzalloc(card->dev, - sizeof(struct snd_soc_card_ext), GFP_KERNEL); - - memcpy(&card_ext->card, card, sizeof(struct snd_soc_card)); - card = &card_ext->card; - dev_set_drvdata(card->dev, card); INIT_LIST_HEAD(&card->widgets); diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 406273166d19..69c78fd59e41 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -1274,7 +1274,6 @@ int dpcm_path_get(struct snd_soc_pcm_runtime *fe, int stream, struct snd_soc_dapm_widget_list **list) { struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(fe, 0); - struct snd_soc_card_ext *card_ext; int paths; if (fe->num_cpus > 1) { @@ -1283,12 +1282,9 @@ int dpcm_path_get(struct snd_soc_pcm_runtime *fe, return -EINVAL; } - card_ext = container_of(fe->card, struct snd_soc_card_ext, card); - /* get number of valid DAI paths and their widgets */ paths = snd_soc_dapm_dai_get_connected_widgets(cpu_dai, stream, list, - card_ext->component_chaining ? - NULL : dpcm_end_walk_at_be); + dpcm_end_walk_at_be); dev_dbg(fe->dev, "ASoC: found %d audio %s paths\n", paths, stream ? "capture" : "playback"); From a8c611fa247baaf8ab0247f0d8d696e81a92f107 Mon Sep 17 00:00:00 2001 From: Jiewen Wang Date: Tue, 26 Oct 2021 17:05:27 +0800 Subject: [PATCH 22/62] ANDROID: GKI: Update symbols list for vivo Add symbol to symbol list for oem module. Functions changes summary: 0 Removed, 0 Changed, 2 Added functions Variables changes summary: 0 Removed, 0 Changed, 2 Added variables 2 Added functions: [A] 'function int __traceiter_android_vh_mmap_region(void*, vm_area_struct*, unsigned long int)' [A] 'function int __traceiter_android_vh_try_to_unmap_one(void*, vm_area_struct*, page*, unsigned long int, bool)' 2 Added variables: [A] 'tracepoint __tracepoint_android_vh_mmap_region' [A] 'tracepoint __tracepoint_android_vh_try_to_unmap_one' Bug: 204157239 Change-Id: I52791ae530d94afc0016a845c3649c67fbe37613 Signed-off-by: Jiewen Wang --- android/abi_gki_aarch64.xml | 402 ++++++++++++++++++----------------- android/abi_gki_aarch64_vivo | 4 + 2 files changed, 215 insertions(+), 191 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 36d2db93a951..abe45e7be2f8 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -427,6 +427,7 @@ + @@ -480,6 +481,7 @@ + @@ -5760,6 +5762,7 @@ + @@ -5826,6 +5829,7 @@ + @@ -7331,7 +7335,7 @@ - + @@ -23490,42 +23494,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -33021,60 +33025,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39018,7 +39022,7 @@ - + @@ -49679,18 +49683,18 @@ - + - + - + - + - + @@ -56232,390 +56236,390 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -65840,7 +65844,7 @@ - + @@ -74359,15 +74363,15 @@ - + - + - + - + @@ -97315,46 +97319,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -115584,6 +115588,12 @@ + + + + + + @@ -115900,6 +115910,14 @@ + + + + + + + + @@ -116538,6 +116556,7 @@ + @@ -116604,6 +116623,7 @@ + @@ -125192,10 +125212,10 @@ - - - - + + + + diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index 00d7caaae715..93e96eddb122 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -1721,6 +1721,7 @@ __traceiter_android_vh_iommu_setup_dma_ops __traceiter_android_vh_ipi_stop __traceiter_android_vh_jiffies_update + __traceiter_android_vh_mmap_region __traceiter_android_vh_mmc_attach_sd __traceiter_android_vh_mmc_blk_mq_rw_recovery __traceiter_android_vh_mmc_blk_reset @@ -1733,6 +1734,7 @@ __traceiter_android_vh_show_resume_epoch_val __traceiter_android_vh_show_suspend_epoch_val __traceiter_android_vh_timer_calc_index + __traceiter_android_vh_try_to_unmap_one __traceiter_android_vh_ufs_check_int_errors __traceiter_android_vh_ufs_compl_command __traceiter_android_vh_ufs_send_command @@ -1813,6 +1815,7 @@ __tracepoint_android_vh_ipi_stop __tracepoint_android_vh_irqtime_account_process_tick __tracepoint_android_vh_jiffies_update + __tracepoint_android_vh_mmap_region __tracepoint_android_vh_mmc_attach_sd __tracepoint_android_vh_mmc_blk_mq_rw_recovery __tracepoint_android_vh_mmc_blk_reset @@ -1825,6 +1828,7 @@ __tracepoint_android_vh_show_resume_epoch_val __tracepoint_android_vh_show_suspend_epoch_val __tracepoint_android_vh_timer_calc_index + __tracepoint_android_vh_try_to_unmap_one __tracepoint_android_vh_tune_scan_type __tracepoint_android_vh_tune_swappiness __tracepoint_android_vh_ufs_check_int_errors From 2a813b466bbec6d8eaaf02231b2dba564412d57b Mon Sep 17 00:00:00 2001 From: Liujie Xie Date: Tue, 26 Oct 2021 23:34:24 +0800 Subject: [PATCH 23/62] ANDROID: GKI: Update symbols to abi_gki_aarch64_oplus Update symbols to symbol list externed by oem modules. Leaf changes summary: 10 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 5 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 5 Added variables 5 Added functions: [A] 'function int __traceiter_android_vh_mem_cgroup_alloc(void*, mem_cgroup*)' [A] 'function int __traceiter_android_vh_mem_cgroup_css_offline(void*, cgroup_subsys_state*, mem_cgroup*)' [A] 'function int __traceiter_android_vh_mem_cgroup_css_online(void*, cgroup_subsys_state*, mem_cgroup*)' [A] 'function int __traceiter_android_vh_mem_cgroup_free(void*, mem_cgroup*)' [A] 'function int __traceiter_android_vh_mem_cgroup_id_remove(void*, mem_cgroup*)' 5 Added variables: [A] 'tracepoint __tracepoint_android_vh_mem_cgroup_alloc' [A] 'tracepoint __tracepoint_android_vh_mem_cgroup_css_offline' [A] 'tracepoint __tracepoint_android_vh_mem_cgroup_css_online' [A] 'tracepoint __tracepoint_android_vh_mem_cgroup_free' [A] 'tracepoint __tracepoint_android_vh_mem_cgroup_id_remove' Bug: 193384408 Change-Id: Ia5112f375626f04481b0042ec808c67f78891086 Signed-off-by: Liujie Xie --- android/abi_gki_aarch64.xml | 235 ++++++++++++++++++++-------------- android/abi_gki_aarch64_oplus | 16 +++ 2 files changed, 158 insertions(+), 93 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index abe45e7be2f8..62fb83bc5f37 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -426,6 +426,11 @@ + + + + + @@ -5761,6 +5766,11 @@ + + + + + @@ -6236,81 +6246,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7271,36 +7281,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -70533,7 +70543,14 @@ - + + + + + + + + @@ -115583,6 +115600,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -116555,6 +116599,11 @@ + + + + + @@ -137489,18 +137538,18 @@ - - - + + + - - - + + + @@ -137538,9 +137587,9 @@ - - - + + + @@ -137595,61 +137644,61 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -137694,11 +137743,11 @@ - - - - - + + + + + @@ -137745,12 +137794,12 @@ - - + + - - + + diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index a0f221271a40..8d81b5dc8b62 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -2617,6 +2617,12 @@ __traceiter_android_vh_jiffies_update __traceiter_android_vh_kmalloc_slab __traceiter_android_vh_logbuf + __traceiter_android_vh_mem_cgroup_alloc + __traceiter_android_vh_mem_cgroup_css_offline + __traceiter_android_vh_mem_cgroup_css_online + __traceiter_android_vh_mem_cgroup_free + __traceiter_android_vh_mem_cgroup_id_remove + __traceiter_android_vh_meminfo_proc_show __traceiter_android_vh_mutex_unlock_slowpath __traceiter_android_vh_mutex_wait_finish __traceiter_android_vh_mutex_wait_start @@ -2625,6 +2631,7 @@ __traceiter_android_vh_printk_hotplug __traceiter_android_vh_process_killed __traceiter_android_vh_revert_creds + __traceiter_android_vh_rmqueue __traceiter_android_vh_rwsem_init __traceiter_android_vh_rwsem_wake __traceiter_android_vh_rwsem_wake_finish @@ -2653,6 +2660,7 @@ __traceiter_android_vh_syscall_prctl_finished __traceiter_android_vh_timer_calc_index __traceiter_android_vh_tune_inactive_ratio + __traceiter_android_vh_tune_scan_type __traceiter_android_vh_tune_swappiness __traceiter_android_vh_ufs_compl_command __traceiter_android_vh_ufs_send_command @@ -2791,6 +2799,12 @@ __tracepoint_android_vh_jiffies_update __tracepoint_android_vh_kmalloc_slab __tracepoint_android_vh_logbuf + __tracepoint_android_vh_mem_cgroup_alloc + __tracepoint_android_vh_mem_cgroup_css_offline + __tracepoint_android_vh_mem_cgroup_css_online + __tracepoint_android_vh_mem_cgroup_free + __tracepoint_android_vh_mem_cgroup_id_remove + __tracepoint_android_vh_meminfo_proc_show __tracepoint_android_vh_mutex_unlock_slowpath __tracepoint_android_vh_mutex_wait_finish __tracepoint_android_vh_mutex_wait_start @@ -2799,6 +2813,7 @@ __tracepoint_android_vh_printk_hotplug __tracepoint_android_vh_process_killed __tracepoint_android_vh_revert_creds + __tracepoint_android_vh_rmqueue __tracepoint_android_vh_rwsem_init __tracepoint_android_vh_rwsem_wake __tracepoint_android_vh_rwsem_wake_finish @@ -2827,6 +2842,7 @@ __tracepoint_android_vh_syscall_prctl_finished __tracepoint_android_vh_timer_calc_index __tracepoint_android_vh_tune_inactive_ratio + __tracepoint_android_vh_tune_scan_type __tracepoint_android_vh_tune_swappiness __tracepoint_android_vh_ufs_compl_command __tracepoint_android_vh_ufs_send_command From 09bd9e940e98acad0c854f75b31fc79a93cde981 Mon Sep 17 00:00:00 2001 From: Tengfei Fan Date: Fri, 22 Oct 2021 13:51:11 +0800 Subject: [PATCH 24/62] ANDROID: cpuhp/pause: schedule cpu_hotplug_work on resume cpu Resume cpu need to run cpuset_hotplug_workfn which need take about several milliseconds, and even more if the system have more tasks. This isn't suitable to run in the main task context of resume cpu. Due to the cpu which is resuming only have active mask, but still not rebuild sched domain, make this slow work run on resuming cpu can not take extra overload to previous active cpus. Bug: 203839955 Fixes: 1d3a64fbd214 ("ANDROID: cpu/hotplug: rebuild sched domains immediately") Change-Id: Ia7bdd077f982950c02696c3598a41b2482046220 Signed-off-by: Tengfei Fan Signed-off-by: Maria Yu --- include/linux/cpuset.h | 1 + kernel/cgroup/cpuset.c | 5 +++++ kernel/cpu.c | 8 ++++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h index 2713db8395f6..4f52d03d61ea 100644 --- a/include/linux/cpuset.h +++ b/include/linux/cpuset.h @@ -55,6 +55,7 @@ extern int cpuset_init(void); extern void cpuset_init_smp(void); extern void cpuset_force_rebuild(void); extern void cpuset_update_active_cpus(void); +extern void cpuset_update_active_cpus_affine(int cpu); extern void cpuset_wait_for_hotplug(void); extern void cpuset_cpus_allowed(struct task_struct *p, struct cpumask *mask); extern void cpuset_cpus_allowed_fallback(struct task_struct *p); diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index c7f574a68cdb..a49b1598466d 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -3289,6 +3289,11 @@ void cpuset_update_active_cpus(void) schedule_work(&cpuset_hotplug_work); } +void cpuset_update_active_cpus_affine(int cpu) +{ + schedule_work_on(cpu, &cpuset_hotplug_work); +} + void cpuset_wait_for_hotplug(void) { flush_work(&cpuset_hotplug_work); diff --git a/kernel/cpu.c b/kernel/cpu.c index b69e0904a1fc..41c73436e745 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -1361,11 +1361,11 @@ int resume_cpus(struct cpumask *cpus) prev_prio = pause_reduce_prio(); - /* Lazy Resume. Build domains immediately instead of scheduling - * a workqueue. This is so that the cpu can pull load when - * sent a load balancing kick. + /* Lazy Resume. Build domains through schedule a workqueue on + * resuming cpu. This is so that the resuming cpu can work more + * early, and cannot add additional load to other busy cpu. */ - cpuset_hotplug_workfn(NULL); + cpuset_update_active_cpus_affine(cpumask_first(cpus)); cpus_write_lock(); From 2ccbb92f7facdf504b987f2ca7158b6ef19b6cb2 Mon Sep 17 00:00:00 2001 From: Aaron Ding Date: Thu, 5 Aug 2021 18:02:23 +0800 Subject: [PATCH 25/62] ANDROID: userfaultfd: Fix merge resolution: validate_range() On the android12-5.10 branch, commit 4a5cf92412ab ("BACKPORT: FROMGIT: userfaultfd: add UFFDIO_CONTINUE ioctl") added a new call site for the function validate_range(). Meanwhile, on the 5.10 stable branch, commit 0b591c020d280 ("userfaultfd: do not untag user pointers") changed the function signature of validate_range() and updated all call sites accordingly. However, since these two commits happened on different branches, the new call site in userfaultfd_continue() has not been updated accordingly. This has arguably been missed in the merge commit 66379c1ee513 ("Merge tag 'android12-5.10.66_r00' into android12-5.10"). This patch fixes the following build breakage ./common/fs/userfaultfd.c:1875:32: error: incompatible pointer to integer conversion passing '__u64 *' (aka 'unsigned long long *') to parameter of type '__u64' (aka 'unsigned long long'); remove & [-Werror,-Wint-conversion] ret = validate_range(ctx->mm, &uffdio_continue.range.start, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./common/fs/userfaultfd.c:1245:14: note: passing argument to parameter 'start' here __u64 start, __u64 len) ^ 1 error generated. Fixes: 66379c1ee513 ("Merge tag 'android12-5.10.66_r00' into android12-5.10") Signed-off-by: Aaron Ding Signed-off-by: Daniel Mentz Signed-off-by: Elliot Berman Change-Id: I7ad40df213897314c439480f22a2ef4712e84025 (cherry picked from commit 5ec931a85350cd1914f53949d32214583421e155) --- fs/userfaultfd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index e08cdbe51bc7..bda175d8f3c6 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -1872,7 +1872,7 @@ static int userfaultfd_continue(struct userfaultfd_ctx *ctx, unsigned long arg) sizeof(uffdio_continue) - (sizeof(__s64)))) goto out; - ret = validate_range(ctx->mm, &uffdio_continue.range.start, + ret = validate_range(ctx->mm, uffdio_continue.range.start, uffdio_continue.range.len); if (ret) goto out; From a32d8ee384c9a70cf34ff14033ccacc142db54e4 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 21 Oct 2021 09:37:05 +0200 Subject: [PATCH 26/62] Revert "ANDROID: mpam: add vendor hook to record MPAM" This reverts commit 1aa1f6a7cf67c9cea1a609581eb9c2602fd96576. The hook android_vh_mpam_set is not used by any vendor, so remove it to help with merge issues with future LTS releases. If this is needed by any real user, it can easily be reverted to add it back and then the symbol should be added to the abi list at the same time to prevent it from being removed again later. Bug: 203756332 Bug: 165333282 Cc: C-J.Chen Signed-off-by: Greg Kroah-Hartman Change-Id: I18356743538df7d41a00f54479bf2a0bc3a62e06 --- arch/arm64/kernel/process.c | 6 ------ drivers/android/vendor_hooks.c | 2 -- include/trace/hooks/mpam.h | 23 ----------------------- 3 files changed, 31 deletions(-) delete mode 100644 include/trace/hooks/mpam.h diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 132261037b42..9a545ebc3661 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -45,7 +45,6 @@ #include #include #include -#include #include #include @@ -572,11 +571,6 @@ __notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev, ssbs_thread_switch(next); erratum_1418040_thread_switch(prev, next); ptrauth_thread_switch_user(next); - /* - * vendor hook is needed before the dsb(), - * because MPAM is related to cache maintenance. - */ - trace_android_vh_mpam_set(prev, next); /* * Complete any pending TLB or cache maintenance on this CPU in case diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 423219ac6989..b44972ad1b93 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -123,7 +122,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shmem_alloc_page); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_exit); -EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool); diff --git a/include/trace/hooks/mpam.h b/include/trace/hooks/mpam.h deleted file mode 100644 index 8479fe7c2356..000000000000 --- a/include/trace/hooks/mpam.h +++ /dev/null @@ -1,23 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#undef TRACE_SYSTEM -#define TRACE_SYSTEM mpam -#undef TRACE_INCLUDE_PATH -#define TRACE_INCLUDE_PATH trace/hooks -#if !defined(_TRACE_HOOK_MPAM_H) || defined(TRACE_HEADER_MULTI_READ) -#define _TRACE_HOOK_MPAM_H -#include -#include -/* - * Following tracepoints are not exported in tracefs and provide a - * mechanism for vendor modules to hook and extend functionality - */ -struct task_struct; -DECLARE_HOOK(android_vh_mpam_set, - TP_PROTO(struct task_struct *prev, struct task_struct *next), - TP_ARGS(prev, next)); - -/* macro versions of hooks are no longer required */ - -#endif /* _TRACE_HOOK_MPAM_H */ -/* This part must be outside protection */ -#include From a451a6c447dc9b7694528fc70f5b366794fbb866 Mon Sep 17 00:00:00 2001 From: Giuliano Procida Date: Tue, 26 Oct 2021 17:03:32 +0100 Subject: [PATCH 27/62] ANDROID: GKI: Add missing symbol list whitespace The missing leading whitespace in android/abi_gki_aarch64_galaxy caused its symbols to be dropped from the distribution abi_symbollist file and the distribution vmlinux binary. Bug: 203852249 Change-Id: I7854401e0a55ad89beacde588c24f1d1698e9e17 Signed-off-by: Giuliano Procida --- android/abi_gki_aarch64_galaxy | 9220 ++++++++++++++++---------------- 1 file changed, 4610 insertions(+), 4610 deletions(-) diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy index e20b72055f08..8fc8f58f678d 100644 --- a/android/abi_gki_aarch64_galaxy +++ b/android/abi_gki_aarch64_galaxy @@ -1,4611 +1,4611 @@ [abi_symbol_list] -PDE_DATA -__ClearPageMovable -__SetPageMovable -___pskb_trim -___ratelimit -__alloc_disk_node -__alloc_pages_nodemask -__alloc_percpu -__alloc_percpu_gfp -__alloc_skb -__arch_clear_user -__arch_copy_from_user -__arch_copy_in_user -__arch_copy_to_user -__arm_smccc_hvc -__arm_smccc_smc -__bitmap_andnot -__bitmap_clear -__bitmap_complement -__bitmap_or -__bitmap_set -__bitmap_weight -__bitmap_xor -__blk_mq_debugfs_rq_show -__blk_mq_end_request -__blk_rq_map_sg -__blkdev_issue_discard -__blkdev_issue_zeroout -__cfi_slowpath -__check_object_size -__class_create -__class_register -__clk_determine_rate -__clk_get_hw -__clk_get_name -__clk_hw_register_divider -__clk_hw_register_gate -__clk_hw_register_mux -__clk_is_enabled -__clk_mux_determine_rate_closest -__clocksource_register_scale -__close_fd -__const_udelay -__cpu_active_mask -__cpu_online_mask -__cpu_possible_mask -__cpu_present_mask -__cpufreq_driver_target -__cpuhp_remove_state -__cpuhp_setup_state -__cpuhp_setup_state_cpuslocked -__cpuhp_state_add_instance -__cpuhp_state_remove_instance -__dev_get_by_index -__dev_kfree_skb_any -__devm_alloc_percpu -__devm_drm_dev_alloc -__devm_iio_device_register -__devm_irq_alloc_descs -__devm_of_phy_provider_register -__devm_regmap_init -__devm_regmap_init_i2c -__devm_regmap_init_mmio_clk -__devm_regmap_init_spi -__devm_release_region -__devm_request_region -__devm_reset_control_get -__devm_spi_alloc_controller -__dma_request_channel -__do_once_done -__do_once_start -__drm_atomic_helper_connector_destroy_state -__drm_atomic_helper_connector_duplicate_state -__drm_atomic_helper_connector_reset -__drm_atomic_helper_crtc_destroy_state -__drm_atomic_helper_crtc_duplicate_state -__drm_atomic_helper_crtc_reset -__drm_atomic_helper_plane_destroy_state -__drm_atomic_helper_plane_duplicate_state -__drm_atomic_helper_private_obj_duplicate_state -__drm_atomic_state_free -__drm_dbg -__drm_debug -__drm_err -__drm_printfn_coredump -__drm_printfn_info -__drm_printfn_seq_file -__drm_puts_coredump -__drm_puts_seq_file -__dynamic_dev_dbg -__dynamic_pr_debug -__ethtool_get_link_ksettings -__fdget -__flush_icache_range -__free_pages -__genphy_config_aneg -__get_free_pages -__get_task_comm -__hid_register_driver -__hid_request -__hrtimer_get_remaining -__hvc_resize -__hwspin_lock_timeout -__hwspin_unlock -__i2c_smbus_xfer -__i2c_transfer -__iio_device_register -__init_rwsem -__init_swait_queue_head -__init_waitqueue_head -__ioread32_copy -__ioremap -__iowrite32_copy -__ipv6_addr_type -__irq_alloc_descs -__irq_domain_add -__irq_set_handler -__kfifo_alloc -__kfifo_free -__kfifo_in -__kfifo_init -__kfifo_out -__kfifo_out_peek -__kfifo_to_user -__kfree_skb -__kmalloc -__kthread_init_worker -__list_add_valid -__list_del_entry_valid -__local_bh_enable_ip -__lock_page -__log_post_read_mmio -__log_read_mmio -__log_write_mmio -__mdiobus_register -__media_device_register -__memcat_p -__memcpy_fromio -__memcpy_toio -__memset_io -__mmc_claim_host -__mmc_send_status -__mmdrop -__module_get -__msecs_to_jiffies -__mutex_init -__napi_alloc_skb -__napi_schedule -__ndelay -__netdev_alloc_skb -__netif_napi_del -__netif_set_xps_queue -__netlink_kernel_create -__next_zones_zonelist -__nla_parse -__nla_validate -__nlmsg_put -__num_online_cpus -__of_reset_control_get -__pci_register_driver -__per_cpu_offset -__percpu_down_read -__percpu_init_rwsem -__platform_driver_probe -__platform_driver_register -__platform_register_drivers -__pm_relax -__pm_runtime_disable -__pm_runtime_idle -__pm_runtime_resume -__pm_runtime_set_status -__pm_runtime_suspend -__pm_runtime_use_autosuspend -__pm_stay_awake -__printk_ratelimit -__pskb_pull_tail -__put_page -__put_task_struct -__rb_erase_color -__rb_insert_augmented -__rcu_read_lock -__rcu_read_unlock -__refrigerator -__register_chrdev -__register_rpmsg_driver -__regmap_init -__release_region -__request_module -__request_percpu_irq -__request_region -__rht_bucket_nested -__rtc_register_device -__scsi_execute -__scsi_iterate_devices -__scsi_print_sense -__sdhci_add_host -__seq_open_private -__serio_register_driver -__serio_register_port -__sg_page_iter_dma_next -__sg_page_iter_next -__sg_page_iter_start -__skb_ext_put -__skb_flow_dissect -__skb_get_hash -__skb_gso_segment -__skb_pad -__spi_alloc_controller -__spi_register_driver -__splice_from_pipe -__spmi_driver_register -__srcu_read_lock -__srcu_read_unlock -__stack_chk_fail -__stack_chk_guard -__sw_hweight16 -__sw_hweight32 -__sw_hweight64 -__sw_hweight8 -__sysfs_match_string -__task_pid_nr_ns -__task_rq_lock -__tasklet_hi_schedule -__tasklet_schedule -__trace_bprintk -__trace_bputs -__trace_printk -__traceiter_android_rvh_account_irq -__traceiter_android_rvh_build_perf_domains -__traceiter_android_rvh_can_migrate_task -__traceiter_android_rvh_check_preempt_wakeup -__traceiter_android_rvh_cpu_cgroup_attach -__traceiter_android_rvh_cpu_cgroup_can_attach -__traceiter_android_rvh_cpu_cgroup_online -__traceiter_android_rvh_cpu_overutilized -__traceiter_android_rvh_cpufreq_transition -__traceiter_android_rvh_dequeue_task -__traceiter_android_rvh_die_kernel_fault -__traceiter_android_rvh_do_mem_abort -__traceiter_android_rvh_do_sp_pc_abort -__traceiter_android_rvh_enqueue_task -__traceiter_android_rvh_find_busiest_queue -__traceiter_android_rvh_find_energy_efficient_cpu -__traceiter_android_rvh_find_lowest_rq -__traceiter_android_rvh_flush_task -__traceiter_android_rvh_irqs_disable -__traceiter_android_rvh_irqs_enable -__traceiter_android_rvh_migrate_queued_task -__traceiter_android_rvh_new_task_stats -__traceiter_android_rvh_pick_next_entity -__traceiter_android_rvh_place_entity -__traceiter_android_rvh_preempt_disable -__traceiter_android_rvh_preempt_enable -__traceiter_android_rvh_replace_next_task_fair -__traceiter_android_rvh_report_bug -__traceiter_android_rvh_resume_cpus -__traceiter_android_rvh_sched_balance_rt -__traceiter_android_rvh_sched_cpu_dying -__traceiter_android_rvh_sched_cpu_starting -__traceiter_android_rvh_sched_exec -__traceiter_android_rvh_sched_fork -__traceiter_android_rvh_sched_fork_init -__traceiter_android_rvh_sched_newidle_balance -__traceiter_android_rvh_sched_nohz_balancer_kick -__traceiter_android_rvh_sched_rebalance_domains -__traceiter_android_rvh_schedule -__traceiter_android_rvh_schedule_bug -__traceiter_android_rvh_select_fallback_rq -__traceiter_android_rvh_select_task_rq_fair -__traceiter_android_rvh_select_task_rq_rt -__traceiter_android_rvh_set_gfp_zone_flags -__traceiter_android_rvh_set_iowait -__traceiter_android_rvh_set_readahead_gfp_mask -__traceiter_android_rvh_set_skip_swapcache_flags -__traceiter_android_rvh_set_task_cpu -__traceiter_android_rvh_tick_entry -__traceiter_android_rvh_try_to_wake_up -__traceiter_android_rvh_try_to_wake_up_success -__traceiter_android_rvh_ttwu_cond -__traceiter_android_rvh_typec_tcpci_chk_contaminant -__traceiter_android_rvh_typec_tcpci_get_vbus -__traceiter_android_rvh_uclamp_eff_get -__traceiter_android_rvh_update_cpu_capacity -__traceiter_android_rvh_update_cpus_allowed -__traceiter_android_rvh_update_misfit_status -__traceiter_android_rvh_util_est_update -__traceiter_android_rvh_wake_up_new_task -__traceiter_android_vh_allow_domain_state -__traceiter_android_vh_arch_set_freq_scale -__traceiter_android_vh_binder_restore_priority -__traceiter_android_vh_binder_set_priority -__traceiter_android_vh_binder_transaction_init -__traceiter_android_vh_binder_wakeup_ilocked -__traceiter_android_vh_cma_alloc_finish -__traceiter_android_vh_cma_alloc_start -__traceiter_android_vh_cpu_idle_enter -__traceiter_android_vh_cpu_idle_exit -__traceiter_android_vh_dump_throttled_rt_tasks -__traceiter_android_vh_enable_thermal_genl_check -__traceiter_android_vh_ep_create_wakeup_source -__traceiter_android_vh_freq_table_limits -__traceiter_android_vh_ftrace_dump_buffer -__traceiter_android_vh_ftrace_format_check -__traceiter_android_vh_ftrace_oops_enter -__traceiter_android_vh_ftrace_oops_exit -__traceiter_android_vh_ftrace_size_check -__traceiter_android_vh_iommu_setup_dma_ops -__traceiter_android_vh_ipi_stop -__traceiter_android_vh_is_fpsimd_save -__traceiter_android_vh_jiffies_update -__traceiter_android_vh_kfree_skb -__traceiter_android_vh_logbuf -__traceiter_android_vh_logbuf_pr_cont -__traceiter_android_vh_meminfo_proc_show -__traceiter_android_vh_pagecache_get_page -__traceiter_android_vh_printk_hotplug -__traceiter_android_vh_ptype_head -__traceiter_android_vh_rmqueue -__traceiter_android_vh_scheduler_tick -__traceiter_android_vh_show_max_freq -__traceiter_android_vh_show_mem -__traceiter_android_vh_show_resume_epoch_val -__traceiter_android_vh_show_suspend_epoch_val -__traceiter_android_vh_timer_calc_index -__traceiter_android_vh_timerfd_create -__traceiter_android_vh_typec_store_partner_src_caps -__traceiter_android_vh_typec_tcpci_override_toggling -__traceiter_android_vh_typec_tcpm_adj_current_limit -__traceiter_android_vh_typec_tcpm_get_timer -__traceiter_android_vh_ufs_check_int_errors -__traceiter_android_vh_ufs_compl_command -__traceiter_android_vh_ufs_fill_prdt -__traceiter_android_vh_ufs_prepare_command -__traceiter_android_vh_ufs_send_command -__traceiter_android_vh_ufs_send_tm_command -__traceiter_android_vh_ufs_send_uic_command -__traceiter_android_vh_ufs_update_sdev -__traceiter_android_vh_ufs_update_sysfs -__traceiter_clock_set_rate -__traceiter_cpu_frequency -__traceiter_dma_fence_emit -__traceiter_dwc3_readl -__traceiter_dwc3_writel -__traceiter_gpu_mem_total -__traceiter_sched_util_est_se_tp -__traceiter_xdp_exception -__tracepoint_android_rvh_account_irq -__tracepoint_android_rvh_arm64_serror_panic -__tracepoint_android_rvh_bad_mode -__tracepoint_android_rvh_build_perf_domains -__tracepoint_android_rvh_can_migrate_task -__tracepoint_android_rvh_check_preempt_wakeup -__tracepoint_android_rvh_cpu_cgroup_attach -__tracepoint_android_rvh_cpu_cgroup_can_attach -__tracepoint_android_rvh_cpu_cgroup_online -__tracepoint_android_rvh_cpu_overutilized -__tracepoint_android_rvh_cpufreq_transition -__tracepoint_android_rvh_dequeue_task -__tracepoint_android_rvh_dequeue_task_idle -__tracepoint_android_rvh_die_kernel_fault -__tracepoint_android_rvh_do_mem_abort -__tracepoint_android_rvh_do_sea -__tracepoint_android_rvh_do_sp_pc_abort -__tracepoint_android_rvh_do_undefinstr -__tracepoint_android_rvh_enqueue_task -__tracepoint_android_rvh_find_busiest_queue -__tracepoint_android_rvh_find_energy_efficient_cpu -__tracepoint_android_rvh_find_lowest_rq -__tracepoint_android_rvh_flush_task -__tracepoint_android_rvh_irqs_disable -__tracepoint_android_rvh_irqs_enable -__tracepoint_android_rvh_migrate_queued_task -__tracepoint_android_rvh_new_task_stats -__tracepoint_android_rvh_pick_next_entity -__tracepoint_android_rvh_place_entity -__tracepoint_android_rvh_preempt_disable -__tracepoint_android_rvh_preempt_enable -__tracepoint_android_rvh_replace_next_task_fair -__tracepoint_android_rvh_report_bug -__tracepoint_android_rvh_resume_cpus -__tracepoint_android_rvh_sched_balance_rt -__tracepoint_android_rvh_sched_cpu_dying -__tracepoint_android_rvh_sched_cpu_starting -__tracepoint_android_rvh_sched_exec -__tracepoint_android_rvh_sched_fork -__tracepoint_android_rvh_sched_fork_init -__tracepoint_android_rvh_sched_newidle_balance -__tracepoint_android_rvh_sched_nohz_balancer_kick -__tracepoint_android_rvh_sched_rebalance_domains -__tracepoint_android_rvh_schedule -__tracepoint_android_rvh_schedule_bug -__tracepoint_android_rvh_select_fallback_rq -__tracepoint_android_rvh_select_task_rq_fair -__tracepoint_android_rvh_select_task_rq_rt -__tracepoint_android_rvh_set_gfp_zone_flags -__tracepoint_android_rvh_set_iowait -__tracepoint_android_rvh_set_readahead_gfp_mask -__tracepoint_android_rvh_set_skip_swapcache_flags -__tracepoint_android_rvh_set_task_cpu -__tracepoint_android_rvh_tick_entry -__tracepoint_android_rvh_try_to_wake_up -__tracepoint_android_rvh_try_to_wake_up_success -__tracepoint_android_rvh_ttwu_cond -__tracepoint_android_rvh_typec_tcpci_chk_contaminant -__tracepoint_android_rvh_typec_tcpci_get_vbus -__tracepoint_android_rvh_uclamp_eff_get -__tracepoint_android_rvh_update_cpu_capacity -__tracepoint_android_rvh_update_cpus_allowed -__tracepoint_android_rvh_update_misfit_status -__tracepoint_android_rvh_util_est_update -__tracepoint_android_rvh_wake_up_new_task -__tracepoint_android_vh_allow_domain_state -__tracepoint_android_vh_arch_set_freq_scale -__tracepoint_android_vh_binder_restore_priority -__tracepoint_android_vh_binder_set_priority -__tracepoint_android_vh_binder_transaction_init -__tracepoint_android_vh_binder_wakeup_ilocked -__tracepoint_android_vh_cgroup_attach -__tracepoint_android_vh_cma_alloc_finish -__tracepoint_android_vh_cma_alloc_start -__tracepoint_android_vh_cpu_idle_enter -__tracepoint_android_vh_cpu_idle_exit -__tracepoint_android_vh_dump_throttled_rt_tasks -__tracepoint_android_vh_enable_thermal_genl_check -__tracepoint_android_vh_ep_create_wakeup_source -__tracepoint_android_vh_freq_table_limits -__tracepoint_android_vh_ftrace_dump_buffer -__tracepoint_android_vh_ftrace_format_check -__tracepoint_android_vh_ftrace_oops_enter -__tracepoint_android_vh_ftrace_oops_exit -__tracepoint_android_vh_ftrace_size_check -__tracepoint_android_vh_iommu_setup_dma_ops -__tracepoint_android_vh_ipi_stop -__tracepoint_android_vh_is_fpsimd_save -__tracepoint_android_vh_jiffies_update -__tracepoint_android_vh_kfree_skb -__tracepoint_android_vh_logbuf -__tracepoint_android_vh_logbuf_pr_cont -__tracepoint_android_vh_meminfo_proc_show -__tracepoint_android_vh_mutex_wait_finish -__tracepoint_android_vh_mutex_wait_start -__tracepoint_android_vh_pagecache_get_page -__tracepoint_android_vh_printk_hotplug -__tracepoint_android_vh_ptype_head -__tracepoint_android_vh_rmqueue -__tracepoint_android_vh_rtmutex_wait_finish -__tracepoint_android_vh_rtmutex_wait_start -__tracepoint_android_vh_rwsem_read_wait_finish -__tracepoint_android_vh_rwsem_read_wait_start -__tracepoint_android_vh_rwsem_write_wait_finish -__tracepoint_android_vh_rwsem_write_wait_start -__tracepoint_android_vh_sched_show_task -__tracepoint_android_vh_scheduler_tick -__tracepoint_android_vh_show_max_freq -__tracepoint_android_vh_show_mem -__tracepoint_android_vh_show_resume_epoch_val -__tracepoint_android_vh_show_suspend_epoch_val -__tracepoint_android_vh_timer_calc_index -__tracepoint_android_vh_timerfd_create -__tracepoint_android_vh_try_to_freeze_todo -__tracepoint_android_vh_try_to_freeze_todo_unfrozen -__tracepoint_android_vh_typec_store_partner_src_caps -__tracepoint_android_vh_typec_tcpci_override_toggling -__tracepoint_android_vh_typec_tcpm_adj_current_limit -__tracepoint_android_vh_typec_tcpm_get_timer -__tracepoint_android_vh_ufs_check_int_errors -__tracepoint_android_vh_ufs_compl_command -__tracepoint_android_vh_ufs_fill_prdt -__tracepoint_android_vh_ufs_prepare_command -__tracepoint_android_vh_ufs_send_command -__tracepoint_android_vh_ufs_send_tm_command -__tracepoint_android_vh_ufs_send_uic_command -__tracepoint_android_vh_ufs_update_sdev -__tracepoint_android_vh_ufs_update_sysfs -__tracepoint_android_vh_watchdog_timer_softlockup -__tracepoint_android_vh_wq_lockup_pool -__tracepoint_binder_transaction_received -__tracepoint_clock_set_rate -__tracepoint_cpu_frequency -__tracepoint_cpu_frequency_limits -__tracepoint_cpu_idle -__tracepoint_device_pm_callback_end -__tracepoint_device_pm_callback_start -__tracepoint_dma_fence_emit -__tracepoint_dwc3_ep_queue -__tracepoint_dwc3_readl -__tracepoint_dwc3_writel -__tracepoint_gpu_mem_total -__tracepoint_hrtimer_expire_entry -__tracepoint_hrtimer_expire_exit -__tracepoint_ipi_entry -__tracepoint_ipi_exit -__tracepoint_ipi_raise -__tracepoint_irq_handler_entry -__tracepoint_irq_handler_exit -__tracepoint_pelt_cfs_tp -__tracepoint_pelt_dl_tp -__tracepoint_pelt_irq_tp -__tracepoint_pelt_rt_tp -__tracepoint_pelt_se_tp -__tracepoint_rwmmio_post_read -__tracepoint_rwmmio_read -__tracepoint_rwmmio_write -__tracepoint_sched_cpu_capacity_tp -__tracepoint_sched_overutilized_tp -__tracepoint_sched_switch -__tracepoint_sched_util_est_cfs_tp -__tracepoint_sched_util_est_se_tp -__tracepoint_suspend_resume -__tracepoint_workqueue_execute_end -__tracepoint_workqueue_execute_start -__tracepoint_xdp_exception -__tty_alloc_driver -__tty_insert_flip_char -__udelay -__uio_register_device -__unregister_chrdev -__update_load_avg_blocked_se -__usb_create_hcd -__usb_get_extra_descriptor -__usecs_to_jiffies -__v4l2_device_register_subdev_nodes -__video_register_device -__wait_rcu_gp -__wake_up -__wake_up_locked -__wake_up_locked_key -__wake_up_sync -__warn_printk -__xa_alloc -__xa_insert -__xfrm_state_destroy -_atomic_dec_and_lock -_copy_from_iter -_copy_from_iter_full -_copy_to_iter -_ctype -_dev_alert -_dev_crit -_dev_emerg -_dev_err -_dev_info -_dev_notice -_dev_warn -_raw_read_lock -_raw_read_lock_bh -_raw_read_lock_irq -_raw_read_lock_irqsave -_raw_read_unlock -_raw_read_unlock_bh -_raw_read_unlock_irq -_raw_read_unlock_irqrestore -_raw_spin_lock -_raw_spin_lock_bh -_raw_spin_lock_irq -_raw_spin_lock_irqsave -_raw_spin_trylock -_raw_spin_trylock_bh -_raw_spin_unlock -_raw_spin_unlock_bh -_raw_spin_unlock_irq -_raw_spin_unlock_irqrestore -_raw_write_lock -_raw_write_lock_bh -_raw_write_lock_irq -_raw_write_lock_irqsave -_raw_write_unlock -_raw_write_unlock_bh -_raw_write_unlock_irq -_raw_write_unlock_irqrestore -_snd_ctl_add_follower -_snd_pcm_stream_lock_irqsave -_totalram_pages -access_process_vm -ack_all_badblocks -activate_task -add_cpu -add_device_randomness -add_memory -add_memory_subsection -add_taint -add_timer -add_timer_on -add_uevent_var -add_wait_queue -adjust_managed_page_count -alarm_cancel -alarm_init -alarm_start -alarm_start_relative -alarm_try_to_cancel -alarmtimer_get_rtcdev -all_vm_events -alloc_anon_inode -alloc_chrdev_region -alloc_etherdev_mqs -alloc_io_pgtable_ops -alloc_netdev_mqs -alloc_page_buffers -alloc_pages_exact -alloc_skb_with_frags -alloc_workqueue -amba_bustype -amba_driver_register -amba_driver_unregister -amba_release_regions -amba_request_regions -android_debug_per_cpu_symbol -android_debug_symbol -android_rvh_probe_register -anon_inode_getfd -anon_inode_getfile -arch_timer_read_counter -argv_free -argv_split -arm64_const_caps_ready -arm64_use_ng_mappings -async_schedule_node -async_schedule_node_domain -async_synchronize_full_domain -atomic_notifier_call_chain -atomic_notifier_chain_register -atomic_notifier_chain_unregister -autoremove_wake_function -available_idle_cpu -backlight_device_get_by_type -backlight_device_register -backlight_device_set_brightness -backlight_device_unregister -badblocks_clear -badblocks_exit -badblocks_init -badblocks_set -badblocks_show -badblocks_store -balloon_aops -balloon_page_alloc -balloon_page_dequeue -balloon_page_enqueue -bcmp -bd_link_disk_holder -bd_set_nr_sectors -bd_unlink_disk_holder -bdev_check_media_change -bdev_read_only -bdevname -bdget_disk -bdput -bgpio_init -bin2hex -bio_add_page -bio_alloc_bioset -bio_associate_blkg -bio_chain -bio_clone_blkg_association -bio_endio -bio_init -bio_put -bioset_exit -bioset_init -bitmap_allocate_region -bitmap_find_next_zero_area_off -bitmap_from_arr32 -bitmap_parse -bitmap_parselist -bitmap_parselist_user -bitmap_print_to_pagebuf -bitmap_release_region -bitmap_to_arr32 -bitmap_zalloc -blk_alloc_queue -blk_cleanup_queue -blk_execute_rq -blk_execute_rq_nowait -blk_finish_plug -blk_freeze_queue_start -blk_get_queue -blk_get_request -blk_mq_alloc_request -blk_mq_alloc_request_hctx -blk_mq_alloc_tag_set -blk_mq_complete_request -blk_mq_complete_request_remote -blk_mq_debugfs_rq_show -blk_mq_delay_kick_requeue_list -blk_mq_end_request -blk_mq_free_request -blk_mq_free_tag_set -blk_mq_freeze_queue -blk_mq_freeze_queue_wait -blk_mq_freeze_queue_wait_timeout -blk_mq_init_queue -blk_mq_map_queues -blk_mq_pci_map_queues -blk_mq_quiesce_queue -blk_mq_requeue_request -blk_mq_rq_cpu -blk_mq_run_hw_queues -blk_mq_sched_request_inserted -blk_mq_sched_try_insert_merge -blk_mq_sched_try_merge -blk_mq_start_request -blk_mq_start_stopped_hw_queues -blk_mq_stop_hw_queue -blk_mq_tag_to_rq -blk_mq_tagset_busy_iter -blk_mq_tagset_wait_completed_request -blk_mq_unfreeze_queue -blk_mq_unique_tag -blk_mq_unquiesce_queue -blk_mq_update_nr_hw_queues -blk_mq_virtio_map_queues -blk_poll -blk_put_queue -blk_put_request -blk_queue_alignment_offset -blk_queue_bounce_limit -blk_queue_can_use_dma_map_merging -blk_queue_chunk_sectors -blk_queue_dma_alignment -blk_queue_flag_clear -blk_queue_flag_set -blk_queue_flag_test_and_set -blk_queue_io_min -blk_queue_io_opt -blk_queue_logical_block_size -blk_queue_max_discard_sectors -blk_queue_max_discard_segments -blk_queue_max_hw_sectors -blk_queue_max_segment_size -blk_queue_max_segments -blk_queue_max_write_zeroes_sectors -blk_queue_physical_block_size -blk_queue_rq_timeout -blk_queue_split -blk_queue_virt_boundary -blk_queue_write_cache -blk_register_region -blk_rq_map_kern -blk_rq_map_user -blk_rq_map_user_iov -blk_rq_unmap_user -blk_set_queue_dying -blk_set_stacking_limits -blk_start_plug -blk_status_to_errno -blk_sync_queue -blk_unregister_region -blk_update_request -blk_verify_command -blkcg_activate_policy -blkcg_deactivate_policy -blkcg_policy_register -blkcg_policy_unregister -blkcg_root -blkdev_fsync -blkdev_get_by_dev -blkdev_get_by_path -blkdev_issue_flush -blkdev_put -blkg_lookup_slowpath -blocking_notifier_call_chain -blocking_notifier_chain_register -blocking_notifier_chain_unregister -bmap -bpf_dispatcher_xdp_func -bpf_prog_add -bpf_prog_put -bpf_prog_sub -bpf_stats_enabled_key -bpf_trace_run1 -bpf_trace_run10 -bpf_trace_run11 -bpf_trace_run12 -bpf_trace_run2 -bpf_trace_run3 -bpf_trace_run4 -bpf_trace_run5 -bpf_trace_run6 -bpf_trace_run7 -bpf_trace_run8 -bpf_trace_run9 -bpf_warn_invalid_xdp_action -bsearch -bt_err -bt_info -build_skb -bus_find_device -bus_for_each_dev -bus_for_each_drv -bus_register -bus_register_notifier -bus_set_iommu -bus_unregister -bus_unregister_notifier -cache_line_size -call_netdevice_notifiers -call_rcu -call_rcu_tasks -call_rcu_tasks_trace -call_srcu -cancel_delayed_work -cancel_delayed_work_sync -cancel_work_sync -capable -cdc_ncm_bind_common -cdc_ncm_change_mtu -cdc_ncm_fill_tx_frame -cdc_ncm_rx_verify_ndp16 -cdc_ncm_rx_verify_nth16 -cdc_ncm_select_altsetting -cdc_ncm_unbind -cdc_parse_cdc_header -cdev_add -cdev_alloc -cdev_del -cdev_device_add -cdev_device_del -cdev_init -cec_allocate_adapter -cec_delete_adapter -cec_received_msg_ts -cec_register_adapter -cec_s_log_addrs -cec_s_phys_addr -cec_s_phys_addr_from_edid -cec_transmit_attempt_done_ts -cec_transmit_done_ts -cec_unregister_adapter -cgroup_path_ns -cgroup_taskset_first -cgroup_taskset_next -check_preempt_curr -check_zeroed_user -class_create_file_ns -class_destroy -class_find_device -class_for_each_device -class_interface_unregister -class_remove_file_ns -class_unregister -cleancache_register_ops -cleanup_srcu_struct -clear_page -clk_bulk_disable -clk_bulk_enable -clk_bulk_get_all -clk_bulk_prepare -clk_bulk_put_all -clk_bulk_unprepare -clk_disable -clk_enable -clk_fixed_factor_ops -clk_fixed_rate_ops -clk_get -clk_get_parent -clk_get_rate -clk_hw_get_flags -clk_hw_get_name -clk_hw_get_num_parents -clk_hw_get_parent -clk_hw_get_parent_by_index -clk_hw_get_rate -clk_hw_is_enabled -clk_hw_is_prepared -clk_hw_register -clk_hw_register_fixed_factor -clk_hw_round_rate -clk_hw_set_rate_range -clk_hw_unregister -clk_hw_unregister_divider -clk_hw_unregister_fixed_factor -clk_hw_unregister_gate -clk_hw_unregister_mux -clk_notifier_register -clk_notifier_unregister -clk_prepare -clk_put -clk_register -clk_register_clkdev -clk_register_fixed_factor -clk_register_fixed_rate -clk_register_gate -clk_round_rate -clk_set_parent -clk_set_rate -clk_sync_state -clk_unprepare -clk_unregister -clockevents_config_and_register -clocks_calc_mult_shift -cma_alloc -cma_for_each_area -cma_get_name -cma_release -compat_alloc_user_space -compat_only_sysfs_link_entry_to_kobj -compat_ptr_ioctl -complete -complete_all -complete_and_exit -completion_done -component_add -component_bind_all -component_del -component_master_add_with_match -component_master_del -component_match_add_release -component_unbind_all -cond_synchronize_rcu -config_ep_by_speed -config_group_init -config_group_init_type_name -config_item_get -config_item_put -configfs_register_subsystem -configfs_unregister_subsystem -console_drivers -console_printk -console_stop -console_suspend_enabled -console_trylock -console_unlock -consume_skb -contig_page_data -copy_from_kernel_nofault -copy_page -cpu_all_bits -cpu_bit_bitmap -cpu_hotplug_disable -cpu_hotplug_enable -cpu_hwcap_keys -cpu_hwcaps -cpu_irqtime -cpu_is_hotpluggable -cpu_latency_qos_add_request -cpu_latency_qos_remove_request -cpu_latency_qos_request_active -cpu_latency_qos_update_request -cpu_number -cpu_pm_register_notifier -cpu_pm_unregister_notifier -cpu_scale -cpu_subsys -cpu_topology -cpufreq_add_update_util_hook -cpufreq_cpu_get -cpufreq_cpu_get_raw -cpufreq_cpu_put -cpufreq_disable_fast_switch -cpufreq_driver_fast_switch -cpufreq_driver_resolve_freq -cpufreq_enable_boost_support -cpufreq_enable_fast_switch -cpufreq_freq_attr_scaling_available_freqs -cpufreq_freq_attr_scaling_boost_freqs -cpufreq_freq_transition_begin -cpufreq_freq_transition_end -cpufreq_frequency_table_verify -cpufreq_generic_attr -cpufreq_generic_frequency_table_verify -cpufreq_generic_get -cpufreq_generic_suspend -cpufreq_get_driver_data -cpufreq_get_policy -cpufreq_policy_transition_delay_us -cpufreq_quick_get -cpufreq_quick_get_max -cpufreq_register_driver -cpufreq_register_governor -cpufreq_register_notifier -cpufreq_remove_update_util_hook -cpufreq_table_index_unsorted -cpufreq_this_cpu_can_update -cpufreq_unregister_driver -cpufreq_unregister_notifier -cpufreq_update_policy -cpuhp_tasks_frozen -cpuidle_governor_latency_req -cpuidle_register_governor -cpumask_any_but -cpumask_next -cpumask_next_and -cpumask_next_wrap -cpupri_find_fitness -cpus_read_lock -cpus_read_unlock -crc16 -crc32_le -crc8 -crc8_populate_msb -create_function_device -crypto_aead_encrypt -crypto_aead_setauthsize -crypto_aead_setkey -crypto_alloc_aead -crypto_alloc_base -crypto_alloc_shash -crypto_alloc_skcipher -crypto_cipher_encrypt_one -crypto_cipher_setkey -crypto_comp_compress -crypto_comp_decompress -crypto_destroy_tfm -crypto_has_alg -crypto_register_alg -crypto_register_rngs -crypto_register_scomp -crypto_shash_digest -crypto_shash_final -crypto_shash_setkey -crypto_shash_update -crypto_skcipher_decrypt -crypto_skcipher_encrypt -crypto_skcipher_setkey -crypto_unregister_alg -crypto_unregister_rngs -crypto_unregister_scomp -css_next_child -css_next_descendant_pre -csum_ipv6_magic -csum_partial -csum_tcpudp_nofold -current_time -current_work -d_add -d_alloc_name -d_delete -d_make_root -d_path -dapm_pinctrl_event -dapm_regulator_event -datagram_poll -deactivate_task -debugfs_attr_read -debugfs_attr_write -debugfs_create_atomic_t -debugfs_create_blob -debugfs_create_bool -debugfs_create_dir -debugfs_create_file -debugfs_create_file_unsafe -debugfs_create_regset32 -debugfs_create_size_t -debugfs_create_symlink -debugfs_create_u16 -debugfs_create_u32 -debugfs_create_u64 -debugfs_create_u8 -debugfs_create_ulong -debugfs_create_x32 -debugfs_create_x64 -debugfs_create_x8 -debugfs_file_get -debugfs_file_put -debugfs_lookup -debugfs_print_regs32 -debugfs_remove -dec_zone_page_state -default_llseek -deferred_free -del_gendisk -del_timer -del_timer_sync -delayed_work_timer_fn -desc_to_gpio -destroy_workqueue -dev_alloc_name -dev_close -dev_coredumpm -dev_coredumpv -dev_driver_string -dev_err_probe -dev_fwnode -dev_get_by_index -dev_get_by_name -dev_get_regmap -dev_get_stats -dev_mc_sync_multiple -dev_mc_unsync -dev_open -dev_pm_clear_wake_irq -dev_pm_domain_attach -dev_pm_domain_attach_by_name -dev_pm_domain_detach -dev_pm_genpd_add_notifier -dev_pm_genpd_remove_notifier -dev_pm_genpd_set_next_wakeup -dev_pm_genpd_set_performance_state -dev_pm_opp_add -dev_pm_opp_adjust_voltage -dev_pm_opp_disable -dev_pm_opp_enable -dev_pm_opp_find_freq_ceil -dev_pm_opp_find_freq_ceil_by_volt -dev_pm_opp_find_freq_exact -dev_pm_opp_find_freq_floor -dev_pm_opp_free_cpufreq_table -dev_pm_opp_get_freq -dev_pm_opp_get_level -dev_pm_opp_get_max_transition_latency -dev_pm_opp_get_opp_count -dev_pm_opp_get_opp_table -dev_pm_opp_get_sharing_cpus -dev_pm_opp_get_suspend_opp_freq -dev_pm_opp_get_voltage -dev_pm_opp_init_cpufreq_table -dev_pm_opp_of_add_table -dev_pm_opp_of_cpumask_add_table -dev_pm_opp_of_cpumask_remove_table -dev_pm_opp_of_find_icc_paths -dev_pm_opp_of_get_sharing_cpus -dev_pm_opp_of_register_em -dev_pm_opp_of_remove_table -dev_pm_opp_put -dev_pm_opp_put_clkname -dev_pm_opp_put_opp_table -dev_pm_opp_put_regulators -dev_pm_opp_register_notifier -dev_pm_opp_remove_all_dynamic -dev_pm_opp_set_bw -dev_pm_opp_set_clkname -dev_pm_opp_set_rate -dev_pm_opp_set_regulators -dev_pm_opp_set_sharing_cpus -dev_pm_opp_set_supported_hw -dev_pm_opp_unregister_notifier -dev_pm_qos_add_notifier -dev_pm_qos_add_request -dev_pm_qos_expose_latency_tolerance -dev_pm_qos_hide_latency_tolerance -dev_pm_qos_read_value -dev_pm_qos_remove_notifier -dev_pm_qos_remove_request -dev_pm_qos_update_request -dev_pm_qos_update_user_latency_tolerance -dev_pm_set_dedicated_wake_irq -dev_printk -dev_printk_emit -dev_queue_xmit -dev_set_mtu -dev_set_name -dev_uc_sync_multiple -dev_uc_unsync -devfreq_add_device -devfreq_add_governor -devfreq_cooling_unregister -devfreq_get_devfreq_by_phandle -devfreq_monitor_resume -devfreq_monitor_start -devfreq_monitor_stop -devfreq_monitor_suspend -devfreq_recommended_opp -devfreq_register_opp_notifier -devfreq_remove_device -devfreq_remove_governor -devfreq_resume_device -devfreq_suspend_device -devfreq_unregister_opp_notifier -devfreq_update_interval -device_add -device_add_disk -device_add_groups -device_attach -device_bind_driver -device_create -device_create_bin_file -device_create_file -device_create_with_groups -device_del -device_destroy -device_find_child -device_for_each_child -device_get_child_node_count -device_get_dma_attr -device_get_mac_address -device_get_match_data -device_get_named_child_node -device_get_next_child_node -device_init_wakeup -device_initialize -device_link_add -device_link_del -device_match_fwnode -device_match_name -device_match_of_node -device_property_present -device_property_read_string -device_property_read_string_array -device_property_read_u16_array -device_property_read_u32_array -device_property_read_u8_array -device_register -device_release_driver -device_remove_bin_file -device_remove_file -device_remove_file_self -device_remove_groups -device_set_wakeup_capable -device_set_wakeup_enable -device_show_bool -device_show_int -device_store_bool -device_store_int -device_unregister -device_wakeup_disable -device_wakeup_enable -devm_add_action -devm_backlight_device_register -devm_backlight_device_unregister -devm_blk_ksm_init -devm_clk_bulk_get -devm_clk_bulk_get_all -devm_clk_bulk_get_optional -devm_clk_get -devm_clk_get_optional -devm_clk_hw_register -devm_clk_hw_register_clkdev -devm_clk_put -devm_clk_register -devm_devfreq_add_device -devm_devfreq_register_notifier -devm_devfreq_unregister_notifier -devm_device_add_group -devm_device_add_groups -devm_device_remove_group -devm_drm_panel_bridge_add_typed -devm_extcon_dev_allocate -devm_extcon_dev_register -devm_extcon_dev_unregister -devm_extcon_register_notifier -devm_free_irq -devm_free_percpu -devm_gen_pool_create -devm_get_clk_from_child -devm_gpio_free -devm_gpio_request -devm_gpio_request_one -devm_gpiochip_add_data_with_key -devm_gpiod_get -devm_gpiod_get_array -devm_gpiod_get_index -devm_gpiod_get_optional -devm_gpiod_put_array -devm_hwrng_register -devm_hwspin_lock_register -devm_i2c_new_dummy_device -devm_iio_channel_get -devm_iio_device_alloc -devm_input_allocate_device -devm_ioremap -devm_ioremap_resource -devm_ioremap_wc -devm_iounmap -devm_kasprintf -devm_kfree -devm_kmalloc -devm_kmemdup -devm_kstrdup -devm_kstrdup_const -devm_kvasprintf -devm_led_classdev_register_ext -devm_mbox_controller_register -devm_memremap -devm_mfd_add_devices -devm_nvmem_cell_get -devm_nvmem_device_get -devm_nvmem_register -devm_of_clk_add_hw_provider -devm_of_icc_get -devm_of_iomap -devm_of_platform_populate -devm_of_pwm_get -devm_pci_alloc_host_bridge -devm_phy_create -devm_phy_get -devm_phy_put -devm_pinctrl_get -devm_pinctrl_put -devm_pinctrl_register -devm_pinctrl_register_and_init -devm_platform_get_and_ioremap_resource -devm_platform_ioremap_resource -devm_platform_ioremap_resource_byname -devm_power_supply_register -devm_pwm_put -devm_regmap_add_irq_chip -devm_regmap_del_irq_chip -devm_regmap_field_alloc -devm_regulator_bulk_get -devm_regulator_get -devm_regulator_get_exclusive -devm_regulator_get_optional -devm_regulator_put -devm_regulator_register -devm_regulator_register_notifier -devm_request_any_context_irq -devm_request_threaded_irq -devm_reset_control_array_get -devm_reset_controller_register -devm_rtc_allocate_device -devm_rtc_device_register -devm_snd_dmaengine_pcm_register -devm_snd_soc_register_card -devm_snd_soc_register_component -devm_spi_register_controller -devm_thermal_of_cooling_device_register -devm_thermal_zone_of_sensor_register -devm_thermal_zone_of_sensor_unregister -devm_usb_get_phy -devm_usb_get_phy_by_node -devm_usb_get_phy_by_phandle -devm_watchdog_register_device -devres_add -devres_alloc_node -devres_free -devres_release -disable_irq -disable_irq_nosync -disable_percpu_irq -disk_end_io_acct -disk_start_io_acct -divider_get_val -divider_recalc_rate -divider_ro_round_rate_parent -divider_round_rate_parent -dma_alloc_attrs -dma_async_device_register -dma_async_device_unregister -dma_async_tx_descriptor_init -dma_buf_attach -dma_buf_begin_cpu_access -dma_buf_begin_cpu_access_partial -dma_buf_detach -dma_buf_dynamic_attach -dma_buf_end_cpu_access -dma_buf_end_cpu_access_partial -dma_buf_export -dma_buf_fd -dma_buf_get -dma_buf_get_flags -dma_buf_map_attachment -dma_buf_mmap -dma_buf_move_notify -dma_buf_pin -dma_buf_put -dma_buf_unmap_attachment -dma_buf_unpin -dma_buf_vmap -dma_buf_vunmap -dma_contiguous_default_area -dma_fence_add_callback -dma_fence_array_create -dma_fence_array_ops -dma_fence_context_alloc -dma_fence_default_wait -dma_fence_enable_sw_signaling -dma_fence_free -dma_fence_get_status -dma_fence_get_stub -dma_fence_init -dma_fence_match_context -dma_fence_release -dma_fence_remove_callback -dma_fence_signal -dma_fence_signal_locked -dma_fence_wait_any_timeout -dma_fence_wait_timeout -dma_free_attrs -dma_get_merge_boundary -dma_get_required_mask -dma_get_sgtable_attrs -dma_get_slave_caps -dma_get_slave_channel -dma_heap_add -dma_heap_buffer_alloc -dma_heap_buffer_free -dma_heap_find -dma_heap_get_dev -dma_heap_get_drvdata -dma_heap_get_name -dma_heap_put -dma_map_page_attrs -dma_map_resource -dma_map_sg_attrs -dma_max_mapping_size -dma_mmap_attrs -dma_pool_alloc -dma_pool_create -dma_pool_destroy -dma_pool_free -dma_release_channel -dma_request_chan -dma_resv_add_excl_fence -dma_resv_add_shared_fence -dma_resv_fini -dma_resv_get_fences_rcu -dma_resv_init -dma_resv_reserve_shared -dma_resv_test_signaled_rcu -dma_resv_wait_timeout_rcu -dma_set_coherent_mask -dma_set_mask -dma_sync_sg_for_cpu -dma_sync_sg_for_device -dma_sync_single_for_cpu -dma_sync_single_for_device -dma_unmap_page_attrs -dma_unmap_resource -dma_unmap_sg_attrs -dmabuf_page_pool_alloc -dmabuf_page_pool_create -dmabuf_page_pool_destroy -dmabuf_page_pool_free -dmaengine_unmap_put -dmam_alloc_attrs -dmam_free_coherent -dmam_pool_create -do_SAK -do_exit -do_trace_rcu_torture_read -do_wait_intr -do_wait_intr_irq -down -down_interruptible -down_read -down_read_killable -down_read_trylock -down_timeout -down_trylock -down_write -downgrade_write -dput -drain_workqueue -driver_attach -driver_create_file -driver_find_device -driver_register -driver_remove_file -driver_unregister -drm_add_edid_modes -drm_add_modes_noedid -drm_atomic_add_affected_connectors -drm_atomic_add_affected_planes -drm_atomic_commit -drm_atomic_get_connector_state -drm_atomic_get_crtc_state -drm_atomic_get_new_connector_for_encoder -drm_atomic_get_plane_state -drm_atomic_get_private_obj_state -drm_atomic_helper_bridge_destroy_state -drm_atomic_helper_bridge_duplicate_state -drm_atomic_helper_bridge_reset -drm_atomic_helper_check -drm_atomic_helper_check_modeset -drm_atomic_helper_check_plane_state -drm_atomic_helper_check_planes -drm_atomic_helper_cleanup_planes -drm_atomic_helper_commit -drm_atomic_helper_commit_cleanup_done -drm_atomic_helper_commit_duplicated_state -drm_atomic_helper_commit_hw_done -drm_atomic_helper_commit_modeset_disables -drm_atomic_helper_commit_modeset_enables -drm_atomic_helper_commit_planes -drm_atomic_helper_commit_tail -drm_atomic_helper_connector_destroy_state -drm_atomic_helper_connector_duplicate_state -drm_atomic_helper_connector_reset -drm_atomic_helper_crtc_destroy_state -drm_atomic_helper_crtc_duplicate_state -drm_atomic_helper_crtc_reset -drm_atomic_helper_damage_merged -drm_atomic_helper_dirtyfb -drm_atomic_helper_disable_plane -drm_atomic_helper_disable_planes_on_crtc -drm_atomic_helper_duplicate_state -drm_atomic_helper_fake_vblank -drm_atomic_helper_page_flip -drm_atomic_helper_plane_destroy_state -drm_atomic_helper_plane_duplicate_state -drm_atomic_helper_plane_reset -drm_atomic_helper_prepare_planes -drm_atomic_helper_set_config -drm_atomic_helper_setup_commit -drm_atomic_helper_shutdown -drm_atomic_helper_swap_state -drm_atomic_helper_update_legacy_modeset_state -drm_atomic_helper_update_plane -drm_atomic_helper_wait_for_dependencies -drm_atomic_helper_wait_for_fences -drm_atomic_helper_wait_for_flip_done -drm_atomic_helper_wait_for_vblanks -drm_atomic_normalize_zpos -drm_atomic_private_obj_fini -drm_atomic_private_obj_init -drm_atomic_set_crtc_for_connector -drm_atomic_set_crtc_for_plane -drm_atomic_set_fb_for_plane -drm_atomic_set_fence_for_plane -drm_atomic_set_mode_for_crtc -drm_atomic_state_alloc -drm_atomic_state_clear -drm_atomic_state_default_clear -drm_atomic_state_default_release -drm_atomic_state_init -drm_bridge_add -drm_bridge_attach -drm_bridge_chain_disable -drm_bridge_chain_enable -drm_bridge_chain_mode_set -drm_bridge_chain_post_disable -drm_bridge_chain_pre_enable -drm_bridge_hpd_notify -drm_bridge_remove -drm_client_init -drm_client_modeset_commit_locked -drm_client_register -drm_compat_ioctl -drm_connector_attach_dp_subconnector_property -drm_connector_attach_edid_property -drm_connector_attach_encoder -drm_connector_cleanup -drm_connector_has_possible_encoder -drm_connector_init -drm_connector_init_with_ddc -drm_connector_list_iter_begin -drm_connector_list_iter_end -drm_connector_list_iter_next -drm_connector_register -drm_connector_set_tile_property -drm_connector_unregister -drm_connector_update_edid_property -drm_crtc_arm_vblank_event -drm_crtc_cleanup -drm_crtc_enable_color_mgmt -drm_crtc_from_index -drm_crtc_handle_vblank -drm_crtc_helper_set_config -drm_crtc_helper_set_mode -drm_crtc_init -drm_crtc_init_with_planes -drm_crtc_send_vblank_event -drm_crtc_set_max_vblank_count -drm_crtc_vblank_count -drm_crtc_vblank_count_and_time -drm_crtc_vblank_get -drm_crtc_vblank_helper_get_vblank_timestamp -drm_crtc_vblank_off -drm_crtc_vblank_on -drm_crtc_vblank_put -drm_crtc_vblank_reset -drm_crtc_wait_one_vblank -drm_cvt_mode -drm_debugfs_create_files -drm_detect_hdmi_monitor -drm_detect_monitor_audio -drm_dev_alloc -drm_dev_dbg -drm_dev_enter -drm_dev_exit -drm_dev_get -drm_dev_printk -drm_dev_put -drm_dev_register -drm_dev_set_unique -drm_dev_unplug -drm_dev_unregister -drm_display_mode_to_videomode -drm_do_get_edid -drm_dp_atomic_find_vcpi_slots -drm_dp_atomic_release_vcpi_slots -drm_dp_aux_init -drm_dp_aux_register -drm_dp_aux_unregister -drm_dp_bw_code_to_link_rate -drm_dp_calc_pbn_mode -drm_dp_channel_eq_ok -drm_dp_check_act_status -drm_dp_clock_recovery_ok -drm_dp_dpcd_read -drm_dp_dpcd_read_link_status -drm_dp_dpcd_write -drm_dp_find_vcpi_slots -drm_dp_get_adjust_request_pre_emphasis -drm_dp_get_adjust_request_voltage -drm_dp_get_edid_quirks -drm_dp_link_rate_to_bw_code -drm_dp_link_train_channel_eq_delay -drm_dp_link_train_clock_recovery_delay -drm_dp_mst_allocate_vcpi -drm_dp_mst_deallocate_vcpi -drm_dp_mst_detect_port -drm_dp_mst_get_edid -drm_dp_mst_get_port_malloc -drm_dp_mst_hpd_irq -drm_dp_mst_put_port_malloc -drm_dp_mst_reset_vcpi_slots -drm_dp_mst_topology_mgr_destroy -drm_dp_mst_topology_mgr_init -drm_dp_mst_topology_mgr_set_mst -drm_dp_send_power_updown_phy -drm_dp_set_subconnector_property -drm_dp_update_payload_part1 -drm_dp_update_payload_part2 -drm_edid_block_valid -drm_edid_duplicate -drm_edid_get_monitor_name -drm_edid_header_is_valid -drm_edid_is_valid -drm_edid_to_sad -drm_edid_to_speaker_allocation -drm_encoder_cleanup -drm_encoder_init -drm_event_cancel_free -drm_event_reserve_init -drm_event_reserve_init_locked -drm_fb_cma_get_gem_obj -drm_flip_work_cleanup -drm_flip_work_commit -drm_flip_work_init -drm_flip_work_queue -drm_format_info -drm_framebuffer_cleanup -drm_framebuffer_init -drm_framebuffer_lookup -drm_framebuffer_remove -drm_framebuffer_unregister_private -drm_gem_cma_dumb_create_internal -drm_gem_cma_free_object -drm_gem_cma_mmap -drm_gem_cma_prime_get_sg_table -drm_gem_cma_prime_import_sg_table -drm_gem_cma_prime_mmap -drm_gem_cma_prime_vmap -drm_gem_cma_prime_vunmap -drm_gem_cma_vm_ops -drm_gem_create_mmap_offset -drm_gem_dmabuf_mmap -drm_gem_dmabuf_release -drm_gem_dmabuf_vmap -drm_gem_dmabuf_vunmap -drm_gem_fb_create -drm_gem_fb_create_handle -drm_gem_fb_destroy -drm_gem_fb_get_obj -drm_gem_fb_prepare_fb -drm_gem_free_mmap_offset -drm_gem_get_pages -drm_gem_handle_create -drm_gem_lock_reservations -drm_gem_map_attach -drm_gem_map_detach -drm_gem_map_dma_buf -drm_gem_mmap -drm_gem_mmap_obj -drm_gem_object_free -drm_gem_object_init -drm_gem_object_lookup -drm_gem_object_put_locked -drm_gem_object_release -drm_gem_prime_export -drm_gem_prime_fd_to_handle -drm_gem_prime_handle_to_fd -drm_gem_prime_import -drm_gem_prime_import_dev -drm_gem_prime_mmap -drm_gem_private_object_init -drm_gem_put_pages -drm_gem_shmem_create -drm_gem_shmem_free_object -drm_gem_shmem_get_sg_table -drm_gem_shmem_mmap -drm_gem_shmem_pin -drm_gem_shmem_print_info -drm_gem_shmem_unpin -drm_gem_shmem_vmap -drm_gem_shmem_vunmap -drm_gem_unlock_reservations -drm_gem_unmap_dma_buf -drm_gem_vm_close -drm_gem_vm_open -drm_get_connector_status_name -drm_get_edid -drm_get_format_info -drm_get_format_name -drm_handle_vblank -drm_hdmi_avi_infoframe_from_display_mode -drm_helper_connector_dpms -drm_helper_disable_unused_functions -drm_helper_force_disable_all -drm_helper_hpd_irq_event -drm_helper_mode_fill_fb_struct -drm_helper_probe_single_connector_modes -drm_helper_resume_force_mode -drm_ioctl -drm_irq_install -drm_irq_uninstall -drm_is_current_master -drm_kms_helper_hotplug_event -drm_kms_helper_is_poll_worker -drm_kms_helper_poll_disable -drm_kms_helper_poll_enable -drm_kms_helper_poll_fini -drm_kms_helper_poll_init -drm_match_cea_mode -drm_mm_init -drm_mm_insert_node_in_range -drm_mm_print -drm_mm_remove_node -drm_mm_takedown -drm_mode_config_cleanup -drm_mode_config_helper_resume -drm_mode_config_helper_suspend -drm_mode_config_reset -drm_mode_convert_to_umode -drm_mode_convert_umode -drm_mode_copy -drm_mode_create -drm_mode_create_dp_colorspace_property -drm_mode_create_scaling_mode_property -drm_mode_create_tile_group -drm_mode_crtc_set_gamma_size -drm_mode_debug_printmodeline -drm_mode_destroy -drm_mode_duplicate -drm_mode_equal -drm_mode_equal_no_clocks -drm_mode_get_tile_group -drm_mode_is_420_only -drm_mode_match -drm_mode_object_find -drm_mode_object_get -drm_mode_object_put -drm_mode_probed_add -drm_mode_set_crtcinfo -drm_mode_set_name -drm_mode_sort -drm_mode_vrefresh -drm_modeset_acquire_fini -drm_modeset_acquire_init -drm_modeset_backoff -drm_modeset_drop_locks -drm_modeset_lock -drm_modeset_lock_all -drm_modeset_lock_all_ctx -drm_modeset_lock_init -drm_modeset_unlock -drm_modeset_unlock_all -drm_need_swiotlb -drm_object_attach_property -drm_object_property_set_value -drm_of_component_match_add -drm_of_find_possible_crtcs -drm_open -drm_panel_add -drm_panel_disable -drm_panel_enable -drm_panel_get_modes -drm_panel_init -drm_panel_prepare -drm_panel_remove -drm_panel_unprepare -drm_plane_cleanup -drm_plane_create_alpha_property -drm_plane_create_blend_mode_property -drm_plane_create_rotation_property -drm_plane_create_zpos_property -drm_plane_enable_fb_damage_clips -drm_poll -drm_prime_gem_destroy -drm_prime_pages_to_sg -drm_prime_sg_to_page_addr_arrays -drm_printf -drm_property_blob_get -drm_property_blob_put -drm_property_create -drm_property_create_bitmask -drm_property_create_blob -drm_property_create_bool -drm_property_create_enum -drm_property_create_range -drm_property_create_signed_range -drm_property_lookup_blob -drm_property_replace_blob -drm_puts -drm_read -drm_rect_calc_hscale -drm_rect_calc_vscale -drm_rect_clip_scaled -drm_rect_intersect -drm_release -drm_rotation_simplify -drm_send_event -drm_send_event_locked -drm_set_preferred_mode -drm_simple_encoder_init -drm_state_dump -drm_syncobj_add_point -drm_syncobj_create -drm_syncobj_find -drm_syncobj_find_fence -drm_syncobj_free -drm_syncobj_get_fd -drm_syncobj_get_handle -drm_syncobj_replace_fence -drm_sysfs_hotplug_event -drm_universal_plane_init -drm_vblank_init -drm_vma_node_allow -drm_vma_node_is_allowed -drm_vma_node_revoke -drm_wait_one_vblank -drm_writeback_connector_init -drm_writeback_queue_job -drm_writeback_signal_completion -drmm_kmalloc -drmm_mode_config_init -dst_release -dump_align -dump_backtrace -dump_emit -dump_stack -dup_iter -dw_handle_msi_irq -dw_pcie_host_init -dw_pcie_msi_init -dw_pcie_own_conf_map_bus -dw_pcie_read -dw_pcie_setup_rc -dw_pcie_write -dwc3_send_gadget_ep_cmd -dwc3_stop_active_transfer -edac_device_add_device -edac_device_alloc_ctl_info -edac_device_alloc_index -edac_device_del_device -edac_device_free_ctl_info -edac_device_handle_ce_count -edac_device_handle_ue_count -efi -efi_tpm_final_log_size -elevator_alloc -elv_bio_merge_ok -elv_rb_add -elv_rb_del -elv_rb_find -elv_rb_former_request -elv_rb_latter_request -elv_register -elv_rqhash_add -elv_rqhash_del -elv_unregister -emergency_restart -enable_irq -enable_percpu_irq -eth_commit_mac_addr_change -eth_mac_addr -eth_platform_get_mac_address -eth_prepare_mac_addr_change -eth_type_trans -eth_validate_addr -ether_setup -ethtool_op_get_link -ethtool_op_get_ts_info -ethtool_virtdev_set_link_ksettings -event_triggers_call -eventfd_ctx_fdget -eventfd_ctx_fileget -eventfd_ctx_put -eventfd_ctx_remove_wait_queue -eventfd_signal -extcon_find_edev_by_node -extcon_get_edev_by_phandle -extcon_get_edev_name -extcon_get_extcon_dev -extcon_get_property -extcon_get_state -extcon_register_notifier -extcon_set_property -extcon_set_property_capability -extcon_set_state_sync -extcon_unregister_notifier -fasync_helper -fd_install -fget -file_path -file_ra_state_init -filp_close -filp_open_block -find_get_pid -find_last_bit -find_next_bit -find_next_zero_bit -find_snd_usb_substream -find_task_by_vpid -find_vma -find_vpid -finish_wait -firmware_request_nowarn -fixed_size_llseek -flow_keys_basic_dissector -flush_dcache_page -flush_delayed_work -flush_signals -flush_work -flush_workqueue -fput -frame_vector_create -frame_vector_destroy -frame_vector_to_pages -free_buffer_head -free_io_pgtable_ops -free_irq -free_netdev -free_pages -free_pages_exact -free_percpu -free_percpu_irq -freezing_slow_path -freq_qos_add_request -freq_qos_remove_request -freq_qos_update_request -freq_scale -fs_bio_set -fsync_bdev -ftrace_dump -full_name_hash -fwnode_find_reference -fwnode_get_name -fwnode_get_named_child_node -fwnode_get_next_child_node -fwnode_gpiod_get_index -fwnode_handle_get -fwnode_handle_put -fwnode_property_present -fwnode_property_read_string -fwnode_property_read_u32_array -fwnode_usb_role_switch_get -gcd -gen_pool_add_owner -gen_pool_alloc_algo_owner -gen_pool_avail -gen_pool_best_fit -gen_pool_create -gen_pool_destroy -gen_pool_dma_alloc_align -gen_pool_dma_zalloc_align -gen_pool_first_fit_align -gen_pool_first_fit_order_align -gen_pool_free_owner -gen_pool_has_addr -gen_pool_set_algo -gen_pool_size -gen_pool_virt_to_phys -generic_delete_inode -generic_device_group -generic_file_llseek -generic_file_read_iter -generic_handle_irq -generic_iommu_put_resv_regions -generic_mii_ioctl -generic_perform_write -generic_write_checks -genl_notify -genl_register_family -genl_unregister_family -genlmsg_put -genphy_read_status -genphy_resume -genphy_soft_reset -genphy_suspend -get_cpu_device -get_cpu_idle_time -get_cpu_idle_time_us -get_cpu_iowait_time_us -get_device -get_device_system_crosststamp -get_governor_parent_kobj -get_next_ino -get_option -get_options -get_pid_task -get_random_bytes -get_random_bytes_arch -get_random_u32 -get_random_u64 -get_sg_io_hdr -get_state_synchronize_rcu -get_task_exe_file -get_task_mm -get_task_pid -get_thermal_instance -get_tree_single -get_unmapped_area -get_unused_fd_flags -get_user_pages -get_user_pages_fast -get_user_pages_remote -get_vaddr_frames -get_zeroed_page -getboottime64 -gfp_zone -gic_nonsecure_priorities -glob_match -gnss_allocate_device -gnss_deregister_device -gnss_insert_raw -gnss_put_device -gnss_register_device -gov_attr_set_get -gov_attr_set_init -gov_attr_set_put -governor_sysfs_ops -gpio_free -gpio_free_array -gpio_request -gpio_request_one -gpio_to_desc -gpiochip_add_data_with_key -gpiochip_add_pin_range -gpiochip_find -gpiochip_generic_config -gpiochip_generic_free -gpiochip_generic_request -gpiochip_get_data -gpiochip_line_is_valid -gpiochip_lock_as_irq -gpiochip_populate_parent_fwspec_fourcell -gpiochip_remove -gpiochip_unlock_as_irq -gpiod_cansleep -gpiod_count -gpiod_direction_input -gpiod_direction_output -gpiod_direction_output_raw -gpiod_get_optional -gpiod_get_raw_value -gpiod_get_raw_value_cansleep -gpiod_get_value -gpiod_get_value_cansleep -gpiod_set_consumer_name -gpiod_set_debounce -gpiod_set_raw_value -gpiod_set_raw_value_cansleep -gpiod_set_value -gpiod_set_value_cansleep -gpiod_to_chip -gpiod_to_irq -gro_cells_destroy -gro_cells_init -gro_cells_receive -gserial_alloc_line -gserial_connect -gserial_disconnect -guid_gen -handle_bad_irq -handle_edge_irq -handle_fasteoi_ack_irq -handle_fasteoi_irq -handle_level_irq -handle_nested_irq -handle_simple_irq -handle_sysrq -hash_digest_size -hashlen_string -have_governor_per_policy -hci_alloc_dev -hci_free_dev -hci_recv_frame -hci_register_dev -hci_unregister_dev -hdmi_audio_infoframe_init -hdmi_audio_infoframe_pack -hdmi_avi_infoframe_init -hdmi_avi_infoframe_pack -hdmi_infoframe_pack -hex2bin -hex_dump_to_buffer -hex_to_bin -hid_hw_close -hid_hw_open -hid_hw_start -hid_hw_stop -hid_open_report -hid_report_raw_event -hid_unregister_driver -hmm_range_fault -hrtimer_active -hrtimer_cancel -hrtimer_forward -hrtimer_init -hrtimer_init_sleeper -hrtimer_sleeper_start_expires -hrtimer_start_range_ns -hrtimer_try_to_cancel -hvc_alloc -hvc_instantiate -hvc_kick -hvc_poll -hvc_remove -hwrng_register -hwrng_unregister -hwspin_lock_free -hwspin_lock_request_specific -hypervisor_kobj -i2c_adapter_type -i2c_add_adapter -i2c_add_numbered_adapter -i2c_bit_add_bus -i2c_bit_add_numbered_bus -i2c_bus_type -i2c_client_type -i2c_del_adapter -i2c_del_driver -i2c_for_each_dev -i2c_generic_scl_recovery -i2c_get_adapter -i2c_get_device_id -i2c_get_dma_safe_msg_buf -i2c_match_id -i2c_new_ancillary_device -i2c_new_client_device -i2c_new_dummy_device -i2c_new_scanned_device -i2c_parse_fw_timings -i2c_put_adapter -i2c_put_dma_safe_msg_buf -i2c_recover_bus -i2c_register_driver -i2c_smbus_read_byte -i2c_smbus_read_byte_data -i2c_smbus_read_i2c_block_data -i2c_smbus_read_word_data -i2c_smbus_write_byte -i2c_smbus_write_byte_data -i2c_smbus_write_i2c_block_data -i2c_smbus_write_word_data -i2c_smbus_xfer -i2c_transfer -i2c_transfer_buffer_flags -i2c_unregister_device -i2c_verify_adapter -i2c_verify_client -icc_disable -icc_enable -icc_get -icc_link_create -icc_node_add -icc_node_create -icc_node_del -icc_node_destroy -icc_nodes_remove -icc_provider_add -icc_provider_del -icc_put -icc_set_bw -icc_set_tag -icc_std_aggregate -icc_sync_state -ida_alloc_range -ida_destroy -ida_free -idr_alloc -idr_alloc_cyclic -idr_alloc_u32 -idr_destroy -idr_find -idr_for_each -idr_get_next -idr_preload -idr_remove -idr_replace -ieee802154_alloc_hw -ieee802154_free_hw -ieee802154_register_hw -ieee802154_rx_irqsafe -ieee802154_unregister_hw -ieee802154_wake_queue -ieee802154_xmit_complete -iio_buffer_init -iio_buffer_put -iio_channel_get -iio_channel_get_all -iio_channel_release -iio_device_alloc -iio_device_attach_buffer -iio_device_free -iio_device_unregister -iio_push_to_buffers -iio_read_channel_processed -iio_read_channel_raw -import_iovec -in4_pton -in6_dev_finish_destroy -in6_pton -in_aton -in_egroup_p -inc_zone_page_state -inet_proto_csum_replace4 -init_dummy_netdev -init_iova_domain -init_net -init_on_free -init_pid_ns -init_pseudo -init_srcu_struct -init_task -init_timer_key -init_uts_ns -init_wait_entry -input_alloc_absinfo -input_allocate_device -input_close_device -input_event -input_ff_create -input_ff_create_memless -input_ff_destroy -input_free_device -input_mt_assign_slots -input_mt_destroy_slots -input_mt_drop_unused -input_mt_init_slots -input_mt_report_finger_count -input_mt_report_pointer_emulation -input_mt_report_slot_state -input_mt_sync_frame -input_open_device -input_register_device -input_register_handle -input_register_handler -input_set_abs_params -input_set_capability -input_set_timestamp -input_unregister_device -input_unregister_handle -input_unregister_handler -int_pow -int_sqrt -interval_tree_insert -interval_tree_iter_first -interval_tree_iter_next -interval_tree_remove -invalidate_bdev -invalidate_mapping_pages -io_schedule_timeout -iomem_resource -iommu_alloc_resv_region -iommu_attach_device -iommu_attach_group -iommu_aux_attach_device -iommu_aux_detach_device -iommu_aux_get_pasid -iommu_detach_device -iommu_detach_group -iommu_dev_enable_feature -iommu_dev_feature_enabled -iommu_device_register -iommu_device_sysfs_add -iommu_device_sysfs_remove -iommu_device_unlink -iommu_device_unregister -iommu_dma_enable_best_fit_algo -iommu_dma_get_resv_regions -iommu_dma_reserve_iova -iommu_domain_alloc -iommu_domain_free -iommu_domain_get_attr -iommu_domain_set_attr -iommu_fwspec_add_ids -iommu_fwspec_free -iommu_get_dma_cookie -iommu_get_domain_for_dev -iommu_get_msi_cookie -iommu_group_alloc -iommu_group_for_each_dev -iommu_group_get -iommu_group_get_iommudata -iommu_group_put -iommu_group_ref_get -iommu_group_set_iommudata -iommu_group_set_name -iommu_iova_to_phys -iommu_map -iommu_map_sg -iommu_present -iommu_put_dma_cookie -iommu_register_device_fault_handler -iommu_report_device_fault -iommu_set_fault_handler -iommu_unmap -iommu_unregister_device_fault_handler -iounmap -iov_iter_bvec -iov_iter_kvec -ip_compute_csum -ip_send_check -ipi_desc_get -iput -ipv6_ext_hdr -ipv6_find_hdr -ipv6_skip_exthdr -irq_chip_ack_parent -irq_chip_disable_parent -irq_chip_enable_parent -irq_chip_eoi_parent -irq_chip_get_parent_state -irq_chip_mask_parent -irq_chip_retrigger_hierarchy -irq_chip_set_affinity_parent -irq_chip_set_parent_state -irq_chip_set_type_parent -irq_chip_set_vcpu_affinity_parent -irq_chip_set_wake_parent -irq_chip_unmask_parent -irq_create_fwspec_mapping -irq_create_mapping_affinity -irq_create_of_mapping -irq_dispose_mapping -irq_domain_alloc_irqs_parent -irq_domain_create_hierarchy -irq_domain_free_irqs_common -irq_domain_free_irqs_parent -irq_domain_get_irq_data -irq_domain_remove -irq_domain_set_hwirq_and_chip -irq_domain_set_info -irq_domain_simple_ops -irq_domain_update_bus_token -irq_domain_xlate_onecell -irq_domain_xlate_onetwocell -irq_domain_xlate_twocell -irq_find_mapping -irq_find_matching_fwspec -irq_get_irq_data -irq_get_irqchip_state -irq_modify_status -irq_of_parse_and_map -irq_set_affinity_hint -irq_set_affinity_notifier -irq_set_chained_handler_and_data -irq_set_chip -irq_set_chip_and_handler_name -irq_set_chip_data -irq_set_handler_data -irq_set_irq_type -irq_set_irq_wake -irq_set_irqchip_state -irq_set_parent -irq_to_desc -irq_work_queue -irq_work_queue_on -irq_work_sync -is_dma_buf_file -is_vmalloc_addr -jiffies -jiffies64_to_msecs -jiffies_64_to_clock_t -jiffies_to_msecs -jiffies_to_usecs -kasan_flag_enabled -kasprintf -kern_mount -kern_unmount -kernel_bind -kernel_connect -kernel_cpustat -kernel_getsockname -kernel_kobj -kernel_power_off -kernel_recvmsg -kernel_restart -kernel_sendmsg -kernel_sigaction -kernfs_find_and_get_ns -kernfs_notify -kernfs_path_from_node -kernfs_put -kfree -kfree_const -kfree_sensitive -kfree_skb -kick_all_cpus_sync -kill_anon_super -kill_fasync -kill_litter_super -kimage_vaddr -kimage_voffset -kiocb_set_cancel_fn -kmalloc_caches -kmalloc_order -kmalloc_order_trace -kmem_cache_alloc -kmem_cache_alloc_trace -kmem_cache_create -kmem_cache_create_usercopy -kmem_cache_destroy -kmem_cache_free -kmemdup -kmemdup_nul -kmsg_dump_get_line -kmsg_dump_rewind -kobj_sysfs_ops -kobject_add -kobject_create_and_add -kobject_del -kobject_get -kobject_init -kobject_init_and_add -kobject_put -kobject_set_name -kobject_uevent -kobject_uevent_env -krealloc -kset_create_and_add -kset_unregister -ksize -ksoftirqd -kstat -kstat_irqs_cpu -kstat_irqs_usr -kstrdup -kstrdup_const -kstrdup_quotable_cmdline -kstrndup -kstrtobool -kstrtobool_from_user -kstrtoint -kstrtoint_from_user -kstrtol_from_user -kstrtoll -kstrtos8 -kstrtos8_from_user -kstrtou16 -kstrtou16_from_user -kstrtou8 -kstrtou8_from_user -kstrtouint -kstrtouint_from_user -kstrtoul_from_user -kstrtoull -kstrtoull_from_user -ksys_sync_helper -kthread_bind -kthread_bind_mask -kthread_blkcg -kthread_cancel_delayed_work_sync -kthread_cancel_work_sync -kthread_create_on_node -kthread_create_worker -kthread_delayed_work_timer_fn -kthread_destroy_worker -kthread_flush_work -kthread_flush_worker -kthread_mod_delayed_work -kthread_park -kthread_parkme -kthread_queue_delayed_work -kthread_queue_work -kthread_should_park -kthread_should_stop -kthread_stop -kthread_unpark -kthread_unuse_mm -kthread_use_mm -kthread_worker_fn -ktime_add_safe -ktime_get -ktime_get_coarse_with_offset -ktime_get_mono_fast_ns -ktime_get_raw -ktime_get_raw_ts64 -ktime_get_real_seconds -ktime_get_real_ts64 -ktime_get_seconds -ktime_get_ts64 -ktime_get_with_offset -kvasprintf -kvfree -kvfree_call_rcu -kvmalloc_node -led_classdev_flash_register_ext -led_classdev_flash_unregister -led_classdev_register_ext -led_classdev_unregister -led_trigger_event -led_trigger_register_simple -led_trigger_unregister_simple -list_sort -llist_add_batch -llist_reverse_order -lock_sock_nested -log_abnormal_wakeup_reason -log_buf_addr_get -log_buf_len_get -log_threaded_irq_wakeup_reason -loops_per_jiffy -lzo1x_1_compress -lzo1x_decompress_safe -lzorle1x_1_compress -mac_pton -match_string -mbox_chan_received_data -mbox_chan_txdone -mbox_client_txdone -mbox_controller_register -mbox_controller_unregister -mbox_free_channel -mbox_request_channel -mbox_send_message -mdiobus_alloc_size -mdiobus_free -mdiobus_read -mdiobus_unregister -mdiobus_write -media_device_cleanup -media_device_init -media_device_unregister -media_entity_pads_init -memblock_end_of_DRAM -memblock_free -memchr -memchr_inv -memcmp -memcpy -memdup_user -memdup_user_nul -memmove -memory_block_size_bytes -memory_read_from_buffer -memparse -mempool_alloc -mempool_alloc_slab -mempool_create -mempool_create_node -mempool_destroy -mempool_exit -mempool_free -mempool_free_slab -mempool_init -mempool_kfree -mempool_kmalloc -memremap -memset -memset64 -memstart_addr -memunmap -mfd_add_devices -mfd_remove_devices -migrate_swap -mii_check_media -mii_ethtool_get_link_ksettings -mii_ethtool_gset -mii_ethtool_set_link_ksettings -mii_link_ok -mii_nway_restart -mipi_dsi_attach -mipi_dsi_compression_mode -mipi_dsi_create_packet -mipi_dsi_dcs_read -mipi_dsi_dcs_set_column_address -mipi_dsi_dcs_set_display_brightness -mipi_dsi_dcs_set_page_address -mipi_dsi_dcs_set_tear_off -mipi_dsi_dcs_write_buffer -mipi_dsi_detach -mipi_dsi_device_register_full -mipi_dsi_device_unregister -mipi_dsi_driver_register_full -mipi_dsi_driver_unregister -mipi_dsi_host_register -mipi_dsi_host_unregister -mipi_dsi_packet_format_is_long -mipi_dsi_picture_parameter_set -misc_deregister -misc_register -mktime64 -mm_trace_rss_stat -mmc_add_host -mmc_alloc_host -mmc_app_cmd -mmc_calc_max_discard -mmc_can_erase -mmc_can_gpio_cd -mmc_can_secure_erase_trim -mmc_can_trim -mmc_cmdq_disable -mmc_cmdq_enable -mmc_cqe_post_req -mmc_cqe_recovery -mmc_cqe_request_done -mmc_cqe_start_req -mmc_detect_card_removed -mmc_detect_change -mmc_erase -mmc_erase_group_aligned -mmc_flush_cache -mmc_free_host -mmc_get_card -mmc_get_ext_csd -mmc_gpio_get_cd -mmc_gpio_get_ro -mmc_gpiod_request_cd -mmc_gpiod_request_cd_irq -mmc_gpiod_request_ro -mmc_hw_reset -mmc_of_parse -mmc_of_parse_voltage -mmc_put_card -mmc_register_driver -mmc_regulator_get_supply -mmc_regulator_set_ocr -mmc_regulator_set_vqmmc -mmc_release_host -mmc_remove_host -mmc_request_done -mmc_retune_pause -mmc_retune_release -mmc_retune_unpause -mmc_run_bkops -mmc_sanitize -mmc_send_status -mmc_send_tuning -mmc_set_data_timeout -mmc_start_request -mmc_switch -mmc_unregister_driver -mmc_wait_for_cmd -mmc_wait_for_req -mmput -mmu_interval_notifier_insert -mmu_interval_notifier_remove -mmu_interval_read_begin -mmu_notifier_synchronize -mod_delayed_work_on -mod_node_page_state -mod_timer -module_layout -module_put -msleep -msleep_interruptible -mutex_is_locked -mutex_lock -mutex_lock_interruptible -mutex_trylock -mutex_trylock_recursive -mutex_unlock -name_to_dev_t -names_cachep -napi_complete_done -napi_consume_skb -napi_disable -napi_gro_flush -napi_gro_receive -napi_schedule_prep -net_namespace_list -net_ratelimit -netdev_change_features -netdev_err -netdev_increment_features -netdev_info -netdev_lower_state_changed -netdev_master_upper_dev_link -netdev_notify_peers -netdev_pick_tx -netdev_rx_handler_register -netdev_rx_handler_unregister -netdev_state_change -netdev_update_features -netdev_upper_dev_link -netdev_upper_dev_unlink -netdev_warn -netif_carrier_off -netif_carrier_on -netif_device_attach -netif_device_detach -netif_napi_add -netif_receive_skb -netif_receive_skb_list -netif_rx -netif_rx_ni -netif_schedule_queue -netif_set_real_num_rx_queues -netif_set_real_num_tx_queues -netif_stacked_transfer_operstate -netif_tx_stop_all_queues -netif_tx_wake_queue -netlink_ack -netlink_broadcast -netlink_capable -netlink_has_listeners -netlink_kernel_release -netlink_register_notifier -netlink_unicast -netlink_unregister_notifier -new_inode -nf_conntrack_destroy -nla_append -nla_find -nla_memcpy -nla_put -nla_put_64bit -nla_put_nohdr -nla_reserve -nla_reserve_64bit -nla_strlcpy -no_llseek -no_seek_end_llseek -nonseekable_open -noop_llseek -nr_cpu_ids -nr_ipi_get -nr_irqs -ns_capable -ns_to_timespec64 -nsec_to_clock_t -nsecs_to_jiffies -nvdimm_bus_register -nvdimm_bus_unregister -nvdimm_pmem_region_create -nvmem_cell_get -nvmem_cell_put -nvmem_cell_read -nvmem_cell_read_u32 -nvmem_cell_write -nvmem_device_put -nvmem_device_read -nvmem_device_write -of_address_to_resource -of_alias_get_highest_id -of_alias_get_id -of_clk_add_hw_provider -of_clk_add_provider -of_clk_del_provider -of_clk_get -of_clk_get_by_name -of_clk_get_from_provider -of_clk_get_parent_count -of_clk_get_parent_name -of_clk_hw_onecell_get -of_clk_hw_simple_get -of_clk_set_defaults -of_clk_src_onecell_get -of_clk_src_simple_get -of_count_phandle_with_args -of_cpu_node_to_id -of_cpufreq_cooling_register -of_css -of_devfreq_cooling_register -of_devfreq_cooling_register_power -of_device_get_match_data -of_device_is_available -of_device_is_compatible -of_device_modalias -of_device_request_module -of_device_uevent_modalias -of_dma_configure_id -of_dma_controller_free -of_dma_controller_register -of_dma_is_coherent -of_drm_find_bridge -of_drm_find_panel -of_find_all_nodes -of_find_compatible_node -of_find_device_by_node -of_find_i2c_adapter_by_node -of_find_i2c_device_by_node -of_find_matching_node_and_match -of_find_mipi_dsi_host_by_node -of_find_node_by_name -of_find_node_by_phandle -of_find_node_by_type -of_find_node_opts_by_path -of_find_node_with_property -of_find_property -of_fwnode_ops -of_genpd_add_provider_onecell -of_genpd_add_provider_simple -of_genpd_del_provider -of_get_address -of_get_child_by_name -of_get_compatible_child -of_get_cpu_node -of_get_dma_window -of_get_named_gpio_flags -of_get_next_available_child -of_get_next_child -of_get_next_parent -of_get_parent -of_get_property -of_get_regulator_init_data -of_graph_get_endpoint_by_regs -of_graph_get_next_endpoint -of_graph_get_port_parent -of_graph_get_remote_endpoint -of_graph_get_remote_node -of_graph_get_remote_port -of_graph_get_remote_port_parent -of_graph_is_present -of_graph_parse_endpoint -of_hwspin_lock_get_id -of_i2c_get_board_info -of_icc_get -of_icc_xlate_onecell -of_iomap -of_irq_find_parent -of_irq_get -of_irq_get_byname -of_irq_parse_one -of_machine_is_compatible -of_match_device -of_match_node -of_modalias_node -of_n_addr_cells -of_n_size_cells -of_node_name_eq -of_nvmem_device_get -of_parse_phandle -of_parse_phandle_with_args -of_parse_phandle_with_fixed_args -of_phandle_iterator_init -of_phandle_iterator_next -of_phy_simple_xlate -of_platform_depopulate -of_platform_device_create -of_platform_device_destroy -of_platform_populate -of_prop_next_string -of_prop_next_u32 -of_property_count_elems_of_size -of_property_match_string -of_property_read_string -of_property_read_string_helper -of_property_read_u32_index -of_property_read_u64 -of_property_read_u64_index -of_property_read_variable_u16_array -of_property_read_variable_u32_array -of_property_read_variable_u64_array -of_property_read_variable_u8_array -of_pwm_xlate_with_flags -of_reserved_mem_device_init_by_idx -of_reserved_mem_device_release -of_reserved_mem_lookup -of_reset_control_array_get -of_root -of_thermal_get_ntrips -of_thermal_get_trip_points -of_thermal_is_trip_valid -of_translate_address -of_usb_get_phy_mode -of_usb_host_tpl_support -on_each_cpu -oops_in_progress -orderly_poweroff -overflowuid -page_endio -page_mapping -page_reporting_register -page_reporting_unregister -panic -panic_notifier_list -panic_timeout -param_array_ops -param_get_int -param_get_string -param_get_uint -param_get_ullong -param_ops_bint -param_ops_bool -param_ops_byte -param_ops_charp -param_ops_hexint -param_ops_int -param_ops_long -param_ops_short -param_ops_string -param_ops_uint -param_ops_ullong -param_ops_ulong -param_ops_ushort -param_set_bool -param_set_copystring -param_set_int -param_set_uint -part_end_io_acct -part_start_io_acct -passthru_features_check -pause_cpus -pci_alloc_irq_vectors_affinity -pci_assign_resource -pci_assign_unassigned_bus_resources -pci_bus_resource_n -pci_bus_type -pci_clear_master -pci_d3cold_disable -pci_dev_present -pci_dev_put -pci_device_group -pci_device_is_present -pci_disable_device -pci_disable_msi -pci_enable_atomic_ops_to_root -pci_enable_device -pci_enable_device_mem -pci_enable_msi -pci_enable_wake -pci_find_bus -pci_find_capability -pci_find_ext_capability -pci_find_next_capability -pci_free_irq -pci_free_irq_vectors -pci_generic_config_read -pci_generic_config_write -pci_get_device -pci_get_domain_bus_and_slot -pci_get_slot -pci_host_probe -pci_intx -pci_iomap -pci_iomap_range -pci_ioremap_bar -pci_irq_get_affinity -pci_irq_vector -pci_load_and_free_saved_state -pci_load_saved_state -pci_map_rom -pci_match_id -pci_msi_create_irq_domain -pci_msi_mask_irq -pci_msi_unmask_irq -pci_msix_vec_count -pci_read_config_byte -pci_read_config_dword -pci_read_config_word -pci_release_region -pci_release_regions -pci_release_resource -pci_release_selected_regions -pci_request_irq -pci_request_region -pci_request_regions -pci_request_selected_regions -pci_rescan_bus -pci_resize_resource -pci_restore_msi_state -pci_restore_state -pci_save_state -pci_select_bars -pci_set_master -pci_set_mwi -pci_set_power_state -pci_store_saved_state -pci_unmap_rom -pci_unregister_driver -pci_wake_from_d3 -pci_walk_bus -pci_write_config_byte -pci_write_config_dword -pci_write_config_word -pcibios_resource_to_bus -pcie_aspm_enabled -pcie_bandwidth_available -pcie_capability_read_word -pcie_capability_write_word -pcie_get_mps -pcie_get_speed_cap -pcim_enable_device -per_cpu_ptr_to_phys -percpu_down_write -percpu_ref_exit -percpu_ref_init -percpu_ref_is_zero -percpu_ref_kill_and_confirm -percpu_ref_switch_to_atomic_sync -percpu_ref_switch_to_percpu -percpu_up_write -perf_aux_output_begin -perf_aux_output_end -perf_aux_output_flag -perf_event_addr_filters_sync -perf_event_create_kernel_counter -perf_event_disable -perf_event_enable -perf_event_pause -perf_event_read_local -perf_event_read_value -perf_event_release_kernel -perf_event_update_userpage -perf_get_aux -perf_pmu_migrate_context -perf_pmu_register -perf_pmu_unregister -perf_trace_buf_alloc -perf_trace_run_bpf_submit -pfn_valid -phy_attached_info -phy_calibrate -phy_configure -phy_connect -phy_connect_direct -phy_disconnect -phy_do_ioctl_running -phy_drivers_register -phy_drivers_unregister -phy_ethtool_get_link_ksettings -phy_ethtool_nway_reset -phy_ethtool_set_link_ksettings -phy_exit -phy_find_first -phy_get_pause -phy_init -phy_init_hw -phy_mii_ioctl -phy_pm_runtime_get_sync -phy_pm_runtime_put_sync -phy_power_off -phy_power_on -phy_print_status -phy_set_mode_ext -phy_start -phy_stop -pick_highest_pushable_task -pid_nr_ns -pid_task -pin_get_name -pin_user_pages -pin_user_pages_fast -pin_user_pages_remote -pinconf_generic_dt_free_map -pinconf_generic_dt_node_to_map -pinctrl_add_gpio_range -pinctrl_dev_get_drvdata -pinctrl_enable -pinctrl_force_default -pinctrl_force_sleep -pinctrl_get -pinctrl_lookup_state -pinctrl_pm_select_default_state -pinctrl_pm_select_idle_state -pinctrl_pm_select_sleep_state -pinctrl_put -pinctrl_remove_gpio_range -pinctrl_select_default_state -pinctrl_select_state -pinctrl_utils_free_map -pipe_lock -pipe_unlock -pktgen_xfrm_outer_mode_output -platform_add_devices -platform_bus_type -platform_device_add -platform_device_add_data -platform_device_add_properties -platform_device_add_resources -platform_device_alloc -platform_device_del -platform_device_put -platform_device_register -platform_device_register_full -platform_device_unregister -platform_driver_unregister -platform_find_device_by_driver -platform_get_irq -platform_get_irq_byname -platform_get_irq_byname_optional -platform_get_irq_optional -platform_get_resource -platform_get_resource_byname -platform_irq_count -pm_clk_add -pm_clk_create -pm_clk_destroy -pm_clk_resume -pm_clk_suspend -pm_generic_resume -pm_generic_runtime_resume -pm_generic_runtime_suspend -pm_generic_suspend -pm_genpd_add_subdomain -pm_genpd_init -pm_genpd_remove -pm_genpd_remove_subdomain -pm_power_off -pm_relax -pm_runtime_allow -pm_runtime_autosuspend_expiration -pm_runtime_barrier -pm_runtime_enable -pm_runtime_forbid -pm_runtime_force_resume -pm_runtime_force_suspend -pm_runtime_get_if_active -pm_runtime_irq_safe -pm_runtime_no_callbacks -pm_runtime_set_autosuspend_delay -pm_stay_awake -pm_suspend_global_flags -pm_system_wakeup -pm_wakeup_dev_event -pm_wakeup_ws_event -policy_has_boost_freq -power_supply_changed -power_supply_get_by_name -power_supply_get_by_phandle_array -power_supply_get_drvdata -power_supply_get_property -power_supply_is_system_supplied -power_supply_put -power_supply_reg_notifier -power_supply_register -power_supply_set_property -power_supply_unreg_notifier -power_supply_unregister -prandom_bytes -prandom_u32 -preempt_schedule -preempt_schedule_notrace -prepare_to_wait -prepare_to_wait_event -print_hex_dump -printk -printk_deferred -printk_timed_ratelimit -proc_create -proc_create_data -proc_create_single_data -proc_dointvec -proc_dointvec_minmax -proc_dostring -proc_douintvec_minmax -proc_mkdir -proc_mkdir_data -proc_remove -proc_set_size -proc_set_user -proc_symlink -proto_register -proto_unregister -ps2_begin_command -ps2_cmd_aborted -ps2_command -ps2_drain -ps2_end_command -ps2_handle_ack -ps2_handle_response -ps2_init -ps2_sendbyte -ps2_sliced_command -pskb_expand_head -pstore_register -pstore_unregister -public_key_verify_signature -put_device -put_disk -put_iova_domain -put_pid -put_sg_io_hdr -put_tty_driver -put_unused_fd -put_vaddr_frames -pwm_apply_state -pwm_get_chip_data -pwm_set_chip_data -pwmchip_add -pwmchip_remove -qcom_smem_state_get -qcom_smem_state_register -qcom_smem_state_unregister -qcom_smem_state_update_bits -qdisc_reset -queue_delayed_work_on -queue_work_on -radix_tree_delete -radix_tree_insert -radix_tree_iter_delete -radix_tree_iter_resume -radix_tree_lookup -radix_tree_maybe_preload -radix_tree_next_chunk -radix_tree_tagged -rational_best_approximation -raw_notifier_call_chain -raw_notifier_chain_register -raw_notifier_chain_unregister -rb_erase -rb_first -rb_first_postorder -rb_insert_color -rb_last -rb_next -rb_next_postorder -rb_prev -rb_replace_node -rcu_barrier -rcu_barrier_tasks -rcu_barrier_tasks_trace -rcu_bind_current_to_nocb -rcu_cpu_stall_suppress -rcu_cpu_stall_suppress_at_boot -rcu_expedite_gp -rcu_force_quiescent_state -rcu_fwd_progress_check -rcu_get_gp_kthreads_prio -rcu_get_gp_seq -rcu_gp_is_expedited -rcu_gp_is_normal -rcu_gp_set_torture_wait -rcu_inkernel_boot_has_ended -rcu_is_watching -rcu_jiffies_till_stall_check -rcu_read_unlock_trace_special -rcu_unexpedite_gp -rcutorture_get_gp_data -rcuwait_wake_up -rdev_get_drvdata -rdev_get_id -reboot_mode -reciprocal_value -refcount_dec_and_lock -refcount_dec_and_mutex_lock -refcount_dec_not_one -refcount_warn_saturate -refresh_frequency_limits -regcache_cache_bypass -regcache_cache_only -regcache_drop_region -regcache_mark_dirty -regcache_sync -regcache_sync_region -register_blkdev -register_chrdev_region -register_console -register_die_notifier -register_filesystem -register_ftrace_export -register_inet6addr_notifier -register_inetaddr_notifier -register_kernel_break_hook -register_kprobe -register_kretprobe -register_memory_notifier -register_module_notifier -register_net_sysctl -register_netdev -register_netdevice -register_netdevice_notifier -register_netevent_notifier -register_oom_notifier -register_pernet_device -register_pernet_subsys -register_pm_notifier -register_reboot_notifier -register_restart_handler -register_shrinker -register_syscore_ops -register_sysctl -register_sysctl_table -register_virtio_device -register_virtio_driver -register_vmap_purge_notifier -regmap_add_irq_chip -regmap_async_complete -regmap_bulk_read -regmap_bulk_write -regmap_check_range_table -regmap_del_irq_chip -regmap_exit -regmap_field_read -regmap_field_update_bits_base -regmap_get_device -regmap_irq_get_domain -regmap_irq_get_virq -regmap_mmio_detach_clk -regmap_multi_reg_write -regmap_multi_reg_write_bypassed -regmap_raw_read -regmap_raw_write -regmap_raw_write_async -regmap_read -regmap_register_patch -regmap_update_bits_base -regmap_write -regulator_allow_bypass -regulator_bulk_disable -regulator_bulk_enable -regulator_bulk_get -regulator_count_voltages -regulator_disable -regulator_disable_deferred -regulator_disable_regmap -regulator_enable -regulator_enable_regmap -regulator_force_disable -regulator_get -regulator_get_current_limit -regulator_get_drvdata -regulator_get_mode -regulator_get_optional -regulator_get_voltage -regulator_get_voltage_rdev -regulator_get_voltage_sel_regmap -regulator_is_enabled -regulator_is_enabled_regmap -regulator_is_supported_voltage -regulator_list_voltage_linear -regulator_list_voltage_linear_range -regulator_list_voltage_table -regulator_map_voltage_ascend -regulator_map_voltage_linear -regulator_notifier_call_chain -regulator_put -regulator_register -regulator_register_notifier -regulator_set_current_limit -regulator_set_load -regulator_set_mode -regulator_set_voltage -regulator_set_voltage_sel_regmap -regulator_unregister -regulator_unregister_notifier -release_firmware -release_pages -release_sock -remap_pfn_range -remap_vmalloc_range -remove_cpu -remove_memory_subsection -remove_proc_entry -remove_wait_queue -report_iommu_fault -request_any_context_irq -request_firmware -request_firmware_direct -request_firmware_into_buf -request_firmware_nowait -request_threaded_irq -resched_curr -reservation_ww_class -reset_control_assert -reset_control_deassert -reset_control_put -reset_control_reset -resume_cpus -return_address -revalidate_disk_size -rfkill_alloc -rfkill_destroy -rfkill_find_type -rfkill_init_sw_state -rfkill_register -rfkill_set_sw_state -rfkill_unregister -rhashtable_destroy -rhashtable_init -rhashtable_insert_slow -rht_bucket_nested -rht_bucket_nested_insert -rndis_deregister -rndis_free_response -rndis_get_next_response -rndis_msg_parser -rndis_register -rndis_set_host_mac -rndis_set_param_dev -rndis_set_param_medium -rndis_set_param_vendor -rndis_signal_connect -rndis_uninit -root_task_group -round_jiffies_relative -round_jiffies_up -rpmsg_get_signals -rpmsg_poll -rpmsg_register_device -rpmsg_send -rpmsg_set_signals -rpmsg_trysend -rpmsg_unregister_device -rproc_add -rproc_add_subdev -rproc_alloc -rproc_boot -rproc_coredump_add_custom_segment -rproc_coredump_add_segment -rproc_coredump_set_elf_info -rproc_coredump_using_sections -rproc_del -rproc_elf_get_boot_addr -rproc_free -rproc_get_by_child -rproc_get_by_phandle -rproc_put -rproc_remove_subdev -rproc_report_crash -rproc_shutdown -rps_needed -rt_mutex_lock -rt_mutex_trylock -rt_mutex_unlock -rtc_class_close -rtc_class_open -rtc_read_time -rtc_set_time -rtc_time64_to_tm -rtc_tm_to_time64 -rtc_update_irq -rtc_valid_tm -rtc_year_days -rtnl_is_locked -rtnl_link_register -rtnl_link_unregister -rtnl_lock -rtnl_register_module -rtnl_trylock -rtnl_unicast -rtnl_unlock -rtnl_unregister -runqueues -sb800_prefetch -sbitmap_queue_min_shallow_depth -sched_clock -sched_feat_keys -sched_feat_names -sched_set_fifo -sched_set_fifo_low -sched_set_normal -sched_setattr -sched_setattr_nocheck -sched_setscheduler -sched_setscheduler_nocheck -sched_show_task -sched_trace_cfs_rq_avg -sched_trace_cfs_rq_cpu -sched_trace_cfs_rq_path -sched_trace_rd_span -sched_trace_rq_avg_dl -sched_trace_rq_avg_irq -sched_trace_rq_avg_rt -sched_trace_rq_cpu -sched_uclamp_used -schedule -schedule_hrtimeout -schedule_timeout -schedule_timeout_interruptible -schedule_timeout_uninterruptible -scnprintf -scsi_autopm_get_device -scsi_autopm_put_device -scsi_block_requests -scsi_block_when_processing_errors -scsi_command_size_tbl -scsi_compat_ioctl -scsi_device_get -scsi_device_put -scsi_device_quiesce -scsi_dma_unmap -scsi_eh_ready_devs -scsi_ioctl -scsi_ioctl_block_when_processing_errors -scsi_normalize_sense -scsi_print_sense_hdr -scsi_register_interface -scsi_remove_device -scsi_unblock_requests -sdev_prefix_printk -sdhci_add_host -sdhci_cleanup_host -sdhci_cqe_disable -sdhci_cqe_enable -sdhci_cqe_irq -sdhci_enable_clk -sdhci_get_property -sdhci_pltfm_free -sdhci_pltfm_init -sdhci_remove_host -sdhci_reset -sdhci_set_bus_width -sdhci_set_power_noreg -sdhci_setup_host -sdio_claim_host -sdio_disable_func -sdio_enable_func -sdio_f0_readb -sdio_f0_writeb -sdio_get_host_pm_caps -sdio_memcpy_fromio -sdio_memcpy_toio -sdio_readsb -sdio_register_driver -sdio_release_host -sdio_set_block_size -sdio_set_host_pm_flags -sdio_signal_irq -sdio_unregister_driver -sdio_writesb -securityfs_create_dir -securityfs_create_file -securityfs_remove -send_sig_info -seq_buf_printf -seq_file_path -seq_hex_dump -seq_list_next -seq_list_start -seq_lseek -seq_open -seq_printf -seq_putc -seq_puts -seq_read -seq_release -seq_release_private -seq_vprintf -seq_write -serdev_device_close -serdev_device_open -serdev_device_set_baudrate -serdev_device_set_flow_control -serdev_device_wait_until_sent -serdev_device_write -serdev_device_write_wakeup -serio_close -serio_interrupt -serio_open -serio_reconnect -serio_rescan -serio_unregister_child_port -serio_unregister_driver -serio_unregister_port -set_blocksize -set_capacity_revalidate_and_notify -set_cpus_allowed_ptr -set_disk_ro -set_freezable -set_normalized_timespec64 -set_page_dirty -set_page_dirty_lock -set_task_cpu -set_user_nice -sg_alloc_table -sg_alloc_table_from_pages -sg_free_table -sg_init_one -sg_init_table -sg_miter_next -sg_miter_start -sg_miter_stop -sg_nents_for_len -sg_next -sg_pcopy_from_buffer -sg_pcopy_to_buffer -sg_scsi_ioctl -sg_zero_buffer -sgl_alloc -sgl_free -shmem_truncate_range -show_rcu_gp_kthreads -show_regs -si_mem_available -si_meminfo -si_swapinfo -sigprocmask -simple_attr_open -simple_attr_read -simple_attr_release -simple_attr_write -simple_dir_inode_operations -simple_dir_operations -simple_open -simple_read_from_buffer -simple_statfs -simple_strtol -simple_strtoll -simple_strtoul -simple_strtoull -simple_write_to_buffer -single_open -single_open_size -single_release -sk_alloc -sk_free -skb_add_rx_frag -skb_append_pagefrags -skb_checksum -skb_clone -skb_coalesce_rx_frag -skb_copy -skb_copy_bits -skb_copy_datagram_iter -skb_copy_expand -skb_copy_ubufs -skb_dequeue -skb_dequeue_tail -skb_ensure_writable -skb_free_datagram -skb_page_frag_refill -skb_partial_csum_set -skb_pull -skb_push -skb_put -skb_queue_head -skb_queue_purge -skb_queue_tail -skb_realloc_headroom -skb_recv_datagram -skb_set_owner_w -skb_store_bits -skb_to_sgvec -skb_trim -skb_tstamp_tx -skb_unlink -skip_spaces -smp_call_function -smp_call_function_any -smp_call_function_many -smp_call_function_single -smp_call_function_single_async -smp_call_on_cpu -smpboot_register_percpu_thread -smpboot_unregister_percpu_thread -snd_card_disconnect -snd_card_free -snd_card_new -snd_card_register -snd_card_rw_proc_new -snd_component_add -snd_compr_stop_error -snd_ctl_add -snd_ctl_add_vmaster_hook -snd_ctl_apply_vmaster_followers -snd_ctl_boolean_mono_info -snd_ctl_boolean_stereo_info -snd_ctl_enum_info -snd_ctl_find_id -snd_ctl_make_virtual_master -snd_ctl_new1 -snd_ctl_notify -snd_ctl_remove -snd_ctl_remove_id -snd_ctl_sync_vmaster -snd_device_disconnect -snd_device_free -snd_device_new -snd_dma_alloc_pages -snd_dma_free_pages -snd_dmaengine_pcm_prepare_slave_config -snd_hwdep_new -snd_info_create_card_entry -snd_info_create_module_entry -snd_info_free_entry -snd_info_register -snd_interval_refine -snd_jack_new -snd_jack_report -snd_jack_set_key -snd_pci_quirk_lookup -snd_pcm_add_chmap_ctls -snd_pcm_alt_chmaps -snd_pcm_create_iec958_consumer_hw_params -snd_pcm_format_physical_width -snd_pcm_format_width -snd_pcm_hw_constraint_eld -snd_pcm_hw_constraint_integer -snd_pcm_hw_constraint_list -snd_pcm_hw_constraint_minmax -snd_pcm_hw_constraint_msbits -snd_pcm_hw_constraint_step -snd_pcm_hw_limit_rates -snd_pcm_hw_rule_add -snd_pcm_lib_default_mmap -snd_pcm_lib_free_pages -snd_pcm_lib_ioctl -snd_pcm_lib_malloc_pages -snd_pcm_lib_preallocate_free_for_all -snd_pcm_lib_preallocate_pages -snd_pcm_new -snd_pcm_period_elapsed -snd_pcm_rate_range_to_bits -snd_pcm_set_managed_buffer_all -snd_pcm_set_ops -snd_pcm_set_sync -snd_pcm_std_chmaps -snd_pcm_stream_lock -snd_pcm_stream_unlock -snd_pcm_stream_unlock_irqrestore -snd_soc_add_card_controls -snd_soc_add_component_controls -snd_soc_add_dai_controls -snd_soc_bytes_info_ext -snd_soc_bytes_tlv_callback -snd_soc_card_get_kcontrol -snd_soc_card_jack_new -snd_soc_component_async_complete -snd_soc_component_disable_pin -snd_soc_component_exit_regmap -snd_soc_component_force_enable_pin -snd_soc_component_init_regmap -snd_soc_component_read -snd_soc_component_set_jack -snd_soc_component_set_pll -snd_soc_component_set_sysclk -snd_soc_component_update_bits -snd_soc_component_update_bits_async -snd_soc_component_write -snd_soc_dai_get_channel_map -snd_soc_dai_link_set_capabilities -snd_soc_dai_set_bclk_ratio -snd_soc_dai_set_channel_map -snd_soc_dai_set_fmt -snd_soc_dai_set_pll -snd_soc_dai_set_sysclk -snd_soc_dai_set_tdm_slot -snd_soc_dapm_add_routes -snd_soc_dapm_disable_pin -snd_soc_dapm_disable_pin_unlocked -snd_soc_dapm_enable_pin -snd_soc_dapm_force_enable_pin -snd_soc_dapm_force_enable_pin_unlocked -snd_soc_dapm_get_enum_double -snd_soc_dapm_get_pin_status -snd_soc_dapm_get_pin_switch -snd_soc_dapm_get_volsw -snd_soc_dapm_ignore_suspend -snd_soc_dapm_info_pin_switch -snd_soc_dapm_kcontrol_dapm -snd_soc_dapm_kcontrol_widget -snd_soc_dapm_mixer_update_power -snd_soc_dapm_mux_update_power -snd_soc_dapm_new_control -snd_soc_dapm_new_controls -snd_soc_dapm_new_widgets -snd_soc_dapm_put_enum_double -snd_soc_dapm_put_pin_switch -snd_soc_dapm_put_volsw -snd_soc_dapm_sync -snd_soc_dapm_sync_unlocked -snd_soc_dapm_weak_routes -snd_soc_find_dai -snd_soc_get_enum_double -snd_soc_get_pcm_runtime -snd_soc_get_volsw -snd_soc_get_volsw_range -snd_soc_get_volsw_sx -snd_soc_get_xr_sx -snd_soc_info_enum_double -snd_soc_info_multi_ext -snd_soc_info_volsw -snd_soc_info_volsw_range -snd_soc_info_volsw_sx -snd_soc_info_xr_sx -snd_soc_jack_add_gpios -snd_soc_jack_report -snd_soc_lookup_component -snd_soc_new_compress -snd_soc_of_get_dai_link_codecs -snd_soc_of_get_dai_name -snd_soc_of_parse_audio_routing -snd_soc_of_parse_audio_simple_widgets -snd_soc_of_parse_aux_devs -snd_soc_of_parse_card_name -snd_soc_of_parse_daifmt -snd_soc_of_parse_node_prefix -snd_soc_of_parse_tdm_slot -snd_soc_of_put_dai_link_codecs -snd_soc_params_to_bclk -snd_soc_params_to_frame_size -snd_soc_pm_ops -snd_soc_put_enum_double -snd_soc_put_volsw -snd_soc_put_volsw_range -snd_soc_put_volsw_sx -snd_soc_put_xr_sx -snd_soc_register_card -snd_soc_register_component -snd_soc_rtdcom_lookup -snd_soc_runtime_calc_hw -snd_soc_runtime_set_dai_fmt -snd_soc_set_runtime_hwparams -snd_soc_tplg_component_load -snd_soc_tplg_component_remove -snd_soc_tplg_widget_bind_event -snd_soc_unregister_card -snd_soc_unregister_component -snd_usb_enable_audio_stream -snd_vendor_set_ops -snprintf -soc_device_register -soc_device_unregister -sock_alloc_send_skb -sock_create_kern -sock_gettstamp -sock_i_uid -sock_init_data -sock_no_accept -sock_no_listen -sock_no_mmap -sock_no_sendpage -sock_no_shutdown -sock_no_socketpair -sock_queue_rcv_skb -sock_register -sock_release -sock_setsockopt -sock_unregister -sock_wfree -softnet_data -sort -spi_bus_lock -spi_bus_type -spi_bus_unlock -spi_controller_resume -spi_controller_suspend -spi_delay_exec -spi_finalize_current_message -spi_finalize_current_transfer -spi_get_next_queued_message -spi_register_controller -spi_setup -spi_sync -spi_sync_locked -spi_unregister_controller -split_page -spmi_controller_add -spmi_controller_alloc -spmi_controller_remove -spmi_ext_register_read -spmi_ext_register_readl -spmi_ext_register_write -spmi_ext_register_writel -spmi_register_read -spmi_register_write -spmi_register_zero_write -sprint_symbol -sprint_symbol_no_offset -sprintf -srcu_barrier -srcu_batches_completed -srcu_init_notifier_head -srcu_notifier_call_chain -srcu_notifier_chain_register -srcu_notifier_chain_unregister -srcu_torture_stats_print -srcutorture_get_gp_data -sscanf -stack_trace_print -stack_trace_save -stack_trace_save_regs -stack_trace_save_tsk -static_key_disable -static_key_disable_cpuslocked -static_key_slow_dec -static_key_slow_inc -stop_machine -stop_one_cpu_nowait -stpcpy -strcasecmp -strcat -strchr -strchrnul -strcmp -strcpy -strcspn -stream_open -strim -string_get_size -strlcat -strlcpy -strlen -strncasecmp -strncat -strnchr -strncmp -strncpy -strncpy_from_user -strndup_user -strnlen -strnstr -strpbrk -strrchr -strreplace -strscpy -strsep -strspn -strstr -submit_bh -submit_bio -submit_bio_wait -subsys_system_register -swiotlb_nr_tbl -sync_blockdev -sync_file_create -sync_file_get_fence -synchronize_irq -synchronize_net -synchronize_rcu -synchronize_rcu_expedited -synchronize_rcu_tasks -synchronize_rcu_tasks_trace -synchronize_srcu -synchronize_srcu_expedited -sys_tz -syscon_node_to_regmap -syscon_regmap_lookup_by_phandle -sysctl_sched_features -sysctl_sched_latency -sysctl_vals -sysfs_add_file_to_group -sysfs_add_link_to_group -sysfs_create_bin_file -sysfs_create_file_ns -sysfs_create_files -sysfs_create_group -sysfs_create_groups -sysfs_create_link -sysfs_emit -sysfs_emit_at -sysfs_notify -sysfs_remove_bin_file -sysfs_remove_file_from_group -sysfs_remove_file_ns -sysfs_remove_files -sysfs_remove_group -sysfs_remove_groups -sysfs_remove_link -sysfs_remove_link_from_group -sysfs_streq -sysfs_update_group -sysrq_mask -system_freezable_wq -system_freezing_cnt -system_highpri_wq -system_long_wq -system_power_efficient_wq -system_state -system_unbound_wq -system_wq -task_active_pid_ns -task_groups -task_may_not_preempt -task_rq_lock -tasklet_init -tasklet_kill -tasklet_setup -tasklist_lock -tcp_register_congestion_control -tcp_reno_cong_avoid -tcp_reno_ssthresh -tcp_reno_undo_cwnd -tcp_slow_start -tcp_unregister_congestion_control -tcpci_get_tcpm_port -tcpci_irq -tcpci_register_port -tcpci_unregister_port -tcpm_cc_change -tcpm_is_toggling -tcpm_pd_hard_reset -tcpm_pd_receive -tcpm_pd_transmit_complete -tcpm_sink_frs -tcpm_sourcing_vbus -tcpm_update_sink_capabilities -tcpm_vbus_change -thermal_cdev_update -thermal_cooling_device_register -thermal_cooling_device_unregister -thermal_of_cooling_device_register -thermal_pressure -thermal_zone_device_disable -thermal_zone_device_enable -thermal_zone_device_is_enabled -thermal_zone_device_register -thermal_zone_device_unregister -thermal_zone_device_update -thermal_zone_get_slope -thermal_zone_get_temp -thermal_zone_get_zone_by_name -thermal_zone_of_sensor_register -thermal_zone_of_sensor_unregister -thread_group_cputime_adjusted -tick_nohz_get_idle_calls_cpu -tick_nohz_get_sleep_length -time64_to_tm -timecounter_init -timecounter_read -timer_unstable_counter_workaround -topology_set_thermal_pressure -total_swapcache_pages -trace_clock_local -trace_event_buffer_commit -trace_event_buffer_reserve -trace_event_ignore_this_pid -trace_event_raw_init -trace_event_reg -trace_handle_return -trace_output_call -trace_print_array_seq -trace_print_flags_seq -trace_print_hex_seq -trace_print_symbols_seq -trace_raw_output_prep -trace_seq_printf -trace_seq_putc -tracepoint_probe_register -tracepoint_probe_register_prio -tracepoint_probe_unregister -tracing_off -try_module_get -try_to_del_timer_sync -try_wait_for_completion -ttm_bo_bulk_move_lru_tail -ttm_bo_device_init -ttm_bo_device_release -ttm_bo_dma_acc_size -ttm_bo_evict_mm -ttm_bo_eviction_valuable -ttm_bo_glob -ttm_bo_init_reserved -ttm_bo_kmap -ttm_bo_kunmap -ttm_bo_lock_delayed_workqueue -ttm_bo_mem_space -ttm_bo_mmap -ttm_bo_mmap_obj -ttm_bo_move_accel_cleanup -ttm_bo_move_memcpy -ttm_bo_move_to_lru_tail -ttm_bo_move_ttm -ttm_bo_put -ttm_bo_unlock_delayed_workqueue -ttm_bo_validate -ttm_dma_page_alloc_debugfs -ttm_dma_populate -ttm_dma_tt_fini -ttm_dma_unpopulate -ttm_eu_backoff_reservation -ttm_eu_fence_buffer_objects -ttm_eu_reserve_buffers -ttm_page_alloc_debugfs -ttm_populate_and_map_pages -ttm_range_man_fini -ttm_range_man_init -ttm_resource_free -ttm_resource_manager_force_list_clean -ttm_resource_manager_init -ttm_sg_tt_init -ttm_tt_destroy_common -ttm_tt_populate -ttm_tt_set_placement_caching -ttm_unmap_and_unpopulate_pages -tty_flip_buffer_push -tty_insert_flip_string_fixed_flag -tty_kref_put -tty_ldisc_deref -tty_ldisc_ref -tty_port_close -tty_port_destroy -tty_port_hangup -tty_port_init -tty_port_open -tty_port_register_device -tty_port_tty_get -tty_port_tty_wakeup -tty_register_driver -tty_set_operations -tty_standard_install -tty_std_termios -tty_termios_baud_rate -tty_termios_copy_hw -tty_termios_encode_baud_rate -tty_unregister_device -tty_unregister_driver -tty_vhangup -typec_altmode_get_partner -typec_altmode_update_active -typec_get_drvdata -typec_partner_register_altmode -typec_port_register_altmode -typec_register_partner -typec_register_port -typec_set_data_role -typec_set_pwr_opmode -typec_set_pwr_role -typec_switch_get_drvdata -typec_switch_register -typec_switch_unregister -typec_unregister_altmode -typec_unregister_partner -typec_unregister_port -uart_add_one_port -uart_console_device -uart_console_write -uart_get_baud_rate -uart_insert_char -uart_parse_options -uart_register_driver -uart_remove_one_port -uart_resume_port -uart_set_options -uart_suspend_port -uart_try_toggle_sysrq -uart_unregister_driver -uart_update_timeout -uart_write_wakeup -uclamp_eff_value -ucsi_connector_change -ucsi_create -ucsi_destroy -ucsi_get_drvdata -ucsi_register -ucsi_set_drvdata -ucsi_unregister -udp4_hwcsum -ufshcd_auto_hibern8_update -ufshcd_bkops_ctrl -ufshcd_dme_get_attr -ufshcd_dme_set_attr -ufshcd_dump_regs -ufshcd_fixup_dev_quirks -ufshcd_get_local_unipro_ver -ufshcd_get_pwr_dev_param -ufshcd_hold -ufshcd_map_desc_id_to_length -ufshcd_pltfrm_init -ufshcd_pltfrm_resume -ufshcd_pltfrm_runtime_idle -ufshcd_pltfrm_runtime_resume -ufshcd_pltfrm_runtime_suspend -ufshcd_pltfrm_shutdown -ufshcd_pltfrm_suspend -ufshcd_query_attr -ufshcd_query_attr_retry -ufshcd_query_descriptor_retry -ufshcd_query_flag -ufshcd_query_flag_retry -ufshcd_read_desc_param -ufshcd_release -ufshcd_remove -ufshcd_shutdown -ufshcd_system_resume -ufshcd_system_suspend -ufshcd_uic_hibern8_enter -ufshcd_uic_hibern8_exit -uio_unregister_device -unlock_page -unmap_mapping_range -unpin_user_page -unregister_blkdev -unregister_chrdev_region -unregister_console -unregister_die_notifier -unregister_filesystem -unregister_ftrace_export -unregister_inet6addr_notifier -unregister_inetaddr_notifier -unregister_kprobe -unregister_kretprobe -unregister_module_notifier -unregister_netdev -unregister_netdevice_many -unregister_netdevice_notifier -unregister_netdevice_queue -unregister_netevent_notifier -unregister_oom_notifier -unregister_pernet_device -unregister_pernet_subsys -unregister_pm_notifier -unregister_reboot_notifier -unregister_restart_handler -unregister_rpmsg_driver -unregister_shrinker -unregister_syscore_ops -unregister_sysctl_table -unregister_virtio_device -unregister_virtio_driver -unregister_vmap_purge_notifier -up -up_read -up_write -update_devfreq -update_rq_clock -usb_add_function -usb_add_gadget -usb_add_gadget_udc -usb_add_hcd -usb_add_phy_dev -usb_alloc_coherent -usb_alloc_dev -usb_alloc_urb -usb_amd_dev_put -usb_amd_prefetch_quirk -usb_amd_pt_check_port -usb_amd_quirk_pll_check -usb_amd_quirk_pll_disable -usb_amd_quirk_pll_enable -usb_asmedia_modifyflowcontrol -usb_assign_descriptors -usb_autopm_get_interface -usb_autopm_get_interface_no_resume -usb_autopm_put_interface -usb_bulk_msg -usb_calc_bus_time -usb_choose_configuration -usb_composite_setup_continue -usb_control_msg -usb_copy_descriptors -usb_create_hcd -usb_debug_root -usb_decode_ctrl -usb_del_gadget_udc -usb_deregister -usb_deregister_dev -usb_disable_xhci_ports -usb_disabled -usb_enable_autosuspend -usb_enable_intel_xhci_ports -usb_ep_alloc_request -usb_ep_autoconfig -usb_ep_clear_halt -usb_ep_dequeue -usb_ep_disable -usb_ep_enable -usb_ep_fifo_flush -usb_ep_fifo_status -usb_ep_free_request -usb_ep_queue -usb_ep_set_halt -usb_ep_set_maxpacket_limit -usb_find_common_endpoints -usb_find_interface -usb_free_all_descriptors -usb_free_coherent -usb_free_urb -usb_function_register -usb_function_unregister -usb_gadget_giveback_request -usb_gadget_map_request_by_dev -usb_gadget_probe_driver -usb_gadget_set_state -usb_gadget_udc_reset -usb_gadget_unmap_request_by_dev -usb_gadget_unregister_driver -usb_gadget_vbus_connect -usb_gadget_vbus_disconnect -usb_gadget_vbus_draw -usb_gadget_wakeup -usb_get_dev -usb_get_dr_mode -usb_get_gadget_udc_name -usb_get_intf -usb_get_maximum_speed -usb_get_urb -usb_gstrings_attach -usb_hc_died -usb_hcd_check_unlink_urb -usb_hcd_end_port_resume -usb_hcd_giveback_urb -usb_hcd_irq -usb_hcd_is_primary_hcd -usb_hcd_link_urb_to_ep -usb_hcd_map_urb_for_dma -usb_hcd_pci_pm_ops -usb_hcd_pci_probe -usb_hcd_pci_remove -usb_hcd_pci_shutdown -usb_hcd_platform_shutdown -usb_hcd_poll_rh_status -usb_hcd_resume_root_hub -usb_hcd_start_port_resume -usb_hcd_unlink_urb_from_ep -usb_hcds_loaded -usb_hub_clear_tt_buffer -usb_hub_find_child -usb_ifnum_to_if -usb_initialize_gadget -usb_interface_id -usb_kill_urb -usb_match_id -usb_match_one_id -usb_otg_state_string -usb_phy_set_charger_current -usb_poison_anchored_urbs -usb_poison_urb -usb_put_dev -usb_put_function_instance -usb_put_hcd -usb_put_intf -usb_register_dev -usb_register_driver -usb_register_notify -usb_remove_hcd -usb_remove_phy -usb_role_switch_find_by_fwnode -usb_role_switch_get -usb_role_switch_get_drvdata -usb_role_switch_put -usb_role_switch_register -usb_role_switch_set_role -usb_role_switch_unregister -usb_root_hub_lost_power -usb_set_device_state -usb_set_interface -usb_show_dynids -usb_speed_string -usb_store_new_id -usb_string_id -usb_submit_urb -usb_unpoison_urb -usb_unregister_notify -usb_wakeup_notification -usbnet_change_mtu -usbnet_defer_kevent -usbnet_disconnect -usbnet_get_drvinfo -usbnet_get_endpoints -usbnet_get_link -usbnet_get_link_ksettings -usbnet_get_msglevel -usbnet_get_stats64 -usbnet_link_change -usbnet_nway_reset -usbnet_open -usbnet_probe -usbnet_read_cmd -usbnet_read_cmd_nopm -usbnet_resume -usbnet_set_link_ksettings -usbnet_set_msglevel -usbnet_skb_return -usbnet_start_xmit -usbnet_stop -usbnet_suspend -usbnet_tx_timeout -usbnet_unlink_rx_urbs -usbnet_update_max_qlen -usbnet_write_cmd -usbnet_write_cmd_async -usbnet_write_cmd_nopm -usleep_range -uuid_gen -uuid_null -uuid_parse -v4l2_compat_ioctl32 -v4l2_ctrl_find -v4l2_ctrl_handler_free -v4l2_ctrl_handler_init_class -v4l2_ctrl_handler_setup -v4l2_ctrl_log_status -v4l2_ctrl_new_custom -v4l2_ctrl_new_std -v4l2_ctrl_new_std_menu -v4l2_device_register -v4l2_device_register_subdev -v4l2_device_set_name -v4l2_device_unregister -v4l2_device_unregister_subdev -v4l2_event_dequeue -v4l2_event_pending -v4l2_event_queue -v4l2_event_queue_fh -v4l2_event_subscribe -v4l2_event_unsubscribe -v4l2_fh_add -v4l2_fh_del -v4l2_fh_exit -v4l2_fh_init -v4l2_fh_open -v4l2_fh_release -v4l2_i2c_subdev_init -v4l2_m2m_buf_queue -v4l2_m2m_buf_remove -v4l2_m2m_ctx_init -v4l2_m2m_ctx_release -v4l2_m2m_dqbuf -v4l2_m2m_fop_mmap -v4l2_m2m_fop_poll -v4l2_m2m_get_curr_priv -v4l2_m2m_get_vq -v4l2_m2m_init -v4l2_m2m_ioctl_dqbuf -v4l2_m2m_ioctl_querybuf -v4l2_m2m_ioctl_reqbufs -v4l2_m2m_ioctl_streamoff -v4l2_m2m_ioctl_streamon -v4l2_m2m_job_finish -v4l2_m2m_mmap -v4l2_m2m_next_buf -v4l2_m2m_poll -v4l2_m2m_qbuf -v4l2_m2m_querybuf -v4l2_m2m_release -v4l2_m2m_reqbufs -v4l2_m2m_streamoff -v4l2_m2m_streamon -v4l2_m2m_try_schedule -v4l2_s_ctrl -v4l2_subdev_call_wrappers -v4l2_subdev_init -v4l_bound_align_image -vabits_actual -vb2_buffer_done -vb2_common_vm_ops -vb2_create_framevec -vb2_destroy_framevec -vb2_dqbuf -vb2_fop_mmap -vb2_fop_poll -vb2_fop_read -vb2_fop_release -vb2_ioctl_create_bufs -vb2_ioctl_dqbuf -vb2_ioctl_expbuf -vb2_ioctl_qbuf -vb2_ioctl_querybuf -vb2_ioctl_reqbufs -vb2_ioctl_streamoff -vb2_ioctl_streamon -vb2_mmap -vb2_ops_wait_finish -vb2_ops_wait_prepare -vb2_plane_cookie -vb2_plane_vaddr -vb2_poll -vb2_prepare_buf -vb2_qbuf -vb2_querybuf -vb2_queue_init -vb2_queue_release -vb2_reqbufs -vb2_streamoff -vb2_streamon -vb2_vmalloc_memops -vb2_wait_for_all_buffers -vchan_dma_desc_free_list -vchan_find_desc -vchan_init -vchan_tx_desc_free -vchan_tx_submit -vfree -vfs_fsync_range -video_devdata -video_device_alloc -video_device_release -video_device_release_empty -video_ioctl2 -video_unregister_device -virtio_check_driver_offered_feature -virtio_config_changed -virtio_device_freeze -virtio_device_restore -virtio_max_dma_size -virtio_transport_connect -virtio_transport_deliver_tap_pkt -virtio_transport_destruct -virtio_transport_dgram_allow -virtio_transport_dgram_bind -virtio_transport_dgram_dequeue -virtio_transport_dgram_enqueue -virtio_transport_do_socket_init -virtio_transport_free_pkt -virtio_transport_notify_buffer_size -virtio_transport_notify_poll_in -virtio_transport_notify_poll_out -virtio_transport_notify_recv_init -virtio_transport_notify_recv_post_dequeue -virtio_transport_notify_recv_pre_block -virtio_transport_notify_recv_pre_dequeue -virtio_transport_notify_send_init -virtio_transport_notify_send_post_enqueue -virtio_transport_notify_send_pre_block -virtio_transport_notify_send_pre_enqueue -virtio_transport_recv_pkt -virtio_transport_release -virtio_transport_shutdown -virtio_transport_stream_allow -virtio_transport_stream_dequeue -virtio_transport_stream_enqueue -virtio_transport_stream_has_data -virtio_transport_stream_has_space -virtio_transport_stream_is_active -virtio_transport_stream_rcvhiwat -virtqueue_add_inbuf -virtqueue_add_inbuf_ctx -virtqueue_add_outbuf -virtqueue_add_sgs -virtqueue_detach_unused_buf -virtqueue_disable_cb -virtqueue_enable_cb -virtqueue_enable_cb_delayed -virtqueue_enable_cb_prepare -virtqueue_get_avail_addr -virtqueue_get_buf -virtqueue_get_buf_ctx -virtqueue_get_desc_addr -virtqueue_get_used_addr -virtqueue_get_vring_size -virtqueue_is_broken -virtqueue_kick -virtqueue_kick_prepare -virtqueue_notify -virtqueue_poll -vm_event_states -vm_get_page_prot -vm_insert_page -vm_iomap_memory -vm_map_pages -vm_map_ram -vm_mmap -vm_munmap -vm_node_stat -vm_unmap_ram -vm_zone_stat -vmalloc -vmalloc_nr_pages -vmalloc_to_page -vmalloc_to_pfn -vmalloc_user -vmap -vmemdup_user -vmf_insert_mixed -vmf_insert_pfn -vmf_insert_pfn_prot -vprintk -vring_create_virtqueue -vring_del_virtqueue -vring_interrupt -vring_new_virtqueue -vring_transport_features -vscnprintf -vsnprintf -vsock_core_register -vsock_core_unregister -vsock_for_each_connected_socket -vsprintf -vunmap -vzalloc -vzalloc_node -wait_for_completion -wait_for_completion_interruptible -wait_for_completion_interruptible_timeout -wait_for_completion_io_timeout -wait_for_completion_killable -wait_for_completion_killable_timeout -wait_for_completion_timeout -wait_woken -wake_up_if_idle -wake_up_process -wakeup_source_add -wakeup_source_create -wakeup_source_destroy -wakeup_source_register -wakeup_source_remove -wakeup_source_unregister -watchdog_init_timeout -watchdog_register_device -watchdog_set_restart_priority -watchdog_unregister_device -wireless_send_event -woken_wake_function -work_busy -ww_mutex_lock -ww_mutex_lock_interruptible -ww_mutex_unlock -xa_destroy -xa_erase -xa_find -xa_find_after -xa_load -xa_store -xdp_convert_zc_to_xdp_frame -xdp_do_flush -xdp_do_redirect -xdp_return_frame -xdp_return_frame_rx_napi -xdp_rxq_info_reg -xdp_rxq_info_reg_mem_model -xdp_rxq_info_unreg -xdp_warn -xfrm_state_lookup_byspi -xfrm_stateonly_find -xhci_add_endpoint -xhci_address_device -xhci_alloc_command -xhci_alloc_erst -xhci_check_trb_in_td_math -xhci_free_command -xhci_free_erst -xhci_gen_setup -xhci_get_endpoint_index -xhci_get_ep_ctx -xhci_get_slot_ctx -xhci_handle_event -xhci_init_driver -xhci_initialize_ring_info -xhci_link_segments -xhci_queue_stop_endpoint -xhci_resume -xhci_ring_alloc -xhci_ring_cmd_db -xhci_ring_free -xhci_run -xhci_segment_free -xhci_suspend -xhci_trb_virt_to_dma -xhci_update_erst_dequeue -xhci_vendor_get_ops -zone_watermark_ok -zone_watermark_ok_safe + PDE_DATA + __ClearPageMovable + __SetPageMovable + ___pskb_trim + ___ratelimit + __alloc_disk_node + __alloc_pages_nodemask + __alloc_percpu + __alloc_percpu_gfp + __alloc_skb + __arch_clear_user + __arch_copy_from_user + __arch_copy_in_user + __arch_copy_to_user + __arm_smccc_hvc + __arm_smccc_smc + __bitmap_andnot + __bitmap_clear + __bitmap_complement + __bitmap_or + __bitmap_set + __bitmap_weight + __bitmap_xor + __blk_mq_debugfs_rq_show + __blk_mq_end_request + __blk_rq_map_sg + __blkdev_issue_discard + __blkdev_issue_zeroout + __cfi_slowpath + __check_object_size + __class_create + __class_register + __clk_determine_rate + __clk_get_hw + __clk_get_name + __clk_hw_register_divider + __clk_hw_register_gate + __clk_hw_register_mux + __clk_is_enabled + __clk_mux_determine_rate_closest + __clocksource_register_scale + __close_fd + __const_udelay + __cpu_active_mask + __cpu_online_mask + __cpu_possible_mask + __cpu_present_mask + __cpufreq_driver_target + __cpuhp_remove_state + __cpuhp_setup_state + __cpuhp_setup_state_cpuslocked + __cpuhp_state_add_instance + __cpuhp_state_remove_instance + __dev_get_by_index + __dev_kfree_skb_any + __devm_alloc_percpu + __devm_drm_dev_alloc + __devm_iio_device_register + __devm_irq_alloc_descs + __devm_of_phy_provider_register + __devm_regmap_init + __devm_regmap_init_i2c + __devm_regmap_init_mmio_clk + __devm_regmap_init_spi + __devm_release_region + __devm_request_region + __devm_reset_control_get + __devm_spi_alloc_controller + __dma_request_channel + __do_once_done + __do_once_start + __drm_atomic_helper_connector_destroy_state + __drm_atomic_helper_connector_duplicate_state + __drm_atomic_helper_connector_reset + __drm_atomic_helper_crtc_destroy_state + __drm_atomic_helper_crtc_duplicate_state + __drm_atomic_helper_crtc_reset + __drm_atomic_helper_plane_destroy_state + __drm_atomic_helper_plane_duplicate_state + __drm_atomic_helper_private_obj_duplicate_state + __drm_atomic_state_free + __drm_dbg + __drm_debug + __drm_err + __drm_printfn_coredump + __drm_printfn_info + __drm_printfn_seq_file + __drm_puts_coredump + __drm_puts_seq_file + __dynamic_dev_dbg + __dynamic_pr_debug + __ethtool_get_link_ksettings + __fdget + __flush_icache_range + __free_pages + __genphy_config_aneg + __get_free_pages + __get_task_comm + __hid_register_driver + __hid_request + __hrtimer_get_remaining + __hvc_resize + __hwspin_lock_timeout + __hwspin_unlock + __i2c_smbus_xfer + __i2c_transfer + __iio_device_register + __init_rwsem + __init_swait_queue_head + __init_waitqueue_head + __ioread32_copy + __ioremap + __iowrite32_copy + __ipv6_addr_type + __irq_alloc_descs + __irq_domain_add + __irq_set_handler + __kfifo_alloc + __kfifo_free + __kfifo_in + __kfifo_init + __kfifo_out + __kfifo_out_peek + __kfifo_to_user + __kfree_skb + __kmalloc + __kthread_init_worker + __list_add_valid + __list_del_entry_valid + __local_bh_enable_ip + __lock_page + __log_post_read_mmio + __log_read_mmio + __log_write_mmio + __mdiobus_register + __media_device_register + __memcat_p + __memcpy_fromio + __memcpy_toio + __memset_io + __mmc_claim_host + __mmc_send_status + __mmdrop + __module_get + __msecs_to_jiffies + __mutex_init + __napi_alloc_skb + __napi_schedule + __ndelay + __netdev_alloc_skb + __netif_napi_del + __netif_set_xps_queue + __netlink_kernel_create + __next_zones_zonelist + __nla_parse + __nla_validate + __nlmsg_put + __num_online_cpus + __of_reset_control_get + __pci_register_driver + __per_cpu_offset + __percpu_down_read + __percpu_init_rwsem + __platform_driver_probe + __platform_driver_register + __platform_register_drivers + __pm_relax + __pm_runtime_disable + __pm_runtime_idle + __pm_runtime_resume + __pm_runtime_set_status + __pm_runtime_suspend + __pm_runtime_use_autosuspend + __pm_stay_awake + __printk_ratelimit + __pskb_pull_tail + __put_page + __put_task_struct + __rb_erase_color + __rb_insert_augmented + __rcu_read_lock + __rcu_read_unlock + __refrigerator + __register_chrdev + __register_rpmsg_driver + __regmap_init + __release_region + __request_module + __request_percpu_irq + __request_region + __rht_bucket_nested + __rtc_register_device + __scsi_execute + __scsi_iterate_devices + __scsi_print_sense + __sdhci_add_host + __seq_open_private + __serio_register_driver + __serio_register_port + __sg_page_iter_dma_next + __sg_page_iter_next + __sg_page_iter_start + __skb_ext_put + __skb_flow_dissect + __skb_get_hash + __skb_gso_segment + __skb_pad + __spi_alloc_controller + __spi_register_driver + __splice_from_pipe + __spmi_driver_register + __srcu_read_lock + __srcu_read_unlock + __stack_chk_fail + __stack_chk_guard + __sw_hweight16 + __sw_hweight32 + __sw_hweight64 + __sw_hweight8 + __sysfs_match_string + __task_pid_nr_ns + __task_rq_lock + __tasklet_hi_schedule + __tasklet_schedule + __trace_bprintk + __trace_bputs + __trace_printk + __traceiter_android_rvh_account_irq + __traceiter_android_rvh_build_perf_domains + __traceiter_android_rvh_can_migrate_task + __traceiter_android_rvh_check_preempt_wakeup + __traceiter_android_rvh_cpu_cgroup_attach + __traceiter_android_rvh_cpu_cgroup_can_attach + __traceiter_android_rvh_cpu_cgroup_online + __traceiter_android_rvh_cpu_overutilized + __traceiter_android_rvh_cpufreq_transition + __traceiter_android_rvh_dequeue_task + __traceiter_android_rvh_die_kernel_fault + __traceiter_android_rvh_do_mem_abort + __traceiter_android_rvh_do_sp_pc_abort + __traceiter_android_rvh_enqueue_task + __traceiter_android_rvh_find_busiest_queue + __traceiter_android_rvh_find_energy_efficient_cpu + __traceiter_android_rvh_find_lowest_rq + __traceiter_android_rvh_flush_task + __traceiter_android_rvh_irqs_disable + __traceiter_android_rvh_irqs_enable + __traceiter_android_rvh_migrate_queued_task + __traceiter_android_rvh_new_task_stats + __traceiter_android_rvh_pick_next_entity + __traceiter_android_rvh_place_entity + __traceiter_android_rvh_preempt_disable + __traceiter_android_rvh_preempt_enable + __traceiter_android_rvh_replace_next_task_fair + __traceiter_android_rvh_report_bug + __traceiter_android_rvh_resume_cpus + __traceiter_android_rvh_sched_balance_rt + __traceiter_android_rvh_sched_cpu_dying + __traceiter_android_rvh_sched_cpu_starting + __traceiter_android_rvh_sched_exec + __traceiter_android_rvh_sched_fork + __traceiter_android_rvh_sched_fork_init + __traceiter_android_rvh_sched_newidle_balance + __traceiter_android_rvh_sched_nohz_balancer_kick + __traceiter_android_rvh_sched_rebalance_domains + __traceiter_android_rvh_schedule + __traceiter_android_rvh_schedule_bug + __traceiter_android_rvh_select_fallback_rq + __traceiter_android_rvh_select_task_rq_fair + __traceiter_android_rvh_select_task_rq_rt + __traceiter_android_rvh_set_gfp_zone_flags + __traceiter_android_rvh_set_iowait + __traceiter_android_rvh_set_readahead_gfp_mask + __traceiter_android_rvh_set_skip_swapcache_flags + __traceiter_android_rvh_set_task_cpu + __traceiter_android_rvh_tick_entry + __traceiter_android_rvh_try_to_wake_up + __traceiter_android_rvh_try_to_wake_up_success + __traceiter_android_rvh_ttwu_cond + __traceiter_android_rvh_typec_tcpci_chk_contaminant + __traceiter_android_rvh_typec_tcpci_get_vbus + __traceiter_android_rvh_uclamp_eff_get + __traceiter_android_rvh_update_cpu_capacity + __traceiter_android_rvh_update_cpus_allowed + __traceiter_android_rvh_update_misfit_status + __traceiter_android_rvh_util_est_update + __traceiter_android_rvh_wake_up_new_task + __traceiter_android_vh_allow_domain_state + __traceiter_android_vh_arch_set_freq_scale + __traceiter_android_vh_binder_restore_priority + __traceiter_android_vh_binder_set_priority + __traceiter_android_vh_binder_transaction_init + __traceiter_android_vh_binder_wakeup_ilocked + __traceiter_android_vh_cma_alloc_finish + __traceiter_android_vh_cma_alloc_start + __traceiter_android_vh_cpu_idle_enter + __traceiter_android_vh_cpu_idle_exit + __traceiter_android_vh_dump_throttled_rt_tasks + __traceiter_android_vh_enable_thermal_genl_check + __traceiter_android_vh_ep_create_wakeup_source + __traceiter_android_vh_freq_table_limits + __traceiter_android_vh_ftrace_dump_buffer + __traceiter_android_vh_ftrace_format_check + __traceiter_android_vh_ftrace_oops_enter + __traceiter_android_vh_ftrace_oops_exit + __traceiter_android_vh_ftrace_size_check + __traceiter_android_vh_iommu_setup_dma_ops + __traceiter_android_vh_ipi_stop + __traceiter_android_vh_is_fpsimd_save + __traceiter_android_vh_jiffies_update + __traceiter_android_vh_kfree_skb + __traceiter_android_vh_logbuf + __traceiter_android_vh_logbuf_pr_cont + __traceiter_android_vh_meminfo_proc_show + __traceiter_android_vh_pagecache_get_page + __traceiter_android_vh_printk_hotplug + __traceiter_android_vh_ptype_head + __traceiter_android_vh_rmqueue + __traceiter_android_vh_scheduler_tick + __traceiter_android_vh_show_max_freq + __traceiter_android_vh_show_mem + __traceiter_android_vh_show_resume_epoch_val + __traceiter_android_vh_show_suspend_epoch_val + __traceiter_android_vh_timer_calc_index + __traceiter_android_vh_timerfd_create + __traceiter_android_vh_typec_store_partner_src_caps + __traceiter_android_vh_typec_tcpci_override_toggling + __traceiter_android_vh_typec_tcpm_adj_current_limit + __traceiter_android_vh_typec_tcpm_get_timer + __traceiter_android_vh_ufs_check_int_errors + __traceiter_android_vh_ufs_compl_command + __traceiter_android_vh_ufs_fill_prdt + __traceiter_android_vh_ufs_prepare_command + __traceiter_android_vh_ufs_send_command + __traceiter_android_vh_ufs_send_tm_command + __traceiter_android_vh_ufs_send_uic_command + __traceiter_android_vh_ufs_update_sdev + __traceiter_android_vh_ufs_update_sysfs + __traceiter_clock_set_rate + __traceiter_cpu_frequency + __traceiter_dma_fence_emit + __traceiter_dwc3_readl + __traceiter_dwc3_writel + __traceiter_gpu_mem_total + __traceiter_sched_util_est_se_tp + __traceiter_xdp_exception + __tracepoint_android_rvh_account_irq + __tracepoint_android_rvh_arm64_serror_panic + __tracepoint_android_rvh_bad_mode + __tracepoint_android_rvh_build_perf_domains + __tracepoint_android_rvh_can_migrate_task + __tracepoint_android_rvh_check_preempt_wakeup + __tracepoint_android_rvh_cpu_cgroup_attach + __tracepoint_android_rvh_cpu_cgroup_can_attach + __tracepoint_android_rvh_cpu_cgroup_online + __tracepoint_android_rvh_cpu_overutilized + __tracepoint_android_rvh_cpufreq_transition + __tracepoint_android_rvh_dequeue_task + __tracepoint_android_rvh_dequeue_task_idle + __tracepoint_android_rvh_die_kernel_fault + __tracepoint_android_rvh_do_mem_abort + __tracepoint_android_rvh_do_sea + __tracepoint_android_rvh_do_sp_pc_abort + __tracepoint_android_rvh_do_undefinstr + __tracepoint_android_rvh_enqueue_task + __tracepoint_android_rvh_find_busiest_queue + __tracepoint_android_rvh_find_energy_efficient_cpu + __tracepoint_android_rvh_find_lowest_rq + __tracepoint_android_rvh_flush_task + __tracepoint_android_rvh_irqs_disable + __tracepoint_android_rvh_irqs_enable + __tracepoint_android_rvh_migrate_queued_task + __tracepoint_android_rvh_new_task_stats + __tracepoint_android_rvh_pick_next_entity + __tracepoint_android_rvh_place_entity + __tracepoint_android_rvh_preempt_disable + __tracepoint_android_rvh_preempt_enable + __tracepoint_android_rvh_replace_next_task_fair + __tracepoint_android_rvh_report_bug + __tracepoint_android_rvh_resume_cpus + __tracepoint_android_rvh_sched_balance_rt + __tracepoint_android_rvh_sched_cpu_dying + __tracepoint_android_rvh_sched_cpu_starting + __tracepoint_android_rvh_sched_exec + __tracepoint_android_rvh_sched_fork + __tracepoint_android_rvh_sched_fork_init + __tracepoint_android_rvh_sched_newidle_balance + __tracepoint_android_rvh_sched_nohz_balancer_kick + __tracepoint_android_rvh_sched_rebalance_domains + __tracepoint_android_rvh_schedule + __tracepoint_android_rvh_schedule_bug + __tracepoint_android_rvh_select_fallback_rq + __tracepoint_android_rvh_select_task_rq_fair + __tracepoint_android_rvh_select_task_rq_rt + __tracepoint_android_rvh_set_gfp_zone_flags + __tracepoint_android_rvh_set_iowait + __tracepoint_android_rvh_set_readahead_gfp_mask + __tracepoint_android_rvh_set_skip_swapcache_flags + __tracepoint_android_rvh_set_task_cpu + __tracepoint_android_rvh_tick_entry + __tracepoint_android_rvh_try_to_wake_up + __tracepoint_android_rvh_try_to_wake_up_success + __tracepoint_android_rvh_ttwu_cond + __tracepoint_android_rvh_typec_tcpci_chk_contaminant + __tracepoint_android_rvh_typec_tcpci_get_vbus + __tracepoint_android_rvh_uclamp_eff_get + __tracepoint_android_rvh_update_cpu_capacity + __tracepoint_android_rvh_update_cpus_allowed + __tracepoint_android_rvh_update_misfit_status + __tracepoint_android_rvh_util_est_update + __tracepoint_android_rvh_wake_up_new_task + __tracepoint_android_vh_allow_domain_state + __tracepoint_android_vh_arch_set_freq_scale + __tracepoint_android_vh_binder_restore_priority + __tracepoint_android_vh_binder_set_priority + __tracepoint_android_vh_binder_transaction_init + __tracepoint_android_vh_binder_wakeup_ilocked + __tracepoint_android_vh_cgroup_attach + __tracepoint_android_vh_cma_alloc_finish + __tracepoint_android_vh_cma_alloc_start + __tracepoint_android_vh_cpu_idle_enter + __tracepoint_android_vh_cpu_idle_exit + __tracepoint_android_vh_dump_throttled_rt_tasks + __tracepoint_android_vh_enable_thermal_genl_check + __tracepoint_android_vh_ep_create_wakeup_source + __tracepoint_android_vh_freq_table_limits + __tracepoint_android_vh_ftrace_dump_buffer + __tracepoint_android_vh_ftrace_format_check + __tracepoint_android_vh_ftrace_oops_enter + __tracepoint_android_vh_ftrace_oops_exit + __tracepoint_android_vh_ftrace_size_check + __tracepoint_android_vh_iommu_setup_dma_ops + __tracepoint_android_vh_ipi_stop + __tracepoint_android_vh_is_fpsimd_save + __tracepoint_android_vh_jiffies_update + __tracepoint_android_vh_kfree_skb + __tracepoint_android_vh_logbuf + __tracepoint_android_vh_logbuf_pr_cont + __tracepoint_android_vh_meminfo_proc_show + __tracepoint_android_vh_mutex_wait_finish + __tracepoint_android_vh_mutex_wait_start + __tracepoint_android_vh_pagecache_get_page + __tracepoint_android_vh_printk_hotplug + __tracepoint_android_vh_ptype_head + __tracepoint_android_vh_rmqueue + __tracepoint_android_vh_rtmutex_wait_finish + __tracepoint_android_vh_rtmutex_wait_start + __tracepoint_android_vh_rwsem_read_wait_finish + __tracepoint_android_vh_rwsem_read_wait_start + __tracepoint_android_vh_rwsem_write_wait_finish + __tracepoint_android_vh_rwsem_write_wait_start + __tracepoint_android_vh_sched_show_task + __tracepoint_android_vh_scheduler_tick + __tracepoint_android_vh_show_max_freq + __tracepoint_android_vh_show_mem + __tracepoint_android_vh_show_resume_epoch_val + __tracepoint_android_vh_show_suspend_epoch_val + __tracepoint_android_vh_timer_calc_index + __tracepoint_android_vh_timerfd_create + __tracepoint_android_vh_try_to_freeze_todo + __tracepoint_android_vh_try_to_freeze_todo_unfrozen + __tracepoint_android_vh_typec_store_partner_src_caps + __tracepoint_android_vh_typec_tcpci_override_toggling + __tracepoint_android_vh_typec_tcpm_adj_current_limit + __tracepoint_android_vh_typec_tcpm_get_timer + __tracepoint_android_vh_ufs_check_int_errors + __tracepoint_android_vh_ufs_compl_command + __tracepoint_android_vh_ufs_fill_prdt + __tracepoint_android_vh_ufs_prepare_command + __tracepoint_android_vh_ufs_send_command + __tracepoint_android_vh_ufs_send_tm_command + __tracepoint_android_vh_ufs_send_uic_command + __tracepoint_android_vh_ufs_update_sdev + __tracepoint_android_vh_ufs_update_sysfs + __tracepoint_android_vh_watchdog_timer_softlockup + __tracepoint_android_vh_wq_lockup_pool + __tracepoint_binder_transaction_received + __tracepoint_clock_set_rate + __tracepoint_cpu_frequency + __tracepoint_cpu_frequency_limits + __tracepoint_cpu_idle + __tracepoint_device_pm_callback_end + __tracepoint_device_pm_callback_start + __tracepoint_dma_fence_emit + __tracepoint_dwc3_ep_queue + __tracepoint_dwc3_readl + __tracepoint_dwc3_writel + __tracepoint_gpu_mem_total + __tracepoint_hrtimer_expire_entry + __tracepoint_hrtimer_expire_exit + __tracepoint_ipi_entry + __tracepoint_ipi_exit + __tracepoint_ipi_raise + __tracepoint_irq_handler_entry + __tracepoint_irq_handler_exit + __tracepoint_pelt_cfs_tp + __tracepoint_pelt_dl_tp + __tracepoint_pelt_irq_tp + __tracepoint_pelt_rt_tp + __tracepoint_pelt_se_tp + __tracepoint_rwmmio_post_read + __tracepoint_rwmmio_read + __tracepoint_rwmmio_write + __tracepoint_sched_cpu_capacity_tp + __tracepoint_sched_overutilized_tp + __tracepoint_sched_switch + __tracepoint_sched_util_est_cfs_tp + __tracepoint_sched_util_est_se_tp + __tracepoint_suspend_resume + __tracepoint_workqueue_execute_end + __tracepoint_workqueue_execute_start + __tracepoint_xdp_exception + __tty_alloc_driver + __tty_insert_flip_char + __udelay + __uio_register_device + __unregister_chrdev + __update_load_avg_blocked_se + __usb_create_hcd + __usb_get_extra_descriptor + __usecs_to_jiffies + __v4l2_device_register_subdev_nodes + __video_register_device + __wait_rcu_gp + __wake_up + __wake_up_locked + __wake_up_locked_key + __wake_up_sync + __warn_printk + __xa_alloc + __xa_insert + __xfrm_state_destroy + _atomic_dec_and_lock + _copy_from_iter + _copy_from_iter_full + _copy_to_iter + _ctype + _dev_alert + _dev_crit + _dev_emerg + _dev_err + _dev_info + _dev_notice + _dev_warn + _raw_read_lock + _raw_read_lock_bh + _raw_read_lock_irq + _raw_read_lock_irqsave + _raw_read_unlock + _raw_read_unlock_bh + _raw_read_unlock_irq + _raw_read_unlock_irqrestore + _raw_spin_lock + _raw_spin_lock_bh + _raw_spin_lock_irq + _raw_spin_lock_irqsave + _raw_spin_trylock + _raw_spin_trylock_bh + _raw_spin_unlock + _raw_spin_unlock_bh + _raw_spin_unlock_irq + _raw_spin_unlock_irqrestore + _raw_write_lock + _raw_write_lock_bh + _raw_write_lock_irq + _raw_write_lock_irqsave + _raw_write_unlock + _raw_write_unlock_bh + _raw_write_unlock_irq + _raw_write_unlock_irqrestore + _snd_ctl_add_follower + _snd_pcm_stream_lock_irqsave + _totalram_pages + access_process_vm + ack_all_badblocks + activate_task + add_cpu + add_device_randomness + add_memory + add_memory_subsection + add_taint + add_timer + add_timer_on + add_uevent_var + add_wait_queue + adjust_managed_page_count + alarm_cancel + alarm_init + alarm_start + alarm_start_relative + alarm_try_to_cancel + alarmtimer_get_rtcdev + all_vm_events + alloc_anon_inode + alloc_chrdev_region + alloc_etherdev_mqs + alloc_io_pgtable_ops + alloc_netdev_mqs + alloc_page_buffers + alloc_pages_exact + alloc_skb_with_frags + alloc_workqueue + amba_bustype + amba_driver_register + amba_driver_unregister + amba_release_regions + amba_request_regions + android_debug_per_cpu_symbol + android_debug_symbol + android_rvh_probe_register + anon_inode_getfd + anon_inode_getfile + arch_timer_read_counter + argv_free + argv_split + arm64_const_caps_ready + arm64_use_ng_mappings + async_schedule_node + async_schedule_node_domain + async_synchronize_full_domain + atomic_notifier_call_chain + atomic_notifier_chain_register + atomic_notifier_chain_unregister + autoremove_wake_function + available_idle_cpu + backlight_device_get_by_type + backlight_device_register + backlight_device_set_brightness + backlight_device_unregister + badblocks_clear + badblocks_exit + badblocks_init + badblocks_set + badblocks_show + badblocks_store + balloon_aops + balloon_page_alloc + balloon_page_dequeue + balloon_page_enqueue + bcmp + bd_link_disk_holder + bd_set_nr_sectors + bd_unlink_disk_holder + bdev_check_media_change + bdev_read_only + bdevname + bdget_disk + bdput + bgpio_init + bin2hex + bio_add_page + bio_alloc_bioset + bio_associate_blkg + bio_chain + bio_clone_blkg_association + bio_endio + bio_init + bio_put + bioset_exit + bioset_init + bitmap_allocate_region + bitmap_find_next_zero_area_off + bitmap_from_arr32 + bitmap_parse + bitmap_parselist + bitmap_parselist_user + bitmap_print_to_pagebuf + bitmap_release_region + bitmap_to_arr32 + bitmap_zalloc + blk_alloc_queue + blk_cleanup_queue + blk_execute_rq + blk_execute_rq_nowait + blk_finish_plug + blk_freeze_queue_start + blk_get_queue + blk_get_request + blk_mq_alloc_request + blk_mq_alloc_request_hctx + blk_mq_alloc_tag_set + blk_mq_complete_request + blk_mq_complete_request_remote + blk_mq_debugfs_rq_show + blk_mq_delay_kick_requeue_list + blk_mq_end_request + blk_mq_free_request + blk_mq_free_tag_set + blk_mq_freeze_queue + blk_mq_freeze_queue_wait + blk_mq_freeze_queue_wait_timeout + blk_mq_init_queue + blk_mq_map_queues + blk_mq_pci_map_queues + blk_mq_quiesce_queue + blk_mq_requeue_request + blk_mq_rq_cpu + blk_mq_run_hw_queues + blk_mq_sched_request_inserted + blk_mq_sched_try_insert_merge + blk_mq_sched_try_merge + blk_mq_start_request + blk_mq_start_stopped_hw_queues + blk_mq_stop_hw_queue + blk_mq_tag_to_rq + blk_mq_tagset_busy_iter + blk_mq_tagset_wait_completed_request + blk_mq_unfreeze_queue + blk_mq_unique_tag + blk_mq_unquiesce_queue + blk_mq_update_nr_hw_queues + blk_mq_virtio_map_queues + blk_poll + blk_put_queue + blk_put_request + blk_queue_alignment_offset + blk_queue_bounce_limit + blk_queue_can_use_dma_map_merging + blk_queue_chunk_sectors + blk_queue_dma_alignment + blk_queue_flag_clear + blk_queue_flag_set + blk_queue_flag_test_and_set + blk_queue_io_min + blk_queue_io_opt + blk_queue_logical_block_size + blk_queue_max_discard_sectors + blk_queue_max_discard_segments + blk_queue_max_hw_sectors + blk_queue_max_segment_size + blk_queue_max_segments + blk_queue_max_write_zeroes_sectors + blk_queue_physical_block_size + blk_queue_rq_timeout + blk_queue_split + blk_queue_virt_boundary + blk_queue_write_cache + blk_register_region + blk_rq_map_kern + blk_rq_map_user + blk_rq_map_user_iov + blk_rq_unmap_user + blk_set_queue_dying + blk_set_stacking_limits + blk_start_plug + blk_status_to_errno + blk_sync_queue + blk_unregister_region + blk_update_request + blk_verify_command + blkcg_activate_policy + blkcg_deactivate_policy + blkcg_policy_register + blkcg_policy_unregister + blkcg_root + blkdev_fsync + blkdev_get_by_dev + blkdev_get_by_path + blkdev_issue_flush + blkdev_put + blkg_lookup_slowpath + blocking_notifier_call_chain + blocking_notifier_chain_register + blocking_notifier_chain_unregister + bmap + bpf_dispatcher_xdp_func + bpf_prog_add + bpf_prog_put + bpf_prog_sub + bpf_stats_enabled_key + bpf_trace_run1 + bpf_trace_run10 + bpf_trace_run11 + bpf_trace_run12 + bpf_trace_run2 + bpf_trace_run3 + bpf_trace_run4 + bpf_trace_run5 + bpf_trace_run6 + bpf_trace_run7 + bpf_trace_run8 + bpf_trace_run9 + bpf_warn_invalid_xdp_action + bsearch + bt_err + bt_info + build_skb + bus_find_device + bus_for_each_dev + bus_for_each_drv + bus_register + bus_register_notifier + bus_set_iommu + bus_unregister + bus_unregister_notifier + cache_line_size + call_netdevice_notifiers + call_rcu + call_rcu_tasks + call_rcu_tasks_trace + call_srcu + cancel_delayed_work + cancel_delayed_work_sync + cancel_work_sync + capable + cdc_ncm_bind_common + cdc_ncm_change_mtu + cdc_ncm_fill_tx_frame + cdc_ncm_rx_verify_ndp16 + cdc_ncm_rx_verify_nth16 + cdc_ncm_select_altsetting + cdc_ncm_unbind + cdc_parse_cdc_header + cdev_add + cdev_alloc + cdev_del + cdev_device_add + cdev_device_del + cdev_init + cec_allocate_adapter + cec_delete_adapter + cec_received_msg_ts + cec_register_adapter + cec_s_log_addrs + cec_s_phys_addr + cec_s_phys_addr_from_edid + cec_transmit_attempt_done_ts + cec_transmit_done_ts + cec_unregister_adapter + cgroup_path_ns + cgroup_taskset_first + cgroup_taskset_next + check_preempt_curr + check_zeroed_user + class_create_file_ns + class_destroy + class_find_device + class_for_each_device + class_interface_unregister + class_remove_file_ns + class_unregister + cleancache_register_ops + cleanup_srcu_struct + clear_page + clk_bulk_disable + clk_bulk_enable + clk_bulk_get_all + clk_bulk_prepare + clk_bulk_put_all + clk_bulk_unprepare + clk_disable + clk_enable + clk_fixed_factor_ops + clk_fixed_rate_ops + clk_get + clk_get_parent + clk_get_rate + clk_hw_get_flags + clk_hw_get_name + clk_hw_get_num_parents + clk_hw_get_parent + clk_hw_get_parent_by_index + clk_hw_get_rate + clk_hw_is_enabled + clk_hw_is_prepared + clk_hw_register + clk_hw_register_fixed_factor + clk_hw_round_rate + clk_hw_set_rate_range + clk_hw_unregister + clk_hw_unregister_divider + clk_hw_unregister_fixed_factor + clk_hw_unregister_gate + clk_hw_unregister_mux + clk_notifier_register + clk_notifier_unregister + clk_prepare + clk_put + clk_register + clk_register_clkdev + clk_register_fixed_factor + clk_register_fixed_rate + clk_register_gate + clk_round_rate + clk_set_parent + clk_set_rate + clk_sync_state + clk_unprepare + clk_unregister + clockevents_config_and_register + clocks_calc_mult_shift + cma_alloc + cma_for_each_area + cma_get_name + cma_release + compat_alloc_user_space + compat_only_sysfs_link_entry_to_kobj + compat_ptr_ioctl + complete + complete_all + complete_and_exit + completion_done + component_add + component_bind_all + component_del + component_master_add_with_match + component_master_del + component_match_add_release + component_unbind_all + cond_synchronize_rcu + config_ep_by_speed + config_group_init + config_group_init_type_name + config_item_get + config_item_put + configfs_register_subsystem + configfs_unregister_subsystem + console_drivers + console_printk + console_stop + console_suspend_enabled + console_trylock + console_unlock + consume_skb + contig_page_data + copy_from_kernel_nofault + copy_page + cpu_all_bits + cpu_bit_bitmap + cpu_hotplug_disable + cpu_hotplug_enable + cpu_hwcap_keys + cpu_hwcaps + cpu_irqtime + cpu_is_hotpluggable + cpu_latency_qos_add_request + cpu_latency_qos_remove_request + cpu_latency_qos_request_active + cpu_latency_qos_update_request + cpu_number + cpu_pm_register_notifier + cpu_pm_unregister_notifier + cpu_scale + cpu_subsys + cpu_topology + cpufreq_add_update_util_hook + cpufreq_cpu_get + cpufreq_cpu_get_raw + cpufreq_cpu_put + cpufreq_disable_fast_switch + cpufreq_driver_fast_switch + cpufreq_driver_resolve_freq + cpufreq_enable_boost_support + cpufreq_enable_fast_switch + cpufreq_freq_attr_scaling_available_freqs + cpufreq_freq_attr_scaling_boost_freqs + cpufreq_freq_transition_begin + cpufreq_freq_transition_end + cpufreq_frequency_table_verify + cpufreq_generic_attr + cpufreq_generic_frequency_table_verify + cpufreq_generic_get + cpufreq_generic_suspend + cpufreq_get_driver_data + cpufreq_get_policy + cpufreq_policy_transition_delay_us + cpufreq_quick_get + cpufreq_quick_get_max + cpufreq_register_driver + cpufreq_register_governor + cpufreq_register_notifier + cpufreq_remove_update_util_hook + cpufreq_table_index_unsorted + cpufreq_this_cpu_can_update + cpufreq_unregister_driver + cpufreq_unregister_notifier + cpufreq_update_policy + cpuhp_tasks_frozen + cpuidle_governor_latency_req + cpuidle_register_governor + cpumask_any_but + cpumask_next + cpumask_next_and + cpumask_next_wrap + cpupri_find_fitness + cpus_read_lock + cpus_read_unlock + crc16 + crc32_le + crc8 + crc8_populate_msb + create_function_device + crypto_aead_encrypt + crypto_aead_setauthsize + crypto_aead_setkey + crypto_alloc_aead + crypto_alloc_base + crypto_alloc_shash + crypto_alloc_skcipher + crypto_cipher_encrypt_one + crypto_cipher_setkey + crypto_comp_compress + crypto_comp_decompress + crypto_destroy_tfm + crypto_has_alg + crypto_register_alg + crypto_register_rngs + crypto_register_scomp + crypto_shash_digest + crypto_shash_final + crypto_shash_setkey + crypto_shash_update + crypto_skcipher_decrypt + crypto_skcipher_encrypt + crypto_skcipher_setkey + crypto_unregister_alg + crypto_unregister_rngs + crypto_unregister_scomp + css_next_child + css_next_descendant_pre + csum_ipv6_magic + csum_partial + csum_tcpudp_nofold + current_time + current_work + d_add + d_alloc_name + d_delete + d_make_root + d_path + dapm_pinctrl_event + dapm_regulator_event + datagram_poll + deactivate_task + debugfs_attr_read + debugfs_attr_write + debugfs_create_atomic_t + debugfs_create_blob + debugfs_create_bool + debugfs_create_dir + debugfs_create_file + debugfs_create_file_unsafe + debugfs_create_regset32 + debugfs_create_size_t + debugfs_create_symlink + debugfs_create_u16 + debugfs_create_u32 + debugfs_create_u64 + debugfs_create_u8 + debugfs_create_ulong + debugfs_create_x32 + debugfs_create_x64 + debugfs_create_x8 + debugfs_file_get + debugfs_file_put + debugfs_lookup + debugfs_print_regs32 + debugfs_remove + dec_zone_page_state + default_llseek + deferred_free + del_gendisk + del_timer + del_timer_sync + delayed_work_timer_fn + desc_to_gpio + destroy_workqueue + dev_alloc_name + dev_close + dev_coredumpm + dev_coredumpv + dev_driver_string + dev_err_probe + dev_fwnode + dev_get_by_index + dev_get_by_name + dev_get_regmap + dev_get_stats + dev_mc_sync_multiple + dev_mc_unsync + dev_open + dev_pm_clear_wake_irq + dev_pm_domain_attach + dev_pm_domain_attach_by_name + dev_pm_domain_detach + dev_pm_genpd_add_notifier + dev_pm_genpd_remove_notifier + dev_pm_genpd_set_next_wakeup + dev_pm_genpd_set_performance_state + dev_pm_opp_add + dev_pm_opp_adjust_voltage + dev_pm_opp_disable + dev_pm_opp_enable + dev_pm_opp_find_freq_ceil + dev_pm_opp_find_freq_ceil_by_volt + dev_pm_opp_find_freq_exact + dev_pm_opp_find_freq_floor + dev_pm_opp_free_cpufreq_table + dev_pm_opp_get_freq + dev_pm_opp_get_level + dev_pm_opp_get_max_transition_latency + dev_pm_opp_get_opp_count + dev_pm_opp_get_opp_table + dev_pm_opp_get_sharing_cpus + dev_pm_opp_get_suspend_opp_freq + dev_pm_opp_get_voltage + dev_pm_opp_init_cpufreq_table + dev_pm_opp_of_add_table + dev_pm_opp_of_cpumask_add_table + dev_pm_opp_of_cpumask_remove_table + dev_pm_opp_of_find_icc_paths + dev_pm_opp_of_get_sharing_cpus + dev_pm_opp_of_register_em + dev_pm_opp_of_remove_table + dev_pm_opp_put + dev_pm_opp_put_clkname + dev_pm_opp_put_opp_table + dev_pm_opp_put_regulators + dev_pm_opp_register_notifier + dev_pm_opp_remove_all_dynamic + dev_pm_opp_set_bw + dev_pm_opp_set_clkname + dev_pm_opp_set_rate + dev_pm_opp_set_regulators + dev_pm_opp_set_sharing_cpus + dev_pm_opp_set_supported_hw + dev_pm_opp_unregister_notifier + dev_pm_qos_add_notifier + dev_pm_qos_add_request + dev_pm_qos_expose_latency_tolerance + dev_pm_qos_hide_latency_tolerance + dev_pm_qos_read_value + dev_pm_qos_remove_notifier + dev_pm_qos_remove_request + dev_pm_qos_update_request + dev_pm_qos_update_user_latency_tolerance + dev_pm_set_dedicated_wake_irq + dev_printk + dev_printk_emit + dev_queue_xmit + dev_set_mtu + dev_set_name + dev_uc_sync_multiple + dev_uc_unsync + devfreq_add_device + devfreq_add_governor + devfreq_cooling_unregister + devfreq_get_devfreq_by_phandle + devfreq_monitor_resume + devfreq_monitor_start + devfreq_monitor_stop + devfreq_monitor_suspend + devfreq_recommended_opp + devfreq_register_opp_notifier + devfreq_remove_device + devfreq_remove_governor + devfreq_resume_device + devfreq_suspend_device + devfreq_unregister_opp_notifier + devfreq_update_interval + device_add + device_add_disk + device_add_groups + device_attach + device_bind_driver + device_create + device_create_bin_file + device_create_file + device_create_with_groups + device_del + device_destroy + device_find_child + device_for_each_child + device_get_child_node_count + device_get_dma_attr + device_get_mac_address + device_get_match_data + device_get_named_child_node + device_get_next_child_node + device_init_wakeup + device_initialize + device_link_add + device_link_del + device_match_fwnode + device_match_name + device_match_of_node + device_property_present + device_property_read_string + device_property_read_string_array + device_property_read_u16_array + device_property_read_u32_array + device_property_read_u8_array + device_register + device_release_driver + device_remove_bin_file + device_remove_file + device_remove_file_self + device_remove_groups + device_set_wakeup_capable + device_set_wakeup_enable + device_show_bool + device_show_int + device_store_bool + device_store_int + device_unregister + device_wakeup_disable + device_wakeup_enable + devm_add_action + devm_backlight_device_register + devm_backlight_device_unregister + devm_blk_ksm_init + devm_clk_bulk_get + devm_clk_bulk_get_all + devm_clk_bulk_get_optional + devm_clk_get + devm_clk_get_optional + devm_clk_hw_register + devm_clk_hw_register_clkdev + devm_clk_put + devm_clk_register + devm_devfreq_add_device + devm_devfreq_register_notifier + devm_devfreq_unregister_notifier + devm_device_add_group + devm_device_add_groups + devm_device_remove_group + devm_drm_panel_bridge_add_typed + devm_extcon_dev_allocate + devm_extcon_dev_register + devm_extcon_dev_unregister + devm_extcon_register_notifier + devm_free_irq + devm_free_percpu + devm_gen_pool_create + devm_get_clk_from_child + devm_gpio_free + devm_gpio_request + devm_gpio_request_one + devm_gpiochip_add_data_with_key + devm_gpiod_get + devm_gpiod_get_array + devm_gpiod_get_index + devm_gpiod_get_optional + devm_gpiod_put_array + devm_hwrng_register + devm_hwspin_lock_register + devm_i2c_new_dummy_device + devm_iio_channel_get + devm_iio_device_alloc + devm_input_allocate_device + devm_ioremap + devm_ioremap_resource + devm_ioremap_wc + devm_iounmap + devm_kasprintf + devm_kfree + devm_kmalloc + devm_kmemdup + devm_kstrdup + devm_kstrdup_const + devm_kvasprintf + devm_led_classdev_register_ext + devm_mbox_controller_register + devm_memremap + devm_mfd_add_devices + devm_nvmem_cell_get + devm_nvmem_device_get + devm_nvmem_register + devm_of_clk_add_hw_provider + devm_of_icc_get + devm_of_iomap + devm_of_platform_populate + devm_of_pwm_get + devm_pci_alloc_host_bridge + devm_phy_create + devm_phy_get + devm_phy_put + devm_pinctrl_get + devm_pinctrl_put + devm_pinctrl_register + devm_pinctrl_register_and_init + devm_platform_get_and_ioremap_resource + devm_platform_ioremap_resource + devm_platform_ioremap_resource_byname + devm_power_supply_register + devm_pwm_put + devm_regmap_add_irq_chip + devm_regmap_del_irq_chip + devm_regmap_field_alloc + devm_regulator_bulk_get + devm_regulator_get + devm_regulator_get_exclusive + devm_regulator_get_optional + devm_regulator_put + devm_regulator_register + devm_regulator_register_notifier + devm_request_any_context_irq + devm_request_threaded_irq + devm_reset_control_array_get + devm_reset_controller_register + devm_rtc_allocate_device + devm_rtc_device_register + devm_snd_dmaengine_pcm_register + devm_snd_soc_register_card + devm_snd_soc_register_component + devm_spi_register_controller + devm_thermal_of_cooling_device_register + devm_thermal_zone_of_sensor_register + devm_thermal_zone_of_sensor_unregister + devm_usb_get_phy + devm_usb_get_phy_by_node + devm_usb_get_phy_by_phandle + devm_watchdog_register_device + devres_add + devres_alloc_node + devres_free + devres_release + disable_irq + disable_irq_nosync + disable_percpu_irq + disk_end_io_acct + disk_start_io_acct + divider_get_val + divider_recalc_rate + divider_ro_round_rate_parent + divider_round_rate_parent + dma_alloc_attrs + dma_async_device_register + dma_async_device_unregister + dma_async_tx_descriptor_init + dma_buf_attach + dma_buf_begin_cpu_access + dma_buf_begin_cpu_access_partial + dma_buf_detach + dma_buf_dynamic_attach + dma_buf_end_cpu_access + dma_buf_end_cpu_access_partial + dma_buf_export + dma_buf_fd + dma_buf_get + dma_buf_get_flags + dma_buf_map_attachment + dma_buf_mmap + dma_buf_move_notify + dma_buf_pin + dma_buf_put + dma_buf_unmap_attachment + dma_buf_unpin + dma_buf_vmap + dma_buf_vunmap + dma_contiguous_default_area + dma_fence_add_callback + dma_fence_array_create + dma_fence_array_ops + dma_fence_context_alloc + dma_fence_default_wait + dma_fence_enable_sw_signaling + dma_fence_free + dma_fence_get_status + dma_fence_get_stub + dma_fence_init + dma_fence_match_context + dma_fence_release + dma_fence_remove_callback + dma_fence_signal + dma_fence_signal_locked + dma_fence_wait_any_timeout + dma_fence_wait_timeout + dma_free_attrs + dma_get_merge_boundary + dma_get_required_mask + dma_get_sgtable_attrs + dma_get_slave_caps + dma_get_slave_channel + dma_heap_add + dma_heap_buffer_alloc + dma_heap_buffer_free + dma_heap_find + dma_heap_get_dev + dma_heap_get_drvdata + dma_heap_get_name + dma_heap_put + dma_map_page_attrs + dma_map_resource + dma_map_sg_attrs + dma_max_mapping_size + dma_mmap_attrs + dma_pool_alloc + dma_pool_create + dma_pool_destroy + dma_pool_free + dma_release_channel + dma_request_chan + dma_resv_add_excl_fence + dma_resv_add_shared_fence + dma_resv_fini + dma_resv_get_fences_rcu + dma_resv_init + dma_resv_reserve_shared + dma_resv_test_signaled_rcu + dma_resv_wait_timeout_rcu + dma_set_coherent_mask + dma_set_mask + dma_sync_sg_for_cpu + dma_sync_sg_for_device + dma_sync_single_for_cpu + dma_sync_single_for_device + dma_unmap_page_attrs + dma_unmap_resource + dma_unmap_sg_attrs + dmabuf_page_pool_alloc + dmabuf_page_pool_create + dmabuf_page_pool_destroy + dmabuf_page_pool_free + dmaengine_unmap_put + dmam_alloc_attrs + dmam_free_coherent + dmam_pool_create + do_SAK + do_exit + do_trace_rcu_torture_read + do_wait_intr + do_wait_intr_irq + down + down_interruptible + down_read + down_read_killable + down_read_trylock + down_timeout + down_trylock + down_write + downgrade_write + dput + drain_workqueue + driver_attach + driver_create_file + driver_find_device + driver_register + driver_remove_file + driver_unregister + drm_add_edid_modes + drm_add_modes_noedid + drm_atomic_add_affected_connectors + drm_atomic_add_affected_planes + drm_atomic_commit + drm_atomic_get_connector_state + drm_atomic_get_crtc_state + drm_atomic_get_new_connector_for_encoder + drm_atomic_get_plane_state + drm_atomic_get_private_obj_state + drm_atomic_helper_bridge_destroy_state + drm_atomic_helper_bridge_duplicate_state + drm_atomic_helper_bridge_reset + drm_atomic_helper_check + drm_atomic_helper_check_modeset + drm_atomic_helper_check_plane_state + drm_atomic_helper_check_planes + drm_atomic_helper_cleanup_planes + drm_atomic_helper_commit + drm_atomic_helper_commit_cleanup_done + drm_atomic_helper_commit_duplicated_state + drm_atomic_helper_commit_hw_done + drm_atomic_helper_commit_modeset_disables + drm_atomic_helper_commit_modeset_enables + drm_atomic_helper_commit_planes + drm_atomic_helper_commit_tail + drm_atomic_helper_connector_destroy_state + drm_atomic_helper_connector_duplicate_state + drm_atomic_helper_connector_reset + drm_atomic_helper_crtc_destroy_state + drm_atomic_helper_crtc_duplicate_state + drm_atomic_helper_crtc_reset + drm_atomic_helper_damage_merged + drm_atomic_helper_dirtyfb + drm_atomic_helper_disable_plane + drm_atomic_helper_disable_planes_on_crtc + drm_atomic_helper_duplicate_state + drm_atomic_helper_fake_vblank + drm_atomic_helper_page_flip + drm_atomic_helper_plane_destroy_state + drm_atomic_helper_plane_duplicate_state + drm_atomic_helper_plane_reset + drm_atomic_helper_prepare_planes + drm_atomic_helper_set_config + drm_atomic_helper_setup_commit + drm_atomic_helper_shutdown + drm_atomic_helper_swap_state + drm_atomic_helper_update_legacy_modeset_state + drm_atomic_helper_update_plane + drm_atomic_helper_wait_for_dependencies + drm_atomic_helper_wait_for_fences + drm_atomic_helper_wait_for_flip_done + drm_atomic_helper_wait_for_vblanks + drm_atomic_normalize_zpos + drm_atomic_private_obj_fini + drm_atomic_private_obj_init + drm_atomic_set_crtc_for_connector + drm_atomic_set_crtc_for_plane + drm_atomic_set_fb_for_plane + drm_atomic_set_fence_for_plane + drm_atomic_set_mode_for_crtc + drm_atomic_state_alloc + drm_atomic_state_clear + drm_atomic_state_default_clear + drm_atomic_state_default_release + drm_atomic_state_init + drm_bridge_add + drm_bridge_attach + drm_bridge_chain_disable + drm_bridge_chain_enable + drm_bridge_chain_mode_set + drm_bridge_chain_post_disable + drm_bridge_chain_pre_enable + drm_bridge_hpd_notify + drm_bridge_remove + drm_client_init + drm_client_modeset_commit_locked + drm_client_register + drm_compat_ioctl + drm_connector_attach_dp_subconnector_property + drm_connector_attach_edid_property + drm_connector_attach_encoder + drm_connector_cleanup + drm_connector_has_possible_encoder + drm_connector_init + drm_connector_init_with_ddc + drm_connector_list_iter_begin + drm_connector_list_iter_end + drm_connector_list_iter_next + drm_connector_register + drm_connector_set_tile_property + drm_connector_unregister + drm_connector_update_edid_property + drm_crtc_arm_vblank_event + drm_crtc_cleanup + drm_crtc_enable_color_mgmt + drm_crtc_from_index + drm_crtc_handle_vblank + drm_crtc_helper_set_config + drm_crtc_helper_set_mode + drm_crtc_init + drm_crtc_init_with_planes + drm_crtc_send_vblank_event + drm_crtc_set_max_vblank_count + drm_crtc_vblank_count + drm_crtc_vblank_count_and_time + drm_crtc_vblank_get + drm_crtc_vblank_helper_get_vblank_timestamp + drm_crtc_vblank_off + drm_crtc_vblank_on + drm_crtc_vblank_put + drm_crtc_vblank_reset + drm_crtc_wait_one_vblank + drm_cvt_mode + drm_debugfs_create_files + drm_detect_hdmi_monitor + drm_detect_monitor_audio + drm_dev_alloc + drm_dev_dbg + drm_dev_enter + drm_dev_exit + drm_dev_get + drm_dev_printk + drm_dev_put + drm_dev_register + drm_dev_set_unique + drm_dev_unplug + drm_dev_unregister + drm_display_mode_to_videomode + drm_do_get_edid + drm_dp_atomic_find_vcpi_slots + drm_dp_atomic_release_vcpi_slots + drm_dp_aux_init + drm_dp_aux_register + drm_dp_aux_unregister + drm_dp_bw_code_to_link_rate + drm_dp_calc_pbn_mode + drm_dp_channel_eq_ok + drm_dp_check_act_status + drm_dp_clock_recovery_ok + drm_dp_dpcd_read + drm_dp_dpcd_read_link_status + drm_dp_dpcd_write + drm_dp_find_vcpi_slots + drm_dp_get_adjust_request_pre_emphasis + drm_dp_get_adjust_request_voltage + drm_dp_get_edid_quirks + drm_dp_link_rate_to_bw_code + drm_dp_link_train_channel_eq_delay + drm_dp_link_train_clock_recovery_delay + drm_dp_mst_allocate_vcpi + drm_dp_mst_deallocate_vcpi + drm_dp_mst_detect_port + drm_dp_mst_get_edid + drm_dp_mst_get_port_malloc + drm_dp_mst_hpd_irq + drm_dp_mst_put_port_malloc + drm_dp_mst_reset_vcpi_slots + drm_dp_mst_topology_mgr_destroy + drm_dp_mst_topology_mgr_init + drm_dp_mst_topology_mgr_set_mst + drm_dp_send_power_updown_phy + drm_dp_set_subconnector_property + drm_dp_update_payload_part1 + drm_dp_update_payload_part2 + drm_edid_block_valid + drm_edid_duplicate + drm_edid_get_monitor_name + drm_edid_header_is_valid + drm_edid_is_valid + drm_edid_to_sad + drm_edid_to_speaker_allocation + drm_encoder_cleanup + drm_encoder_init + drm_event_cancel_free + drm_event_reserve_init + drm_event_reserve_init_locked + drm_fb_cma_get_gem_obj + drm_flip_work_cleanup + drm_flip_work_commit + drm_flip_work_init + drm_flip_work_queue + drm_format_info + drm_framebuffer_cleanup + drm_framebuffer_init + drm_framebuffer_lookup + drm_framebuffer_remove + drm_framebuffer_unregister_private + drm_gem_cma_dumb_create_internal + drm_gem_cma_free_object + drm_gem_cma_mmap + drm_gem_cma_prime_get_sg_table + drm_gem_cma_prime_import_sg_table + drm_gem_cma_prime_mmap + drm_gem_cma_prime_vmap + drm_gem_cma_prime_vunmap + drm_gem_cma_vm_ops + drm_gem_create_mmap_offset + drm_gem_dmabuf_mmap + drm_gem_dmabuf_release + drm_gem_dmabuf_vmap + drm_gem_dmabuf_vunmap + drm_gem_fb_create + drm_gem_fb_create_handle + drm_gem_fb_destroy + drm_gem_fb_get_obj + drm_gem_fb_prepare_fb + drm_gem_free_mmap_offset + drm_gem_get_pages + drm_gem_handle_create + drm_gem_lock_reservations + drm_gem_map_attach + drm_gem_map_detach + drm_gem_map_dma_buf + drm_gem_mmap + drm_gem_mmap_obj + drm_gem_object_free + drm_gem_object_init + drm_gem_object_lookup + drm_gem_object_put_locked + drm_gem_object_release + drm_gem_prime_export + drm_gem_prime_fd_to_handle + drm_gem_prime_handle_to_fd + drm_gem_prime_import + drm_gem_prime_import_dev + drm_gem_prime_mmap + drm_gem_private_object_init + drm_gem_put_pages + drm_gem_shmem_create + drm_gem_shmem_free_object + drm_gem_shmem_get_sg_table + drm_gem_shmem_mmap + drm_gem_shmem_pin + drm_gem_shmem_print_info + drm_gem_shmem_unpin + drm_gem_shmem_vmap + drm_gem_shmem_vunmap + drm_gem_unlock_reservations + drm_gem_unmap_dma_buf + drm_gem_vm_close + drm_gem_vm_open + drm_get_connector_status_name + drm_get_edid + drm_get_format_info + drm_get_format_name + drm_handle_vblank + drm_hdmi_avi_infoframe_from_display_mode + drm_helper_connector_dpms + drm_helper_disable_unused_functions + drm_helper_force_disable_all + drm_helper_hpd_irq_event + drm_helper_mode_fill_fb_struct + drm_helper_probe_single_connector_modes + drm_helper_resume_force_mode + drm_ioctl + drm_irq_install + drm_irq_uninstall + drm_is_current_master + drm_kms_helper_hotplug_event + drm_kms_helper_is_poll_worker + drm_kms_helper_poll_disable + drm_kms_helper_poll_enable + drm_kms_helper_poll_fini + drm_kms_helper_poll_init + drm_match_cea_mode + drm_mm_init + drm_mm_insert_node_in_range + drm_mm_print + drm_mm_remove_node + drm_mm_takedown + drm_mode_config_cleanup + drm_mode_config_helper_resume + drm_mode_config_helper_suspend + drm_mode_config_reset + drm_mode_convert_to_umode + drm_mode_convert_umode + drm_mode_copy + drm_mode_create + drm_mode_create_dp_colorspace_property + drm_mode_create_scaling_mode_property + drm_mode_create_tile_group + drm_mode_crtc_set_gamma_size + drm_mode_debug_printmodeline + drm_mode_destroy + drm_mode_duplicate + drm_mode_equal + drm_mode_equal_no_clocks + drm_mode_get_tile_group + drm_mode_is_420_only + drm_mode_match + drm_mode_object_find + drm_mode_object_get + drm_mode_object_put + drm_mode_probed_add + drm_mode_set_crtcinfo + drm_mode_set_name + drm_mode_sort + drm_mode_vrefresh + drm_modeset_acquire_fini + drm_modeset_acquire_init + drm_modeset_backoff + drm_modeset_drop_locks + drm_modeset_lock + drm_modeset_lock_all + drm_modeset_lock_all_ctx + drm_modeset_lock_init + drm_modeset_unlock + drm_modeset_unlock_all + drm_need_swiotlb + drm_object_attach_property + drm_object_property_set_value + drm_of_component_match_add + drm_of_find_possible_crtcs + drm_open + drm_panel_add + drm_panel_disable + drm_panel_enable + drm_panel_get_modes + drm_panel_init + drm_panel_prepare + drm_panel_remove + drm_panel_unprepare + drm_plane_cleanup + drm_plane_create_alpha_property + drm_plane_create_blend_mode_property + drm_plane_create_rotation_property + drm_plane_create_zpos_property + drm_plane_enable_fb_damage_clips + drm_poll + drm_prime_gem_destroy + drm_prime_pages_to_sg + drm_prime_sg_to_page_addr_arrays + drm_printf + drm_property_blob_get + drm_property_blob_put + drm_property_create + drm_property_create_bitmask + drm_property_create_blob + drm_property_create_bool + drm_property_create_enum + drm_property_create_range + drm_property_create_signed_range + drm_property_lookup_blob + drm_property_replace_blob + drm_puts + drm_read + drm_rect_calc_hscale + drm_rect_calc_vscale + drm_rect_clip_scaled + drm_rect_intersect + drm_release + drm_rotation_simplify + drm_send_event + drm_send_event_locked + drm_set_preferred_mode + drm_simple_encoder_init + drm_state_dump + drm_syncobj_add_point + drm_syncobj_create + drm_syncobj_find + drm_syncobj_find_fence + drm_syncobj_free + drm_syncobj_get_fd + drm_syncobj_get_handle + drm_syncobj_replace_fence + drm_sysfs_hotplug_event + drm_universal_plane_init + drm_vblank_init + drm_vma_node_allow + drm_vma_node_is_allowed + drm_vma_node_revoke + drm_wait_one_vblank + drm_writeback_connector_init + drm_writeback_queue_job + drm_writeback_signal_completion + drmm_kmalloc + drmm_mode_config_init + dst_release + dump_align + dump_backtrace + dump_emit + dump_stack + dup_iter + dw_handle_msi_irq + dw_pcie_host_init + dw_pcie_msi_init + dw_pcie_own_conf_map_bus + dw_pcie_read + dw_pcie_setup_rc + dw_pcie_write + dwc3_send_gadget_ep_cmd + dwc3_stop_active_transfer + edac_device_add_device + edac_device_alloc_ctl_info + edac_device_alloc_index + edac_device_del_device + edac_device_free_ctl_info + edac_device_handle_ce_count + edac_device_handle_ue_count + efi + efi_tpm_final_log_size + elevator_alloc + elv_bio_merge_ok + elv_rb_add + elv_rb_del + elv_rb_find + elv_rb_former_request + elv_rb_latter_request + elv_register + elv_rqhash_add + elv_rqhash_del + elv_unregister + emergency_restart + enable_irq + enable_percpu_irq + eth_commit_mac_addr_change + eth_mac_addr + eth_platform_get_mac_address + eth_prepare_mac_addr_change + eth_type_trans + eth_validate_addr + ether_setup + ethtool_op_get_link + ethtool_op_get_ts_info + ethtool_virtdev_set_link_ksettings + event_triggers_call + eventfd_ctx_fdget + eventfd_ctx_fileget + eventfd_ctx_put + eventfd_ctx_remove_wait_queue + eventfd_signal + extcon_find_edev_by_node + extcon_get_edev_by_phandle + extcon_get_edev_name + extcon_get_extcon_dev + extcon_get_property + extcon_get_state + extcon_register_notifier + extcon_set_property + extcon_set_property_capability + extcon_set_state_sync + extcon_unregister_notifier + fasync_helper + fd_install + fget + file_path + file_ra_state_init + filp_close + filp_open_block + find_get_pid + find_last_bit + find_next_bit + find_next_zero_bit + find_snd_usb_substream + find_task_by_vpid + find_vma + find_vpid + finish_wait + firmware_request_nowarn + fixed_size_llseek + flow_keys_basic_dissector + flush_dcache_page + flush_delayed_work + flush_signals + flush_work + flush_workqueue + fput + frame_vector_create + frame_vector_destroy + frame_vector_to_pages + free_buffer_head + free_io_pgtable_ops + free_irq + free_netdev + free_pages + free_pages_exact + free_percpu + free_percpu_irq + freezing_slow_path + freq_qos_add_request + freq_qos_remove_request + freq_qos_update_request + freq_scale + fs_bio_set + fsync_bdev + ftrace_dump + full_name_hash + fwnode_find_reference + fwnode_get_name + fwnode_get_named_child_node + fwnode_get_next_child_node + fwnode_gpiod_get_index + fwnode_handle_get + fwnode_handle_put + fwnode_property_present + fwnode_property_read_string + fwnode_property_read_u32_array + fwnode_usb_role_switch_get + gcd + gen_pool_add_owner + gen_pool_alloc_algo_owner + gen_pool_avail + gen_pool_best_fit + gen_pool_create + gen_pool_destroy + gen_pool_dma_alloc_align + gen_pool_dma_zalloc_align + gen_pool_first_fit_align + gen_pool_first_fit_order_align + gen_pool_free_owner + gen_pool_has_addr + gen_pool_set_algo + gen_pool_size + gen_pool_virt_to_phys + generic_delete_inode + generic_device_group + generic_file_llseek + generic_file_read_iter + generic_handle_irq + generic_iommu_put_resv_regions + generic_mii_ioctl + generic_perform_write + generic_write_checks + genl_notify + genl_register_family + genl_unregister_family + genlmsg_put + genphy_read_status + genphy_resume + genphy_soft_reset + genphy_suspend + get_cpu_device + get_cpu_idle_time + get_cpu_idle_time_us + get_cpu_iowait_time_us + get_device + get_device_system_crosststamp + get_governor_parent_kobj + get_next_ino + get_option + get_options + get_pid_task + get_random_bytes + get_random_bytes_arch + get_random_u32 + get_random_u64 + get_sg_io_hdr + get_state_synchronize_rcu + get_task_exe_file + get_task_mm + get_task_pid + get_thermal_instance + get_tree_single + get_unmapped_area + get_unused_fd_flags + get_user_pages + get_user_pages_fast + get_user_pages_remote + get_vaddr_frames + get_zeroed_page + getboottime64 + gfp_zone + gic_nonsecure_priorities + glob_match + gnss_allocate_device + gnss_deregister_device + gnss_insert_raw + gnss_put_device + gnss_register_device + gov_attr_set_get + gov_attr_set_init + gov_attr_set_put + governor_sysfs_ops + gpio_free + gpio_free_array + gpio_request + gpio_request_one + gpio_to_desc + gpiochip_add_data_with_key + gpiochip_add_pin_range + gpiochip_find + gpiochip_generic_config + gpiochip_generic_free + gpiochip_generic_request + gpiochip_get_data + gpiochip_line_is_valid + gpiochip_lock_as_irq + gpiochip_populate_parent_fwspec_fourcell + gpiochip_remove + gpiochip_unlock_as_irq + gpiod_cansleep + gpiod_count + gpiod_direction_input + gpiod_direction_output + gpiod_direction_output_raw + gpiod_get_optional + gpiod_get_raw_value + gpiod_get_raw_value_cansleep + gpiod_get_value + gpiod_get_value_cansleep + gpiod_set_consumer_name + gpiod_set_debounce + gpiod_set_raw_value + gpiod_set_raw_value_cansleep + gpiod_set_value + gpiod_set_value_cansleep + gpiod_to_chip + gpiod_to_irq + gro_cells_destroy + gro_cells_init + gro_cells_receive + gserial_alloc_line + gserial_connect + gserial_disconnect + guid_gen + handle_bad_irq + handle_edge_irq + handle_fasteoi_ack_irq + handle_fasteoi_irq + handle_level_irq + handle_nested_irq + handle_simple_irq + handle_sysrq + hash_digest_size + hashlen_string + have_governor_per_policy + hci_alloc_dev + hci_free_dev + hci_recv_frame + hci_register_dev + hci_unregister_dev + hdmi_audio_infoframe_init + hdmi_audio_infoframe_pack + hdmi_avi_infoframe_init + hdmi_avi_infoframe_pack + hdmi_infoframe_pack + hex2bin + hex_dump_to_buffer + hex_to_bin + hid_hw_close + hid_hw_open + hid_hw_start + hid_hw_stop + hid_open_report + hid_report_raw_event + hid_unregister_driver + hmm_range_fault + hrtimer_active + hrtimer_cancel + hrtimer_forward + hrtimer_init + hrtimer_init_sleeper + hrtimer_sleeper_start_expires + hrtimer_start_range_ns + hrtimer_try_to_cancel + hvc_alloc + hvc_instantiate + hvc_kick + hvc_poll + hvc_remove + hwrng_register + hwrng_unregister + hwspin_lock_free + hwspin_lock_request_specific + hypervisor_kobj + i2c_adapter_type + i2c_add_adapter + i2c_add_numbered_adapter + i2c_bit_add_bus + i2c_bit_add_numbered_bus + i2c_bus_type + i2c_client_type + i2c_del_adapter + i2c_del_driver + i2c_for_each_dev + i2c_generic_scl_recovery + i2c_get_adapter + i2c_get_device_id + i2c_get_dma_safe_msg_buf + i2c_match_id + i2c_new_ancillary_device + i2c_new_client_device + i2c_new_dummy_device + i2c_new_scanned_device + i2c_parse_fw_timings + i2c_put_adapter + i2c_put_dma_safe_msg_buf + i2c_recover_bus + i2c_register_driver + i2c_smbus_read_byte + i2c_smbus_read_byte_data + i2c_smbus_read_i2c_block_data + i2c_smbus_read_word_data + i2c_smbus_write_byte + i2c_smbus_write_byte_data + i2c_smbus_write_i2c_block_data + i2c_smbus_write_word_data + i2c_smbus_xfer + i2c_transfer + i2c_transfer_buffer_flags + i2c_unregister_device + i2c_verify_adapter + i2c_verify_client + icc_disable + icc_enable + icc_get + icc_link_create + icc_node_add + icc_node_create + icc_node_del + icc_node_destroy + icc_nodes_remove + icc_provider_add + icc_provider_del + icc_put + icc_set_bw + icc_set_tag + icc_std_aggregate + icc_sync_state + ida_alloc_range + ida_destroy + ida_free + idr_alloc + idr_alloc_cyclic + idr_alloc_u32 + idr_destroy + idr_find + idr_for_each + idr_get_next + idr_preload + idr_remove + idr_replace + ieee802154_alloc_hw + ieee802154_free_hw + ieee802154_register_hw + ieee802154_rx_irqsafe + ieee802154_unregister_hw + ieee802154_wake_queue + ieee802154_xmit_complete + iio_buffer_init + iio_buffer_put + iio_channel_get + iio_channel_get_all + iio_channel_release + iio_device_alloc + iio_device_attach_buffer + iio_device_free + iio_device_unregister + iio_push_to_buffers + iio_read_channel_processed + iio_read_channel_raw + import_iovec + in4_pton + in6_dev_finish_destroy + in6_pton + in_aton + in_egroup_p + inc_zone_page_state + inet_proto_csum_replace4 + init_dummy_netdev + init_iova_domain + init_net + init_on_free + init_pid_ns + init_pseudo + init_srcu_struct + init_task + init_timer_key + init_uts_ns + init_wait_entry + input_alloc_absinfo + input_allocate_device + input_close_device + input_event + input_ff_create + input_ff_create_memless + input_ff_destroy + input_free_device + input_mt_assign_slots + input_mt_destroy_slots + input_mt_drop_unused + input_mt_init_slots + input_mt_report_finger_count + input_mt_report_pointer_emulation + input_mt_report_slot_state + input_mt_sync_frame + input_open_device + input_register_device + input_register_handle + input_register_handler + input_set_abs_params + input_set_capability + input_set_timestamp + input_unregister_device + input_unregister_handle + input_unregister_handler + int_pow + int_sqrt + interval_tree_insert + interval_tree_iter_first + interval_tree_iter_next + interval_tree_remove + invalidate_bdev + invalidate_mapping_pages + io_schedule_timeout + iomem_resource + iommu_alloc_resv_region + iommu_attach_device + iommu_attach_group + iommu_aux_attach_device + iommu_aux_detach_device + iommu_aux_get_pasid + iommu_detach_device + iommu_detach_group + iommu_dev_enable_feature + iommu_dev_feature_enabled + iommu_device_register + iommu_device_sysfs_add + iommu_device_sysfs_remove + iommu_device_unlink + iommu_device_unregister + iommu_dma_enable_best_fit_algo + iommu_dma_get_resv_regions + iommu_dma_reserve_iova + iommu_domain_alloc + iommu_domain_free + iommu_domain_get_attr + iommu_domain_set_attr + iommu_fwspec_add_ids + iommu_fwspec_free + iommu_get_dma_cookie + iommu_get_domain_for_dev + iommu_get_msi_cookie + iommu_group_alloc + iommu_group_for_each_dev + iommu_group_get + iommu_group_get_iommudata + iommu_group_put + iommu_group_ref_get + iommu_group_set_iommudata + iommu_group_set_name + iommu_iova_to_phys + iommu_map + iommu_map_sg + iommu_present + iommu_put_dma_cookie + iommu_register_device_fault_handler + iommu_report_device_fault + iommu_set_fault_handler + iommu_unmap + iommu_unregister_device_fault_handler + iounmap + iov_iter_bvec + iov_iter_kvec + ip_compute_csum + ip_send_check + ipi_desc_get + iput + ipv6_ext_hdr + ipv6_find_hdr + ipv6_skip_exthdr + irq_chip_ack_parent + irq_chip_disable_parent + irq_chip_enable_parent + irq_chip_eoi_parent + irq_chip_get_parent_state + irq_chip_mask_parent + irq_chip_retrigger_hierarchy + irq_chip_set_affinity_parent + irq_chip_set_parent_state + irq_chip_set_type_parent + irq_chip_set_vcpu_affinity_parent + irq_chip_set_wake_parent + irq_chip_unmask_parent + irq_create_fwspec_mapping + irq_create_mapping_affinity + irq_create_of_mapping + irq_dispose_mapping + irq_domain_alloc_irqs_parent + irq_domain_create_hierarchy + irq_domain_free_irqs_common + irq_domain_free_irqs_parent + irq_domain_get_irq_data + irq_domain_remove + irq_domain_set_hwirq_and_chip + irq_domain_set_info + irq_domain_simple_ops + irq_domain_update_bus_token + irq_domain_xlate_onecell + irq_domain_xlate_onetwocell + irq_domain_xlate_twocell + irq_find_mapping + irq_find_matching_fwspec + irq_get_irq_data + irq_get_irqchip_state + irq_modify_status + irq_of_parse_and_map + irq_set_affinity_hint + irq_set_affinity_notifier + irq_set_chained_handler_and_data + irq_set_chip + irq_set_chip_and_handler_name + irq_set_chip_data + irq_set_handler_data + irq_set_irq_type + irq_set_irq_wake + irq_set_irqchip_state + irq_set_parent + irq_to_desc + irq_work_queue + irq_work_queue_on + irq_work_sync + is_dma_buf_file + is_vmalloc_addr + jiffies + jiffies64_to_msecs + jiffies_64_to_clock_t + jiffies_to_msecs + jiffies_to_usecs + kasan_flag_enabled + kasprintf + kern_mount + kern_unmount + kernel_bind + kernel_connect + kernel_cpustat + kernel_getsockname + kernel_kobj + kernel_power_off + kernel_recvmsg + kernel_restart + kernel_sendmsg + kernel_sigaction + kernfs_find_and_get_ns + kernfs_notify + kernfs_path_from_node + kernfs_put + kfree + kfree_const + kfree_sensitive + kfree_skb + kick_all_cpus_sync + kill_anon_super + kill_fasync + kill_litter_super + kimage_vaddr + kimage_voffset + kiocb_set_cancel_fn + kmalloc_caches + kmalloc_order + kmalloc_order_trace + kmem_cache_alloc + kmem_cache_alloc_trace + kmem_cache_create + kmem_cache_create_usercopy + kmem_cache_destroy + kmem_cache_free + kmemdup + kmemdup_nul + kmsg_dump_get_line + kmsg_dump_rewind + kobj_sysfs_ops + kobject_add + kobject_create_and_add + kobject_del + kobject_get + kobject_init + kobject_init_and_add + kobject_put + kobject_set_name + kobject_uevent + kobject_uevent_env + krealloc + kset_create_and_add + kset_unregister + ksize + ksoftirqd + kstat + kstat_irqs_cpu + kstat_irqs_usr + kstrdup + kstrdup_const + kstrdup_quotable_cmdline + kstrndup + kstrtobool + kstrtobool_from_user + kstrtoint + kstrtoint_from_user + kstrtol_from_user + kstrtoll + kstrtos8 + kstrtos8_from_user + kstrtou16 + kstrtou16_from_user + kstrtou8 + kstrtou8_from_user + kstrtouint + kstrtouint_from_user + kstrtoul_from_user + kstrtoull + kstrtoull_from_user + ksys_sync_helper + kthread_bind + kthread_bind_mask + kthread_blkcg + kthread_cancel_delayed_work_sync + kthread_cancel_work_sync + kthread_create_on_node + kthread_create_worker + kthread_delayed_work_timer_fn + kthread_destroy_worker + kthread_flush_work + kthread_flush_worker + kthread_mod_delayed_work + kthread_park + kthread_parkme + kthread_queue_delayed_work + kthread_queue_work + kthread_should_park + kthread_should_stop + kthread_stop + kthread_unpark + kthread_unuse_mm + kthread_use_mm + kthread_worker_fn + ktime_add_safe + ktime_get + ktime_get_coarse_with_offset + ktime_get_mono_fast_ns + ktime_get_raw + ktime_get_raw_ts64 + ktime_get_real_seconds + ktime_get_real_ts64 + ktime_get_seconds + ktime_get_ts64 + ktime_get_with_offset + kvasprintf + kvfree + kvfree_call_rcu + kvmalloc_node + led_classdev_flash_register_ext + led_classdev_flash_unregister + led_classdev_register_ext + led_classdev_unregister + led_trigger_event + led_trigger_register_simple + led_trigger_unregister_simple + list_sort + llist_add_batch + llist_reverse_order + lock_sock_nested + log_abnormal_wakeup_reason + log_buf_addr_get + log_buf_len_get + log_threaded_irq_wakeup_reason + loops_per_jiffy + lzo1x_1_compress + lzo1x_decompress_safe + lzorle1x_1_compress + mac_pton + match_string + mbox_chan_received_data + mbox_chan_txdone + mbox_client_txdone + mbox_controller_register + mbox_controller_unregister + mbox_free_channel + mbox_request_channel + mbox_send_message + mdiobus_alloc_size + mdiobus_free + mdiobus_read + mdiobus_unregister + mdiobus_write + media_device_cleanup + media_device_init + media_device_unregister + media_entity_pads_init + memblock_end_of_DRAM + memblock_free + memchr + memchr_inv + memcmp + memcpy + memdup_user + memdup_user_nul + memmove + memory_block_size_bytes + memory_read_from_buffer + memparse + mempool_alloc + mempool_alloc_slab + mempool_create + mempool_create_node + mempool_destroy + mempool_exit + mempool_free + mempool_free_slab + mempool_init + mempool_kfree + mempool_kmalloc + memremap + memset + memset64 + memstart_addr + memunmap + mfd_add_devices + mfd_remove_devices + migrate_swap + mii_check_media + mii_ethtool_get_link_ksettings + mii_ethtool_gset + mii_ethtool_set_link_ksettings + mii_link_ok + mii_nway_restart + mipi_dsi_attach + mipi_dsi_compression_mode + mipi_dsi_create_packet + mipi_dsi_dcs_read + mipi_dsi_dcs_set_column_address + mipi_dsi_dcs_set_display_brightness + mipi_dsi_dcs_set_page_address + mipi_dsi_dcs_set_tear_off + mipi_dsi_dcs_write_buffer + mipi_dsi_detach + mipi_dsi_device_register_full + mipi_dsi_device_unregister + mipi_dsi_driver_register_full + mipi_dsi_driver_unregister + mipi_dsi_host_register + mipi_dsi_host_unregister + mipi_dsi_packet_format_is_long + mipi_dsi_picture_parameter_set + misc_deregister + misc_register + mktime64 + mm_trace_rss_stat + mmc_add_host + mmc_alloc_host + mmc_app_cmd + mmc_calc_max_discard + mmc_can_erase + mmc_can_gpio_cd + mmc_can_secure_erase_trim + mmc_can_trim + mmc_cmdq_disable + mmc_cmdq_enable + mmc_cqe_post_req + mmc_cqe_recovery + mmc_cqe_request_done + mmc_cqe_start_req + mmc_detect_card_removed + mmc_detect_change + mmc_erase + mmc_erase_group_aligned + mmc_flush_cache + mmc_free_host + mmc_get_card + mmc_get_ext_csd + mmc_gpio_get_cd + mmc_gpio_get_ro + mmc_gpiod_request_cd + mmc_gpiod_request_cd_irq + mmc_gpiod_request_ro + mmc_hw_reset + mmc_of_parse + mmc_of_parse_voltage + mmc_put_card + mmc_register_driver + mmc_regulator_get_supply + mmc_regulator_set_ocr + mmc_regulator_set_vqmmc + mmc_release_host + mmc_remove_host + mmc_request_done + mmc_retune_pause + mmc_retune_release + mmc_retune_unpause + mmc_run_bkops + mmc_sanitize + mmc_send_status + mmc_send_tuning + mmc_set_data_timeout + mmc_start_request + mmc_switch + mmc_unregister_driver + mmc_wait_for_cmd + mmc_wait_for_req + mmput + mmu_interval_notifier_insert + mmu_interval_notifier_remove + mmu_interval_read_begin + mmu_notifier_synchronize + mod_delayed_work_on + mod_node_page_state + mod_timer + module_layout + module_put + msleep + msleep_interruptible + mutex_is_locked + mutex_lock + mutex_lock_interruptible + mutex_trylock + mutex_trylock_recursive + mutex_unlock + name_to_dev_t + names_cachep + napi_complete_done + napi_consume_skb + napi_disable + napi_gro_flush + napi_gro_receive + napi_schedule_prep + net_namespace_list + net_ratelimit + netdev_change_features + netdev_err + netdev_increment_features + netdev_info + netdev_lower_state_changed + netdev_master_upper_dev_link + netdev_notify_peers + netdev_pick_tx + netdev_rx_handler_register + netdev_rx_handler_unregister + netdev_state_change + netdev_update_features + netdev_upper_dev_link + netdev_upper_dev_unlink + netdev_warn + netif_carrier_off + netif_carrier_on + netif_device_attach + netif_device_detach + netif_napi_add + netif_receive_skb + netif_receive_skb_list + netif_rx + netif_rx_ni + netif_schedule_queue + netif_set_real_num_rx_queues + netif_set_real_num_tx_queues + netif_stacked_transfer_operstate + netif_tx_stop_all_queues + netif_tx_wake_queue + netlink_ack + netlink_broadcast + netlink_capable + netlink_has_listeners + netlink_kernel_release + netlink_register_notifier + netlink_unicast + netlink_unregister_notifier + new_inode + nf_conntrack_destroy + nla_append + nla_find + nla_memcpy + nla_put + nla_put_64bit + nla_put_nohdr + nla_reserve + nla_reserve_64bit + nla_strlcpy + no_llseek + no_seek_end_llseek + nonseekable_open + noop_llseek + nr_cpu_ids + nr_ipi_get + nr_irqs + ns_capable + ns_to_timespec64 + nsec_to_clock_t + nsecs_to_jiffies + nvdimm_bus_register + nvdimm_bus_unregister + nvdimm_pmem_region_create + nvmem_cell_get + nvmem_cell_put + nvmem_cell_read + nvmem_cell_read_u32 + nvmem_cell_write + nvmem_device_put + nvmem_device_read + nvmem_device_write + of_address_to_resource + of_alias_get_highest_id + of_alias_get_id + of_clk_add_hw_provider + of_clk_add_provider + of_clk_del_provider + of_clk_get + of_clk_get_by_name + of_clk_get_from_provider + of_clk_get_parent_count + of_clk_get_parent_name + of_clk_hw_onecell_get + of_clk_hw_simple_get + of_clk_set_defaults + of_clk_src_onecell_get + of_clk_src_simple_get + of_count_phandle_with_args + of_cpu_node_to_id + of_cpufreq_cooling_register + of_css + of_devfreq_cooling_register + of_devfreq_cooling_register_power + of_device_get_match_data + of_device_is_available + of_device_is_compatible + of_device_modalias + of_device_request_module + of_device_uevent_modalias + of_dma_configure_id + of_dma_controller_free + of_dma_controller_register + of_dma_is_coherent + of_drm_find_bridge + of_drm_find_panel + of_find_all_nodes + of_find_compatible_node + of_find_device_by_node + of_find_i2c_adapter_by_node + of_find_i2c_device_by_node + of_find_matching_node_and_match + of_find_mipi_dsi_host_by_node + of_find_node_by_name + of_find_node_by_phandle + of_find_node_by_type + of_find_node_opts_by_path + of_find_node_with_property + of_find_property + of_fwnode_ops + of_genpd_add_provider_onecell + of_genpd_add_provider_simple + of_genpd_del_provider + of_get_address + of_get_child_by_name + of_get_compatible_child + of_get_cpu_node + of_get_dma_window + of_get_named_gpio_flags + of_get_next_available_child + of_get_next_child + of_get_next_parent + of_get_parent + of_get_property + of_get_regulator_init_data + of_graph_get_endpoint_by_regs + of_graph_get_next_endpoint + of_graph_get_port_parent + of_graph_get_remote_endpoint + of_graph_get_remote_node + of_graph_get_remote_port + of_graph_get_remote_port_parent + of_graph_is_present + of_graph_parse_endpoint + of_hwspin_lock_get_id + of_i2c_get_board_info + of_icc_get + of_icc_xlate_onecell + of_iomap + of_irq_find_parent + of_irq_get + of_irq_get_byname + of_irq_parse_one + of_machine_is_compatible + of_match_device + of_match_node + of_modalias_node + of_n_addr_cells + of_n_size_cells + of_node_name_eq + of_nvmem_device_get + of_parse_phandle + of_parse_phandle_with_args + of_parse_phandle_with_fixed_args + of_phandle_iterator_init + of_phandle_iterator_next + of_phy_simple_xlate + of_platform_depopulate + of_platform_device_create + of_platform_device_destroy + of_platform_populate + of_prop_next_string + of_prop_next_u32 + of_property_count_elems_of_size + of_property_match_string + of_property_read_string + of_property_read_string_helper + of_property_read_u32_index + of_property_read_u64 + of_property_read_u64_index + of_property_read_variable_u16_array + of_property_read_variable_u32_array + of_property_read_variable_u64_array + of_property_read_variable_u8_array + of_pwm_xlate_with_flags + of_reserved_mem_device_init_by_idx + of_reserved_mem_device_release + of_reserved_mem_lookup + of_reset_control_array_get + of_root + of_thermal_get_ntrips + of_thermal_get_trip_points + of_thermal_is_trip_valid + of_translate_address + of_usb_get_phy_mode + of_usb_host_tpl_support + on_each_cpu + oops_in_progress + orderly_poweroff + overflowuid + page_endio + page_mapping + page_reporting_register + page_reporting_unregister + panic + panic_notifier_list + panic_timeout + param_array_ops + param_get_int + param_get_string + param_get_uint + param_get_ullong + param_ops_bint + param_ops_bool + param_ops_byte + param_ops_charp + param_ops_hexint + param_ops_int + param_ops_long + param_ops_short + param_ops_string + param_ops_uint + param_ops_ullong + param_ops_ulong + param_ops_ushort + param_set_bool + param_set_copystring + param_set_int + param_set_uint + part_end_io_acct + part_start_io_acct + passthru_features_check + pause_cpus + pci_alloc_irq_vectors_affinity + pci_assign_resource + pci_assign_unassigned_bus_resources + pci_bus_resource_n + pci_bus_type + pci_clear_master + pci_d3cold_disable + pci_dev_present + pci_dev_put + pci_device_group + pci_device_is_present + pci_disable_device + pci_disable_msi + pci_enable_atomic_ops_to_root + pci_enable_device + pci_enable_device_mem + pci_enable_msi + pci_enable_wake + pci_find_bus + pci_find_capability + pci_find_ext_capability + pci_find_next_capability + pci_free_irq + pci_free_irq_vectors + pci_generic_config_read + pci_generic_config_write + pci_get_device + pci_get_domain_bus_and_slot + pci_get_slot + pci_host_probe + pci_intx + pci_iomap + pci_iomap_range + pci_ioremap_bar + pci_irq_get_affinity + pci_irq_vector + pci_load_and_free_saved_state + pci_load_saved_state + pci_map_rom + pci_match_id + pci_msi_create_irq_domain + pci_msi_mask_irq + pci_msi_unmask_irq + pci_msix_vec_count + pci_read_config_byte + pci_read_config_dword + pci_read_config_word + pci_release_region + pci_release_regions + pci_release_resource + pci_release_selected_regions + pci_request_irq + pci_request_region + pci_request_regions + pci_request_selected_regions + pci_rescan_bus + pci_resize_resource + pci_restore_msi_state + pci_restore_state + pci_save_state + pci_select_bars + pci_set_master + pci_set_mwi + pci_set_power_state + pci_store_saved_state + pci_unmap_rom + pci_unregister_driver + pci_wake_from_d3 + pci_walk_bus + pci_write_config_byte + pci_write_config_dword + pci_write_config_word + pcibios_resource_to_bus + pcie_aspm_enabled + pcie_bandwidth_available + pcie_capability_read_word + pcie_capability_write_word + pcie_get_mps + pcie_get_speed_cap + pcim_enable_device + per_cpu_ptr_to_phys + percpu_down_write + percpu_ref_exit + percpu_ref_init + percpu_ref_is_zero + percpu_ref_kill_and_confirm + percpu_ref_switch_to_atomic_sync + percpu_ref_switch_to_percpu + percpu_up_write + perf_aux_output_begin + perf_aux_output_end + perf_aux_output_flag + perf_event_addr_filters_sync + perf_event_create_kernel_counter + perf_event_disable + perf_event_enable + perf_event_pause + perf_event_read_local + perf_event_read_value + perf_event_release_kernel + perf_event_update_userpage + perf_get_aux + perf_pmu_migrate_context + perf_pmu_register + perf_pmu_unregister + perf_trace_buf_alloc + perf_trace_run_bpf_submit + pfn_valid + phy_attached_info + phy_calibrate + phy_configure + phy_connect + phy_connect_direct + phy_disconnect + phy_do_ioctl_running + phy_drivers_register + phy_drivers_unregister + phy_ethtool_get_link_ksettings + phy_ethtool_nway_reset + phy_ethtool_set_link_ksettings + phy_exit + phy_find_first + phy_get_pause + phy_init + phy_init_hw + phy_mii_ioctl + phy_pm_runtime_get_sync + phy_pm_runtime_put_sync + phy_power_off + phy_power_on + phy_print_status + phy_set_mode_ext + phy_start + phy_stop + pick_highest_pushable_task + pid_nr_ns + pid_task + pin_get_name + pin_user_pages + pin_user_pages_fast + pin_user_pages_remote + pinconf_generic_dt_free_map + pinconf_generic_dt_node_to_map + pinctrl_add_gpio_range + pinctrl_dev_get_drvdata + pinctrl_enable + pinctrl_force_default + pinctrl_force_sleep + pinctrl_get + pinctrl_lookup_state + pinctrl_pm_select_default_state + pinctrl_pm_select_idle_state + pinctrl_pm_select_sleep_state + pinctrl_put + pinctrl_remove_gpio_range + pinctrl_select_default_state + pinctrl_select_state + pinctrl_utils_free_map + pipe_lock + pipe_unlock + pktgen_xfrm_outer_mode_output + platform_add_devices + platform_bus_type + platform_device_add + platform_device_add_data + platform_device_add_properties + platform_device_add_resources + platform_device_alloc + platform_device_del + platform_device_put + platform_device_register + platform_device_register_full + platform_device_unregister + platform_driver_unregister + platform_find_device_by_driver + platform_get_irq + platform_get_irq_byname + platform_get_irq_byname_optional + platform_get_irq_optional + platform_get_resource + platform_get_resource_byname + platform_irq_count + pm_clk_add + pm_clk_create + pm_clk_destroy + pm_clk_resume + pm_clk_suspend + pm_generic_resume + pm_generic_runtime_resume + pm_generic_runtime_suspend + pm_generic_suspend + pm_genpd_add_subdomain + pm_genpd_init + pm_genpd_remove + pm_genpd_remove_subdomain + pm_power_off + pm_relax + pm_runtime_allow + pm_runtime_autosuspend_expiration + pm_runtime_barrier + pm_runtime_enable + pm_runtime_forbid + pm_runtime_force_resume + pm_runtime_force_suspend + pm_runtime_get_if_active + pm_runtime_irq_safe + pm_runtime_no_callbacks + pm_runtime_set_autosuspend_delay + pm_stay_awake + pm_suspend_global_flags + pm_system_wakeup + pm_wakeup_dev_event + pm_wakeup_ws_event + policy_has_boost_freq + power_supply_changed + power_supply_get_by_name + power_supply_get_by_phandle_array + power_supply_get_drvdata + power_supply_get_property + power_supply_is_system_supplied + power_supply_put + power_supply_reg_notifier + power_supply_register + power_supply_set_property + power_supply_unreg_notifier + power_supply_unregister + prandom_bytes + prandom_u32 + preempt_schedule + preempt_schedule_notrace + prepare_to_wait + prepare_to_wait_event + print_hex_dump + printk + printk_deferred + printk_timed_ratelimit + proc_create + proc_create_data + proc_create_single_data + proc_dointvec + proc_dointvec_minmax + proc_dostring + proc_douintvec_minmax + proc_mkdir + proc_mkdir_data + proc_remove + proc_set_size + proc_set_user + proc_symlink + proto_register + proto_unregister + ps2_begin_command + ps2_cmd_aborted + ps2_command + ps2_drain + ps2_end_command + ps2_handle_ack + ps2_handle_response + ps2_init + ps2_sendbyte + ps2_sliced_command + pskb_expand_head + pstore_register + pstore_unregister + public_key_verify_signature + put_device + put_disk + put_iova_domain + put_pid + put_sg_io_hdr + put_tty_driver + put_unused_fd + put_vaddr_frames + pwm_apply_state + pwm_get_chip_data + pwm_set_chip_data + pwmchip_add + pwmchip_remove + qcom_smem_state_get + qcom_smem_state_register + qcom_smem_state_unregister + qcom_smem_state_update_bits + qdisc_reset + queue_delayed_work_on + queue_work_on + radix_tree_delete + radix_tree_insert + radix_tree_iter_delete + radix_tree_iter_resume + radix_tree_lookup + radix_tree_maybe_preload + radix_tree_next_chunk + radix_tree_tagged + rational_best_approximation + raw_notifier_call_chain + raw_notifier_chain_register + raw_notifier_chain_unregister + rb_erase + rb_first + rb_first_postorder + rb_insert_color + rb_last + rb_next + rb_next_postorder + rb_prev + rb_replace_node + rcu_barrier + rcu_barrier_tasks + rcu_barrier_tasks_trace + rcu_bind_current_to_nocb + rcu_cpu_stall_suppress + rcu_cpu_stall_suppress_at_boot + rcu_expedite_gp + rcu_force_quiescent_state + rcu_fwd_progress_check + rcu_get_gp_kthreads_prio + rcu_get_gp_seq + rcu_gp_is_expedited + rcu_gp_is_normal + rcu_gp_set_torture_wait + rcu_inkernel_boot_has_ended + rcu_is_watching + rcu_jiffies_till_stall_check + rcu_read_unlock_trace_special + rcu_unexpedite_gp + rcutorture_get_gp_data + rcuwait_wake_up + rdev_get_drvdata + rdev_get_id + reboot_mode + reciprocal_value + refcount_dec_and_lock + refcount_dec_and_mutex_lock + refcount_dec_not_one + refcount_warn_saturate + refresh_frequency_limits + regcache_cache_bypass + regcache_cache_only + regcache_drop_region + regcache_mark_dirty + regcache_sync + regcache_sync_region + register_blkdev + register_chrdev_region + register_console + register_die_notifier + register_filesystem + register_ftrace_export + register_inet6addr_notifier + register_inetaddr_notifier + register_kernel_break_hook + register_kprobe + register_kretprobe + register_memory_notifier + register_module_notifier + register_net_sysctl + register_netdev + register_netdevice + register_netdevice_notifier + register_netevent_notifier + register_oom_notifier + register_pernet_device + register_pernet_subsys + register_pm_notifier + register_reboot_notifier + register_restart_handler + register_shrinker + register_syscore_ops + register_sysctl + register_sysctl_table + register_virtio_device + register_virtio_driver + register_vmap_purge_notifier + regmap_add_irq_chip + regmap_async_complete + regmap_bulk_read + regmap_bulk_write + regmap_check_range_table + regmap_del_irq_chip + regmap_exit + regmap_field_read + regmap_field_update_bits_base + regmap_get_device + regmap_irq_get_domain + regmap_irq_get_virq + regmap_mmio_detach_clk + regmap_multi_reg_write + regmap_multi_reg_write_bypassed + regmap_raw_read + regmap_raw_write + regmap_raw_write_async + regmap_read + regmap_register_patch + regmap_update_bits_base + regmap_write + regulator_allow_bypass + regulator_bulk_disable + regulator_bulk_enable + regulator_bulk_get + regulator_count_voltages + regulator_disable + regulator_disable_deferred + regulator_disable_regmap + regulator_enable + regulator_enable_regmap + regulator_force_disable + regulator_get + regulator_get_current_limit + regulator_get_drvdata + regulator_get_mode + regulator_get_optional + regulator_get_voltage + regulator_get_voltage_rdev + regulator_get_voltage_sel_regmap + regulator_is_enabled + regulator_is_enabled_regmap + regulator_is_supported_voltage + regulator_list_voltage_linear + regulator_list_voltage_linear_range + regulator_list_voltage_table + regulator_map_voltage_ascend + regulator_map_voltage_linear + regulator_notifier_call_chain + regulator_put + regulator_register + regulator_register_notifier + regulator_set_current_limit + regulator_set_load + regulator_set_mode + regulator_set_voltage + regulator_set_voltage_sel_regmap + regulator_unregister + regulator_unregister_notifier + release_firmware + release_pages + release_sock + remap_pfn_range + remap_vmalloc_range + remove_cpu + remove_memory_subsection + remove_proc_entry + remove_wait_queue + report_iommu_fault + request_any_context_irq + request_firmware + request_firmware_direct + request_firmware_into_buf + request_firmware_nowait + request_threaded_irq + resched_curr + reservation_ww_class + reset_control_assert + reset_control_deassert + reset_control_put + reset_control_reset + resume_cpus + return_address + revalidate_disk_size + rfkill_alloc + rfkill_destroy + rfkill_find_type + rfkill_init_sw_state + rfkill_register + rfkill_set_sw_state + rfkill_unregister + rhashtable_destroy + rhashtable_init + rhashtable_insert_slow + rht_bucket_nested + rht_bucket_nested_insert + rndis_deregister + rndis_free_response + rndis_get_next_response + rndis_msg_parser + rndis_register + rndis_set_host_mac + rndis_set_param_dev + rndis_set_param_medium + rndis_set_param_vendor + rndis_signal_connect + rndis_uninit + root_task_group + round_jiffies_relative + round_jiffies_up + rpmsg_get_signals + rpmsg_poll + rpmsg_register_device + rpmsg_send + rpmsg_set_signals + rpmsg_trysend + rpmsg_unregister_device + rproc_add + rproc_add_subdev + rproc_alloc + rproc_boot + rproc_coredump_add_custom_segment + rproc_coredump_add_segment + rproc_coredump_set_elf_info + rproc_coredump_using_sections + rproc_del + rproc_elf_get_boot_addr + rproc_free + rproc_get_by_child + rproc_get_by_phandle + rproc_put + rproc_remove_subdev + rproc_report_crash + rproc_shutdown + rps_needed + rt_mutex_lock + rt_mutex_trylock + rt_mutex_unlock + rtc_class_close + rtc_class_open + rtc_read_time + rtc_set_time + rtc_time64_to_tm + rtc_tm_to_time64 + rtc_update_irq + rtc_valid_tm + rtc_year_days + rtnl_is_locked + rtnl_link_register + rtnl_link_unregister + rtnl_lock + rtnl_register_module + rtnl_trylock + rtnl_unicast + rtnl_unlock + rtnl_unregister + runqueues + sb800_prefetch + sbitmap_queue_min_shallow_depth + sched_clock + sched_feat_keys + sched_feat_names + sched_set_fifo + sched_set_fifo_low + sched_set_normal + sched_setattr + sched_setattr_nocheck + sched_setscheduler + sched_setscheduler_nocheck + sched_show_task + sched_trace_cfs_rq_avg + sched_trace_cfs_rq_cpu + sched_trace_cfs_rq_path + sched_trace_rd_span + sched_trace_rq_avg_dl + sched_trace_rq_avg_irq + sched_trace_rq_avg_rt + sched_trace_rq_cpu + sched_uclamp_used + schedule + schedule_hrtimeout + schedule_timeout + schedule_timeout_interruptible + schedule_timeout_uninterruptible + scnprintf + scsi_autopm_get_device + scsi_autopm_put_device + scsi_block_requests + scsi_block_when_processing_errors + scsi_command_size_tbl + scsi_compat_ioctl + scsi_device_get + scsi_device_put + scsi_device_quiesce + scsi_dma_unmap + scsi_eh_ready_devs + scsi_ioctl + scsi_ioctl_block_when_processing_errors + scsi_normalize_sense + scsi_print_sense_hdr + scsi_register_interface + scsi_remove_device + scsi_unblock_requests + sdev_prefix_printk + sdhci_add_host + sdhci_cleanup_host + sdhci_cqe_disable + sdhci_cqe_enable + sdhci_cqe_irq + sdhci_enable_clk + sdhci_get_property + sdhci_pltfm_free + sdhci_pltfm_init + sdhci_remove_host + sdhci_reset + sdhci_set_bus_width + sdhci_set_power_noreg + sdhci_setup_host + sdio_claim_host + sdio_disable_func + sdio_enable_func + sdio_f0_readb + sdio_f0_writeb + sdio_get_host_pm_caps + sdio_memcpy_fromio + sdio_memcpy_toio + sdio_readsb + sdio_register_driver + sdio_release_host + sdio_set_block_size + sdio_set_host_pm_flags + sdio_signal_irq + sdio_unregister_driver + sdio_writesb + securityfs_create_dir + securityfs_create_file + securityfs_remove + send_sig_info + seq_buf_printf + seq_file_path + seq_hex_dump + seq_list_next + seq_list_start + seq_lseek + seq_open + seq_printf + seq_putc + seq_puts + seq_read + seq_release + seq_release_private + seq_vprintf + seq_write + serdev_device_close + serdev_device_open + serdev_device_set_baudrate + serdev_device_set_flow_control + serdev_device_wait_until_sent + serdev_device_write + serdev_device_write_wakeup + serio_close + serio_interrupt + serio_open + serio_reconnect + serio_rescan + serio_unregister_child_port + serio_unregister_driver + serio_unregister_port + set_blocksize + set_capacity_revalidate_and_notify + set_cpus_allowed_ptr + set_disk_ro + set_freezable + set_normalized_timespec64 + set_page_dirty + set_page_dirty_lock + set_task_cpu + set_user_nice + sg_alloc_table + sg_alloc_table_from_pages + sg_free_table + sg_init_one + sg_init_table + sg_miter_next + sg_miter_start + sg_miter_stop + sg_nents_for_len + sg_next + sg_pcopy_from_buffer + sg_pcopy_to_buffer + sg_scsi_ioctl + sg_zero_buffer + sgl_alloc + sgl_free + shmem_truncate_range + show_rcu_gp_kthreads + show_regs + si_mem_available + si_meminfo + si_swapinfo + sigprocmask + simple_attr_open + simple_attr_read + simple_attr_release + simple_attr_write + simple_dir_inode_operations + simple_dir_operations + simple_open + simple_read_from_buffer + simple_statfs + simple_strtol + simple_strtoll + simple_strtoul + simple_strtoull + simple_write_to_buffer + single_open + single_open_size + single_release + sk_alloc + sk_free + skb_add_rx_frag + skb_append_pagefrags + skb_checksum + skb_clone + skb_coalesce_rx_frag + skb_copy + skb_copy_bits + skb_copy_datagram_iter + skb_copy_expand + skb_copy_ubufs + skb_dequeue + skb_dequeue_tail + skb_ensure_writable + skb_free_datagram + skb_page_frag_refill + skb_partial_csum_set + skb_pull + skb_push + skb_put + skb_queue_head + skb_queue_purge + skb_queue_tail + skb_realloc_headroom + skb_recv_datagram + skb_set_owner_w + skb_store_bits + skb_to_sgvec + skb_trim + skb_tstamp_tx + skb_unlink + skip_spaces + smp_call_function + smp_call_function_any + smp_call_function_many + smp_call_function_single + smp_call_function_single_async + smp_call_on_cpu + smpboot_register_percpu_thread + smpboot_unregister_percpu_thread + snd_card_disconnect + snd_card_free + snd_card_new + snd_card_register + snd_card_rw_proc_new + snd_component_add + snd_compr_stop_error + snd_ctl_add + snd_ctl_add_vmaster_hook + snd_ctl_apply_vmaster_followers + snd_ctl_boolean_mono_info + snd_ctl_boolean_stereo_info + snd_ctl_enum_info + snd_ctl_find_id + snd_ctl_make_virtual_master + snd_ctl_new1 + snd_ctl_notify + snd_ctl_remove + snd_ctl_remove_id + snd_ctl_sync_vmaster + snd_device_disconnect + snd_device_free + snd_device_new + snd_dma_alloc_pages + snd_dma_free_pages + snd_dmaengine_pcm_prepare_slave_config + snd_hwdep_new + snd_info_create_card_entry + snd_info_create_module_entry + snd_info_free_entry + snd_info_register + snd_interval_refine + snd_jack_new + snd_jack_report + snd_jack_set_key + snd_pci_quirk_lookup + snd_pcm_add_chmap_ctls + snd_pcm_alt_chmaps + snd_pcm_create_iec958_consumer_hw_params + snd_pcm_format_physical_width + snd_pcm_format_width + snd_pcm_hw_constraint_eld + snd_pcm_hw_constraint_integer + snd_pcm_hw_constraint_list + snd_pcm_hw_constraint_minmax + snd_pcm_hw_constraint_msbits + snd_pcm_hw_constraint_step + snd_pcm_hw_limit_rates + snd_pcm_hw_rule_add + snd_pcm_lib_default_mmap + snd_pcm_lib_free_pages + snd_pcm_lib_ioctl + snd_pcm_lib_malloc_pages + snd_pcm_lib_preallocate_free_for_all + snd_pcm_lib_preallocate_pages + snd_pcm_new + snd_pcm_period_elapsed + snd_pcm_rate_range_to_bits + snd_pcm_set_managed_buffer_all + snd_pcm_set_ops + snd_pcm_set_sync + snd_pcm_std_chmaps + snd_pcm_stream_lock + snd_pcm_stream_unlock + snd_pcm_stream_unlock_irqrestore + snd_soc_add_card_controls + snd_soc_add_component_controls + snd_soc_add_dai_controls + snd_soc_bytes_info_ext + snd_soc_bytes_tlv_callback + snd_soc_card_get_kcontrol + snd_soc_card_jack_new + snd_soc_component_async_complete + snd_soc_component_disable_pin + snd_soc_component_exit_regmap + snd_soc_component_force_enable_pin + snd_soc_component_init_regmap + snd_soc_component_read + snd_soc_component_set_jack + snd_soc_component_set_pll + snd_soc_component_set_sysclk + snd_soc_component_update_bits + snd_soc_component_update_bits_async + snd_soc_component_write + snd_soc_dai_get_channel_map + snd_soc_dai_link_set_capabilities + snd_soc_dai_set_bclk_ratio + snd_soc_dai_set_channel_map + snd_soc_dai_set_fmt + snd_soc_dai_set_pll + snd_soc_dai_set_sysclk + snd_soc_dai_set_tdm_slot + snd_soc_dapm_add_routes + snd_soc_dapm_disable_pin + snd_soc_dapm_disable_pin_unlocked + snd_soc_dapm_enable_pin + snd_soc_dapm_force_enable_pin + snd_soc_dapm_force_enable_pin_unlocked + snd_soc_dapm_get_enum_double + snd_soc_dapm_get_pin_status + snd_soc_dapm_get_pin_switch + snd_soc_dapm_get_volsw + snd_soc_dapm_ignore_suspend + snd_soc_dapm_info_pin_switch + snd_soc_dapm_kcontrol_dapm + snd_soc_dapm_kcontrol_widget + snd_soc_dapm_mixer_update_power + snd_soc_dapm_mux_update_power + snd_soc_dapm_new_control + snd_soc_dapm_new_controls + snd_soc_dapm_new_widgets + snd_soc_dapm_put_enum_double + snd_soc_dapm_put_pin_switch + snd_soc_dapm_put_volsw + snd_soc_dapm_sync + snd_soc_dapm_sync_unlocked + snd_soc_dapm_weak_routes + snd_soc_find_dai + snd_soc_get_enum_double + snd_soc_get_pcm_runtime + snd_soc_get_volsw + snd_soc_get_volsw_range + snd_soc_get_volsw_sx + snd_soc_get_xr_sx + snd_soc_info_enum_double + snd_soc_info_multi_ext + snd_soc_info_volsw + snd_soc_info_volsw_range + snd_soc_info_volsw_sx + snd_soc_info_xr_sx + snd_soc_jack_add_gpios + snd_soc_jack_report + snd_soc_lookup_component + snd_soc_new_compress + snd_soc_of_get_dai_link_codecs + snd_soc_of_get_dai_name + snd_soc_of_parse_audio_routing + snd_soc_of_parse_audio_simple_widgets + snd_soc_of_parse_aux_devs + snd_soc_of_parse_card_name + snd_soc_of_parse_daifmt + snd_soc_of_parse_node_prefix + snd_soc_of_parse_tdm_slot + snd_soc_of_put_dai_link_codecs + snd_soc_params_to_bclk + snd_soc_params_to_frame_size + snd_soc_pm_ops + snd_soc_put_enum_double + snd_soc_put_volsw + snd_soc_put_volsw_range + snd_soc_put_volsw_sx + snd_soc_put_xr_sx + snd_soc_register_card + snd_soc_register_component + snd_soc_rtdcom_lookup + snd_soc_runtime_calc_hw + snd_soc_runtime_set_dai_fmt + snd_soc_set_runtime_hwparams + snd_soc_tplg_component_load + snd_soc_tplg_component_remove + snd_soc_tplg_widget_bind_event + snd_soc_unregister_card + snd_soc_unregister_component + snd_usb_enable_audio_stream + snd_vendor_set_ops + snprintf + soc_device_register + soc_device_unregister + sock_alloc_send_skb + sock_create_kern + sock_gettstamp + sock_i_uid + sock_init_data + sock_no_accept + sock_no_listen + sock_no_mmap + sock_no_sendpage + sock_no_shutdown + sock_no_socketpair + sock_queue_rcv_skb + sock_register + sock_release + sock_setsockopt + sock_unregister + sock_wfree + softnet_data + sort + spi_bus_lock + spi_bus_type + spi_bus_unlock + spi_controller_resume + spi_controller_suspend + spi_delay_exec + spi_finalize_current_message + spi_finalize_current_transfer + spi_get_next_queued_message + spi_register_controller + spi_setup + spi_sync + spi_sync_locked + spi_unregister_controller + split_page + spmi_controller_add + spmi_controller_alloc + spmi_controller_remove + spmi_ext_register_read + spmi_ext_register_readl + spmi_ext_register_write + spmi_ext_register_writel + spmi_register_read + spmi_register_write + spmi_register_zero_write + sprint_symbol + sprint_symbol_no_offset + sprintf + srcu_barrier + srcu_batches_completed + srcu_init_notifier_head + srcu_notifier_call_chain + srcu_notifier_chain_register + srcu_notifier_chain_unregister + srcu_torture_stats_print + srcutorture_get_gp_data + sscanf + stack_trace_print + stack_trace_save + stack_trace_save_regs + stack_trace_save_tsk + static_key_disable + static_key_disable_cpuslocked + static_key_slow_dec + static_key_slow_inc + stop_machine + stop_one_cpu_nowait + stpcpy + strcasecmp + strcat + strchr + strchrnul + strcmp + strcpy + strcspn + stream_open + strim + string_get_size + strlcat + strlcpy + strlen + strncasecmp + strncat + strnchr + strncmp + strncpy + strncpy_from_user + strndup_user + strnlen + strnstr + strpbrk + strrchr + strreplace + strscpy + strsep + strspn + strstr + submit_bh + submit_bio + submit_bio_wait + subsys_system_register + swiotlb_nr_tbl + sync_blockdev + sync_file_create + sync_file_get_fence + synchronize_irq + synchronize_net + synchronize_rcu + synchronize_rcu_expedited + synchronize_rcu_tasks + synchronize_rcu_tasks_trace + synchronize_srcu + synchronize_srcu_expedited + sys_tz + syscon_node_to_regmap + syscon_regmap_lookup_by_phandle + sysctl_sched_features + sysctl_sched_latency + sysctl_vals + sysfs_add_file_to_group + sysfs_add_link_to_group + sysfs_create_bin_file + sysfs_create_file_ns + sysfs_create_files + sysfs_create_group + sysfs_create_groups + sysfs_create_link + sysfs_emit + sysfs_emit_at + sysfs_notify + sysfs_remove_bin_file + sysfs_remove_file_from_group + sysfs_remove_file_ns + sysfs_remove_files + sysfs_remove_group + sysfs_remove_groups + sysfs_remove_link + sysfs_remove_link_from_group + sysfs_streq + sysfs_update_group + sysrq_mask + system_freezable_wq + system_freezing_cnt + system_highpri_wq + system_long_wq + system_power_efficient_wq + system_state + system_unbound_wq + system_wq + task_active_pid_ns + task_groups + task_may_not_preempt + task_rq_lock + tasklet_init + tasklet_kill + tasklet_setup + tasklist_lock + tcp_register_congestion_control + tcp_reno_cong_avoid + tcp_reno_ssthresh + tcp_reno_undo_cwnd + tcp_slow_start + tcp_unregister_congestion_control + tcpci_get_tcpm_port + tcpci_irq + tcpci_register_port + tcpci_unregister_port + tcpm_cc_change + tcpm_is_toggling + tcpm_pd_hard_reset + tcpm_pd_receive + tcpm_pd_transmit_complete + tcpm_sink_frs + tcpm_sourcing_vbus + tcpm_update_sink_capabilities + tcpm_vbus_change + thermal_cdev_update + thermal_cooling_device_register + thermal_cooling_device_unregister + thermal_of_cooling_device_register + thermal_pressure + thermal_zone_device_disable + thermal_zone_device_enable + thermal_zone_device_is_enabled + thermal_zone_device_register + thermal_zone_device_unregister + thermal_zone_device_update + thermal_zone_get_slope + thermal_zone_get_temp + thermal_zone_get_zone_by_name + thermal_zone_of_sensor_register + thermal_zone_of_sensor_unregister + thread_group_cputime_adjusted + tick_nohz_get_idle_calls_cpu + tick_nohz_get_sleep_length + time64_to_tm + timecounter_init + timecounter_read + timer_unstable_counter_workaround + topology_set_thermal_pressure + total_swapcache_pages + trace_clock_local + trace_event_buffer_commit + trace_event_buffer_reserve + trace_event_ignore_this_pid + trace_event_raw_init + trace_event_reg + trace_handle_return + trace_output_call + trace_print_array_seq + trace_print_flags_seq + trace_print_hex_seq + trace_print_symbols_seq + trace_raw_output_prep + trace_seq_printf + trace_seq_putc + tracepoint_probe_register + tracepoint_probe_register_prio + tracepoint_probe_unregister + tracing_off + try_module_get + try_to_del_timer_sync + try_wait_for_completion + ttm_bo_bulk_move_lru_tail + ttm_bo_device_init + ttm_bo_device_release + ttm_bo_dma_acc_size + ttm_bo_evict_mm + ttm_bo_eviction_valuable + ttm_bo_glob + ttm_bo_init_reserved + ttm_bo_kmap + ttm_bo_kunmap + ttm_bo_lock_delayed_workqueue + ttm_bo_mem_space + ttm_bo_mmap + ttm_bo_mmap_obj + ttm_bo_move_accel_cleanup + ttm_bo_move_memcpy + ttm_bo_move_to_lru_tail + ttm_bo_move_ttm + ttm_bo_put + ttm_bo_unlock_delayed_workqueue + ttm_bo_validate + ttm_dma_page_alloc_debugfs + ttm_dma_populate + ttm_dma_tt_fini + ttm_dma_unpopulate + ttm_eu_backoff_reservation + ttm_eu_fence_buffer_objects + ttm_eu_reserve_buffers + ttm_page_alloc_debugfs + ttm_populate_and_map_pages + ttm_range_man_fini + ttm_range_man_init + ttm_resource_free + ttm_resource_manager_force_list_clean + ttm_resource_manager_init + ttm_sg_tt_init + ttm_tt_destroy_common + ttm_tt_populate + ttm_tt_set_placement_caching + ttm_unmap_and_unpopulate_pages + tty_flip_buffer_push + tty_insert_flip_string_fixed_flag + tty_kref_put + tty_ldisc_deref + tty_ldisc_ref + tty_port_close + tty_port_destroy + tty_port_hangup + tty_port_init + tty_port_open + tty_port_register_device + tty_port_tty_get + tty_port_tty_wakeup + tty_register_driver + tty_set_operations + tty_standard_install + tty_std_termios + tty_termios_baud_rate + tty_termios_copy_hw + tty_termios_encode_baud_rate + tty_unregister_device + tty_unregister_driver + tty_vhangup + typec_altmode_get_partner + typec_altmode_update_active + typec_get_drvdata + typec_partner_register_altmode + typec_port_register_altmode + typec_register_partner + typec_register_port + typec_set_data_role + typec_set_pwr_opmode + typec_set_pwr_role + typec_switch_get_drvdata + typec_switch_register + typec_switch_unregister + typec_unregister_altmode + typec_unregister_partner + typec_unregister_port + uart_add_one_port + uart_console_device + uart_console_write + uart_get_baud_rate + uart_insert_char + uart_parse_options + uart_register_driver + uart_remove_one_port + uart_resume_port + uart_set_options + uart_suspend_port + uart_try_toggle_sysrq + uart_unregister_driver + uart_update_timeout + uart_write_wakeup + uclamp_eff_value + ucsi_connector_change + ucsi_create + ucsi_destroy + ucsi_get_drvdata + ucsi_register + ucsi_set_drvdata + ucsi_unregister + udp4_hwcsum + ufshcd_auto_hibern8_update + ufshcd_bkops_ctrl + ufshcd_dme_get_attr + ufshcd_dme_set_attr + ufshcd_dump_regs + ufshcd_fixup_dev_quirks + ufshcd_get_local_unipro_ver + ufshcd_get_pwr_dev_param + ufshcd_hold + ufshcd_map_desc_id_to_length + ufshcd_pltfrm_init + ufshcd_pltfrm_resume + ufshcd_pltfrm_runtime_idle + ufshcd_pltfrm_runtime_resume + ufshcd_pltfrm_runtime_suspend + ufshcd_pltfrm_shutdown + ufshcd_pltfrm_suspend + ufshcd_query_attr + ufshcd_query_attr_retry + ufshcd_query_descriptor_retry + ufshcd_query_flag + ufshcd_query_flag_retry + ufshcd_read_desc_param + ufshcd_release + ufshcd_remove + ufshcd_shutdown + ufshcd_system_resume + ufshcd_system_suspend + ufshcd_uic_hibern8_enter + ufshcd_uic_hibern8_exit + uio_unregister_device + unlock_page + unmap_mapping_range + unpin_user_page + unregister_blkdev + unregister_chrdev_region + unregister_console + unregister_die_notifier + unregister_filesystem + unregister_ftrace_export + unregister_inet6addr_notifier + unregister_inetaddr_notifier + unregister_kprobe + unregister_kretprobe + unregister_module_notifier + unregister_netdev + unregister_netdevice_many + unregister_netdevice_notifier + unregister_netdevice_queue + unregister_netevent_notifier + unregister_oom_notifier + unregister_pernet_device + unregister_pernet_subsys + unregister_pm_notifier + unregister_reboot_notifier + unregister_restart_handler + unregister_rpmsg_driver + unregister_shrinker + unregister_syscore_ops + unregister_sysctl_table + unregister_virtio_device + unregister_virtio_driver + unregister_vmap_purge_notifier + up + up_read + up_write + update_devfreq + update_rq_clock + usb_add_function + usb_add_gadget + usb_add_gadget_udc + usb_add_hcd + usb_add_phy_dev + usb_alloc_coherent + usb_alloc_dev + usb_alloc_urb + usb_amd_dev_put + usb_amd_prefetch_quirk + usb_amd_pt_check_port + usb_amd_quirk_pll_check + usb_amd_quirk_pll_disable + usb_amd_quirk_pll_enable + usb_asmedia_modifyflowcontrol + usb_assign_descriptors + usb_autopm_get_interface + usb_autopm_get_interface_no_resume + usb_autopm_put_interface + usb_bulk_msg + usb_calc_bus_time + usb_choose_configuration + usb_composite_setup_continue + usb_control_msg + usb_copy_descriptors + usb_create_hcd + usb_debug_root + usb_decode_ctrl + usb_del_gadget_udc + usb_deregister + usb_deregister_dev + usb_disable_xhci_ports + usb_disabled + usb_enable_autosuspend + usb_enable_intel_xhci_ports + usb_ep_alloc_request + usb_ep_autoconfig + usb_ep_clear_halt + usb_ep_dequeue + usb_ep_disable + usb_ep_enable + usb_ep_fifo_flush + usb_ep_fifo_status + usb_ep_free_request + usb_ep_queue + usb_ep_set_halt + usb_ep_set_maxpacket_limit + usb_find_common_endpoints + usb_find_interface + usb_free_all_descriptors + usb_free_coherent + usb_free_urb + usb_function_register + usb_function_unregister + usb_gadget_giveback_request + usb_gadget_map_request_by_dev + usb_gadget_probe_driver + usb_gadget_set_state + usb_gadget_udc_reset + usb_gadget_unmap_request_by_dev + usb_gadget_unregister_driver + usb_gadget_vbus_connect + usb_gadget_vbus_disconnect + usb_gadget_vbus_draw + usb_gadget_wakeup + usb_get_dev + usb_get_dr_mode + usb_get_gadget_udc_name + usb_get_intf + usb_get_maximum_speed + usb_get_urb + usb_gstrings_attach + usb_hc_died + usb_hcd_check_unlink_urb + usb_hcd_end_port_resume + usb_hcd_giveback_urb + usb_hcd_irq + usb_hcd_is_primary_hcd + usb_hcd_link_urb_to_ep + usb_hcd_map_urb_for_dma + usb_hcd_pci_pm_ops + usb_hcd_pci_probe + usb_hcd_pci_remove + usb_hcd_pci_shutdown + usb_hcd_platform_shutdown + usb_hcd_poll_rh_status + usb_hcd_resume_root_hub + usb_hcd_start_port_resume + usb_hcd_unlink_urb_from_ep + usb_hcds_loaded + usb_hub_clear_tt_buffer + usb_hub_find_child + usb_ifnum_to_if + usb_initialize_gadget + usb_interface_id + usb_kill_urb + usb_match_id + usb_match_one_id + usb_otg_state_string + usb_phy_set_charger_current + usb_poison_anchored_urbs + usb_poison_urb + usb_put_dev + usb_put_function_instance + usb_put_hcd + usb_put_intf + usb_register_dev + usb_register_driver + usb_register_notify + usb_remove_hcd + usb_remove_phy + usb_role_switch_find_by_fwnode + usb_role_switch_get + usb_role_switch_get_drvdata + usb_role_switch_put + usb_role_switch_register + usb_role_switch_set_role + usb_role_switch_unregister + usb_root_hub_lost_power + usb_set_device_state + usb_set_interface + usb_show_dynids + usb_speed_string + usb_store_new_id + usb_string_id + usb_submit_urb + usb_unpoison_urb + usb_unregister_notify + usb_wakeup_notification + usbnet_change_mtu + usbnet_defer_kevent + usbnet_disconnect + usbnet_get_drvinfo + usbnet_get_endpoints + usbnet_get_link + usbnet_get_link_ksettings + usbnet_get_msglevel + usbnet_get_stats64 + usbnet_link_change + usbnet_nway_reset + usbnet_open + usbnet_probe + usbnet_read_cmd + usbnet_read_cmd_nopm + usbnet_resume + usbnet_set_link_ksettings + usbnet_set_msglevel + usbnet_skb_return + usbnet_start_xmit + usbnet_stop + usbnet_suspend + usbnet_tx_timeout + usbnet_unlink_rx_urbs + usbnet_update_max_qlen + usbnet_write_cmd + usbnet_write_cmd_async + usbnet_write_cmd_nopm + usleep_range + uuid_gen + uuid_null + uuid_parse + v4l2_compat_ioctl32 + v4l2_ctrl_find + v4l2_ctrl_handler_free + v4l2_ctrl_handler_init_class + v4l2_ctrl_handler_setup + v4l2_ctrl_log_status + v4l2_ctrl_new_custom + v4l2_ctrl_new_std + v4l2_ctrl_new_std_menu + v4l2_device_register + v4l2_device_register_subdev + v4l2_device_set_name + v4l2_device_unregister + v4l2_device_unregister_subdev + v4l2_event_dequeue + v4l2_event_pending + v4l2_event_queue + v4l2_event_queue_fh + v4l2_event_subscribe + v4l2_event_unsubscribe + v4l2_fh_add + v4l2_fh_del + v4l2_fh_exit + v4l2_fh_init + v4l2_fh_open + v4l2_fh_release + v4l2_i2c_subdev_init + v4l2_m2m_buf_queue + v4l2_m2m_buf_remove + v4l2_m2m_ctx_init + v4l2_m2m_ctx_release + v4l2_m2m_dqbuf + v4l2_m2m_fop_mmap + v4l2_m2m_fop_poll + v4l2_m2m_get_curr_priv + v4l2_m2m_get_vq + v4l2_m2m_init + v4l2_m2m_ioctl_dqbuf + v4l2_m2m_ioctl_querybuf + v4l2_m2m_ioctl_reqbufs + v4l2_m2m_ioctl_streamoff + v4l2_m2m_ioctl_streamon + v4l2_m2m_job_finish + v4l2_m2m_mmap + v4l2_m2m_next_buf + v4l2_m2m_poll + v4l2_m2m_qbuf + v4l2_m2m_querybuf + v4l2_m2m_release + v4l2_m2m_reqbufs + v4l2_m2m_streamoff + v4l2_m2m_streamon + v4l2_m2m_try_schedule + v4l2_s_ctrl + v4l2_subdev_call_wrappers + v4l2_subdev_init + v4l_bound_align_image + vabits_actual + vb2_buffer_done + vb2_common_vm_ops + vb2_create_framevec + vb2_destroy_framevec + vb2_dqbuf + vb2_fop_mmap + vb2_fop_poll + vb2_fop_read + vb2_fop_release + vb2_ioctl_create_bufs + vb2_ioctl_dqbuf + vb2_ioctl_expbuf + vb2_ioctl_qbuf + vb2_ioctl_querybuf + vb2_ioctl_reqbufs + vb2_ioctl_streamoff + vb2_ioctl_streamon + vb2_mmap + vb2_ops_wait_finish + vb2_ops_wait_prepare + vb2_plane_cookie + vb2_plane_vaddr + vb2_poll + vb2_prepare_buf + vb2_qbuf + vb2_querybuf + vb2_queue_init + vb2_queue_release + vb2_reqbufs + vb2_streamoff + vb2_streamon + vb2_vmalloc_memops + vb2_wait_for_all_buffers + vchan_dma_desc_free_list + vchan_find_desc + vchan_init + vchan_tx_desc_free + vchan_tx_submit + vfree + vfs_fsync_range + video_devdata + video_device_alloc + video_device_release + video_device_release_empty + video_ioctl2 + video_unregister_device + virtio_check_driver_offered_feature + virtio_config_changed + virtio_device_freeze + virtio_device_restore + virtio_max_dma_size + virtio_transport_connect + virtio_transport_deliver_tap_pkt + virtio_transport_destruct + virtio_transport_dgram_allow + virtio_transport_dgram_bind + virtio_transport_dgram_dequeue + virtio_transport_dgram_enqueue + virtio_transport_do_socket_init + virtio_transport_free_pkt + virtio_transport_notify_buffer_size + virtio_transport_notify_poll_in + virtio_transport_notify_poll_out + virtio_transport_notify_recv_init + virtio_transport_notify_recv_post_dequeue + virtio_transport_notify_recv_pre_block + virtio_transport_notify_recv_pre_dequeue + virtio_transport_notify_send_init + virtio_transport_notify_send_post_enqueue + virtio_transport_notify_send_pre_block + virtio_transport_notify_send_pre_enqueue + virtio_transport_recv_pkt + virtio_transport_release + virtio_transport_shutdown + virtio_transport_stream_allow + virtio_transport_stream_dequeue + virtio_transport_stream_enqueue + virtio_transport_stream_has_data + virtio_transport_stream_has_space + virtio_transport_stream_is_active + virtio_transport_stream_rcvhiwat + virtqueue_add_inbuf + virtqueue_add_inbuf_ctx + virtqueue_add_outbuf + virtqueue_add_sgs + virtqueue_detach_unused_buf + virtqueue_disable_cb + virtqueue_enable_cb + virtqueue_enable_cb_delayed + virtqueue_enable_cb_prepare + virtqueue_get_avail_addr + virtqueue_get_buf + virtqueue_get_buf_ctx + virtqueue_get_desc_addr + virtqueue_get_used_addr + virtqueue_get_vring_size + virtqueue_is_broken + virtqueue_kick + virtqueue_kick_prepare + virtqueue_notify + virtqueue_poll + vm_event_states + vm_get_page_prot + vm_insert_page + vm_iomap_memory + vm_map_pages + vm_map_ram + vm_mmap + vm_munmap + vm_node_stat + vm_unmap_ram + vm_zone_stat + vmalloc + vmalloc_nr_pages + vmalloc_to_page + vmalloc_to_pfn + vmalloc_user + vmap + vmemdup_user + vmf_insert_mixed + vmf_insert_pfn + vmf_insert_pfn_prot + vprintk + vring_create_virtqueue + vring_del_virtqueue + vring_interrupt + vring_new_virtqueue + vring_transport_features + vscnprintf + vsnprintf + vsock_core_register + vsock_core_unregister + vsock_for_each_connected_socket + vsprintf + vunmap + vzalloc + vzalloc_node + wait_for_completion + wait_for_completion_interruptible + wait_for_completion_interruptible_timeout + wait_for_completion_io_timeout + wait_for_completion_killable + wait_for_completion_killable_timeout + wait_for_completion_timeout + wait_woken + wake_up_if_idle + wake_up_process + wakeup_source_add + wakeup_source_create + wakeup_source_destroy + wakeup_source_register + wakeup_source_remove + wakeup_source_unregister + watchdog_init_timeout + watchdog_register_device + watchdog_set_restart_priority + watchdog_unregister_device + wireless_send_event + woken_wake_function + work_busy + ww_mutex_lock + ww_mutex_lock_interruptible + ww_mutex_unlock + xa_destroy + xa_erase + xa_find + xa_find_after + xa_load + xa_store + xdp_convert_zc_to_xdp_frame + xdp_do_flush + xdp_do_redirect + xdp_return_frame + xdp_return_frame_rx_napi + xdp_rxq_info_reg + xdp_rxq_info_reg_mem_model + xdp_rxq_info_unreg + xdp_warn + xfrm_state_lookup_byspi + xfrm_stateonly_find + xhci_add_endpoint + xhci_address_device + xhci_alloc_command + xhci_alloc_erst + xhci_check_trb_in_td_math + xhci_free_command + xhci_free_erst + xhci_gen_setup + xhci_get_endpoint_index + xhci_get_ep_ctx + xhci_get_slot_ctx + xhci_handle_event + xhci_init_driver + xhci_initialize_ring_info + xhci_link_segments + xhci_queue_stop_endpoint + xhci_resume + xhci_ring_alloc + xhci_ring_cmd_db + xhci_ring_free + xhci_run + xhci_segment_free + xhci_suspend + xhci_trb_virt_to_dma + xhci_update_erst_dequeue + xhci_vendor_get_ops + zone_watermark_ok + zone_watermark_ok_safe From d4091df63c80ad87e4c3256d13405730da54bdc7 Mon Sep 17 00:00:00 2001 From: Jiewen Wang Date: Wed, 27 Oct 2021 17:28:43 +0800 Subject: [PATCH 28/62] ANDROID: GKI: Update symbols list for vivo Add symbol to symbol list for oem module. Functions changes summary: 0 Removed, 0 Changed (2375 filtered out), 1 Added functions Variables changes summary: 0 Removed, 0 Changed (24 filtered out), 1 Added variables 1 Added function: [A] 'function int __traceiter_android_vh_shrink_slab_bypass(void*, gfp_t, int, mem_cgroup*, int, bool*)' 1 Added variable: [A] 'tracepoint __tracepoint_android_vh_shrink_slab_bypass' Bug: 204278767 Change-Id: I075f034ddad2657435429a9f712322a3a207caa6 Signed-off-by: Jiewen Wang --- android/abi_gki_aarch64.xml | 35 ++++++++++++++++++++--------------- android/abi_gki_aarch64_vivo | 2 ++ 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 62fb83bc5f37..3441ee67a643 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -479,6 +479,7 @@ + @@ -5830,6 +5831,7 @@ + @@ -70543,14 +70545,7 @@ - - - - - - - - + @@ -114431,7 +114426,7 @@ - + @@ -115911,6 +115906,15 @@ + + + + + + + + + @@ -116663,6 +116667,7 @@ + @@ -119658,9 +119663,9 @@ - - - + + + @@ -133290,7 +133295,7 @@ - + @@ -136368,8 +136373,8 @@ - - + + diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index 93e96eddb122..a006e93bc3fc 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -1733,6 +1733,7 @@ __traceiter_android_vh_show_max_freq __traceiter_android_vh_show_resume_epoch_val __traceiter_android_vh_show_suspend_epoch_val + __traceiter_android_vh_shrink_slab_bypass __traceiter_android_vh_timer_calc_index __traceiter_android_vh_try_to_unmap_one __traceiter_android_vh_ufs_check_int_errors @@ -1827,6 +1828,7 @@ __tracepoint_android_vh_show_max_freq __tracepoint_android_vh_show_resume_epoch_val __tracepoint_android_vh_show_suspend_epoch_val + __tracepoint_android_vh_shrink_slab_bypass __tracepoint_android_vh_timer_calc_index __tracepoint_android_vh_try_to_unmap_one __tracepoint_android_vh_tune_scan_type From 8d5dd0a5a458f951f0fdc25aba0cb8329b121d51 Mon Sep 17 00:00:00 2001 From: Dan Vacura Date: Fri, 1 Oct 2021 12:00:19 -0500 Subject: [PATCH 29/62] ANDROID: gki_defconfig: enable CONFIG_USB_CONFIGFS_F_UVC Enable the UVC function driver to allow USB gadgets to connect as a standard video device to a host. Bug: 200712777 Signed-off-by: Dan Vacura Change-Id: Ia037f8560664f9e98f28f3fede609764d5d5699d --- arch/arm64/configs/gki_defconfig | 1 + arch/x86/configs/gki_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index ecb15f5a0888..3ae364535af6 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -495,6 +495,7 @@ CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y CONFIG_USB_CONFIGFS_F_UAC2=y CONFIG_USB_CONFIGFS_F_MIDI=y CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y CONFIG_TYPEC=y CONFIG_TYPEC_TCPM=y CONFIG_TYPEC_TCPCI=y diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 41a1b44c4e0a..7c344566df2a 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -446,6 +446,7 @@ CONFIG_USB_CONFIGFS_F_ACC=y CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y CONFIG_USB_CONFIGFS_F_MIDI=y CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y CONFIG_TYPEC=y CONFIG_TYPEC_TCPM=y CONFIG_TYPEC_TCPCI=y From 1c0e68339c9012ecf4251806906ce63401d02691 Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Wed, 27 Oct 2021 09:07:09 -0700 Subject: [PATCH 30/62] ANDROID: f2fs: fix potential deadlock by android ftrace sb_internal#2 --> &s->s_dquot.dqio_sem --> fs_reclaim Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(fs_reclaim); lock(&s->s_dquot.dqio_sem); lock(fs_reclaim); lock(sb_internal#2); *** DEADLOCK *** 3 locks held by kswapd0/133: #0: ffffffda597c93a8 (fs_reclaim){+.+.}-{0:0}, at: __fs_reclaim_acquire+0x4/0x50 #1: ffffffda597bc890 (shrinker_rwsem){++++}-{3:3}, at: shrink_slab+0xa0/0x19c #2: ffffff80d5fb90e0 (&type->s_umount_key#50){.+.+}-{3:3}, at: super_cache_scan+0x40/0x1dc stack backtrace: CPU: 7 PID: 133 Comm: kswapd0 Tainted: G W O 5.10.43-android12-9-g4665ec64f3df #1 Hardware name: MT6879(ENG) (DT) Call trace: dump_backtrace.cfi_jt+0x0/0x8 show_stack+0x1c/0x2c dump_stack_lvl+0xd8/0x16c print_circular_bug+0x2d4/0x2d8 check_noncircular+0x190/0x1a4 validate_chain+0xc54/0x2d34 __lock_acquire+0x7e4/0xed4 lock_acquire+0x114/0x394 f2fs_evict_inode+0x1a0/0x8b8 evict+0xd4/0x2f8 iput+0x1c0/0x258 dentry_unlink_inode+0x16c/0x1dc __dentry_kill+0x128/0x280 shrink_dentry_list+0x6c/0x420 prune_dcache_sb+0x5c/0x90 super_cache_scan+0x13c/0x1dc do_shrink_slab+0x1e0/0x388 shrink_slab+0xf4/0x19c shrink_node_memcgs+0x80/0x25c shrink_node+0x324/0x710 balance_pgdat+0x3a8/0x6a8 kswapd+0x484/0x594 kthread+0x15c/0x1ac ret_from_fork+0x10/0x30 Bug: 201025620 Signed-off-by: Jaegeuk Kim Change-Id: Idaa303eb7c681a56ad5d4e1f6dddbda71f7fece4 --- fs/f2fs/data.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 821da92fe5c2..4a986daad16b 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -3314,7 +3314,13 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping, block_t blkaddr = NULL_ADDR; int err = 0; - if (trace_android_fs_datawrite_start_enabled()) { + /* + * Should avoid quota operations which can make deadlock: + * kswapd -> f2fs_evict_inode -> dquot_drop -> + * f2fs_dquot_commit -> f2fs_write_begin -> + * d_obtain_alias -> __d_alloc -> kmem_cache_alloc(GFP_KERNEL) + */ + if (trace_android_fs_datawrite_start_enabled() && !IS_NOQUOTA(inode)) { char *path, pathbuf[MAX_TRACE_PATHBUF_LEN]; path = android_fstrace_get_pathname(pathbuf, From 75a5637ccf04378c498f0928819de6e17139826e Mon Sep 17 00:00:00 2001 From: Liangliang Li Date: Tue, 26 Oct 2021 21:08:46 +0800 Subject: [PATCH 31/62] ANDROID: GKI: Add a symbol to vendor symbol list Functions changes summary: 0 Removed, 0 Changed (2375 filtered out), 2 Added functions Variables changes summary: 0 Removed, 0 Changed (24 filtered out), 2 Added variables 2 Added functions: [A] 'function int __traceiter_android_vh_filemap_fault_cache_page(void*, vm_fault*, page*)' [A] 'function int __traceiter_android_vh_filemap_fault_get_page(void*, vm_fault*, page**, bool*)' 2 Added variables: [A] 'tracepoint __tracepoint_android_vh_filemap_fault_cache_page' [A] 'tracepoint __tracepoint_android_vh_filemap_fault_get_page' Bug: 204163778 Change-Id: I579eedf59470f5c806e28abe7148a99e52b1ff90 Signed-off-by: Liangliang Li --- android/abi_gki_aarch64.xml | 19 +++++++++++++++++++ android/abi_gki_aarch64_vivo | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 3441ee67a643..bc89c183eac0 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -395,6 +395,8 @@ + + @@ -5735,6 +5737,8 @@ + + @@ -115401,6 +115405,19 @@ + + + + + + + + + + + + + @@ -116571,6 +116588,8 @@ + + diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index a006e93bc3fc..d8703539183d 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -1713,6 +1713,8 @@ __traceiter_android_vh_binder_wakeup_ilocked __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit + __traceiter_android_vh_filemap_fault_cache_page + __traceiter_android_vh_filemap_fault_get_page __traceiter_android_vh_ftrace_dump_buffer __traceiter_android_vh_ftrace_format_check __traceiter_android_vh_ftrace_oops_enter @@ -1807,6 +1809,8 @@ __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit __tracepoint_android_vh_dup_task_struct + __tracepoint_android_vh_filemap_fault_cache_page + __tracepoint_android_vh_filemap_fault_get_page __tracepoint_android_vh_ftrace_dump_buffer __tracepoint_android_vh_ftrace_format_check __tracepoint_android_vh_ftrace_oops_enter From 74782dd0ce1d432cb82762f023da9ea44d5751ec Mon Sep 17 00:00:00 2001 From: Tengfei Fan Date: Thu, 28 Oct 2021 09:19:48 +0800 Subject: [PATCH 32/62] ANDROID: cpuhp/pause: add function define if not define CONFIG_CPUSETS Add define of cpuset_update_active_cpus_affine() for fix compile error when not define CONFIG_CPUSETS. Bug: 204347727 Fixes: 09bd9e940e98 ("ANDROID: cpuhp/pause: schedule cpu_hotplug_work on resume cpu") Change-Id: Icf79df5e22233d15e4e8257a5f54176efbcd975b Signed-off-by: Tengfei Fan Signed-off-by: Maria Yu --- include/linux/cpuset.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h index 4f52d03d61ea..8063ae23c1ff 100644 --- a/include/linux/cpuset.h +++ b/include/linux/cpuset.h @@ -173,6 +173,8 @@ static inline void cpuset_init_smp(void) {} static inline void cpuset_force_rebuild(void) { } +static inline void cpuset_update_active_cpus_affine(int cpu) {} + static inline void cpuset_update_active_cpus(void) { partition_sched_domains(1, NULL, NULL); From ad8da78c87fee8c913c201308aea34827972642f Mon Sep 17 00:00:00 2001 From: Woody Lin Date: Tue, 12 Oct 2021 16:35:21 +0800 Subject: [PATCH 33/62] UPSTREAM: sched/scs: Reset the shadow stack when idle_task_exit Commit f1a0a376ca0c ("sched/core: Initialize the idle task with preemption disabled") removed the init_idle() call from idle_thread_get(). This was the sole call-path on hotplug that resets the Shadow Call Stack (scs) Stack Pointer (sp). Not resetting the scs-sp leads to scs overflow after enough hotplug cycles. Therefore add an explicit scs_task_reset() to the hotplug code to make sure the scs-sp does get reset on hotplug. Fixes: f1a0a376ca0c ("sched/core: Initialize the idle task with preemption disabled") Signed-off-by: Woody Lin [peterz: Changelog] Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Valentin Schneider Link: https://lore.kernel.org/r/20211012083521.973587-1-woodylin@google.com (cherry picked from commit 63acd42c0d4942f74710b11c38602fb14dea7320) Bug: 201047587 Bug: 201771367 Change-Id: I9e48270f8d4c698c140cc3f427cadae636acb6d7 --- kernel/sched/core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 90d05c9fa92d..b519f3a561a0 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6931,6 +6931,7 @@ void idle_task_exit(void) finish_arch_post_lock_switch(); } + scs_task_reset(current); /* finish_cpu(), as ran on the BP, will clean up the active_mm state */ } From f8b361d17da5fa125a9e788d3088599216f33019 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 28 Sep 2021 14:38:19 +0200 Subject: [PATCH 34/62] ANDROID: GKI: rework the ANDROID_KABI_USE() macro to not use __UNIQUE() The __UNIQUE_ID() macro causes problems as it turns out to not be deterministic across different compiler runs as it relies on the __COUNTER__ macro which could have been used on other .h files previous to this .h file being included. This shows up specifically when building with "LTO=thin" vs. "LTO=full" as different build paths seem to be triggered. As the structure name isn't really needed at all here, we were just including it for older compilers that could not handle anonymous structures in a union, just drop the whole thing which resolves the abi naming issue. Bug: 210255585 Reported-by: Giuliano Procida Signed-off-by: Greg Kroah-Hartman Change-Id: I6b9449fa9d26ffc5d66b2f0f3b41e2d5f3003f68 --- include/linux/android_kabi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/android_kabi.h b/include/linux/android_kabi.h index efa52953fe35..9c7b6c035ad3 100644 --- a/include/linux/android_kabi.h +++ b/include/linux/android_kabi.h @@ -63,7 +63,7 @@ _new; \ struct { \ _orig; \ - } __UNIQUE_ID(android_kabi_hide); \ + }; \ __ANDROID_KABI_CHECK_SIZE_ALIGN(_orig, _new); \ } From ea440234c7273fa5030791b6d5a7a4d59c8a81c7 Mon Sep 17 00:00:00 2001 From: Giuliano Procida Date: Fri, 29 Oct 2021 11:08:29 +0100 Subject: [PATCH 35/62] ANDROID: GKI: refresh XML following ANDROID_KABI_USE change The ABI diff is essentially bogus, but included here for completeness. Leaf changes summary: 1 artifact changed Changed leaf types summary: 1 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 'struct xhci_hcd at xhci.h:1756:1' changed: type size hasn't changed 1 data member deletion: 'union {xhci_vendor_ops* vendor_ops; struct {u64 android_kabi_reserved1;} __UNIQUE_ID_android_kabi_hide322; union {};}', at offset 59392 (in bits) at xhci.h:1935:1 18 impacted interfaces Bug: 210255585 Change-Id: Ic646e0edd2ab19fcd9b7b88b6e6a604299fc4824 Signed-off-by: Giuliano Procida --- android/abi_gki_aarch64.xml | 10902 +++++++++++++++++----------------- 1 file changed, 5422 insertions(+), 5480 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index bc89c183eac0..6c512af3f193 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -7760,17 +7760,6 @@ - - - - - - - - - - - @@ -8552,9 +8541,9 @@ - - - + + + @@ -8567,6 +8556,7 @@ + @@ -8648,6 +8638,7 @@ + @@ -9061,14 +9052,7 @@ - - - - - - - - + @@ -9076,6 +9060,13 @@ + + + + + + + @@ -11508,7 +11499,6 @@ - @@ -11915,8 +11905,8 @@ - - + + @@ -12549,23 +12539,7 @@ - - - - - - - - - - - - - - - - - + @@ -13212,7 +13186,6 @@ - @@ -14762,6 +14735,12 @@ + + + + + + @@ -15256,9 +15235,6 @@ - - - @@ -15458,29 +15434,7 @@ - - - - - - - - - - - - - - - - - - - - - - - + @@ -16835,8 +16789,8 @@ - - + + @@ -18364,6 +18318,7 @@ + @@ -18737,7 +18692,11 @@ - + + + + + @@ -19692,6 +19651,7 @@ + @@ -19889,6 +19849,7 @@ + @@ -20326,6 +20287,14 @@ + + + + + + + + @@ -20676,7 +20645,7 @@ - + @@ -21390,7 +21359,6 @@ - @@ -22131,11 +22099,6 @@ - - - - - @@ -24294,7 +24257,7 @@ - + @@ -24518,7 +24481,6 @@ - @@ -24823,23 +24785,7 @@ - - - - - - - - - - - - - - - - - + @@ -25501,7 +25447,7 @@ - + @@ -25878,6 +25824,7 @@ + @@ -25955,7 +25902,7 @@ - + @@ -26012,7 +25959,6 @@ - @@ -26366,7 +26312,6 @@ - @@ -26989,7 +26934,7 @@ - + @@ -27924,6 +27869,7 @@ + @@ -29835,17 +29781,6 @@ - - - - - - - - - - - @@ -31679,9 +31614,9 @@ - - - + + + @@ -32555,6 +32490,7 @@ + @@ -32809,68 +32745,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -33375,6 +33250,7 @@ + @@ -33789,7 +33665,6 @@ - @@ -33988,7 +33863,7 @@ - + @@ -37533,6 +37408,7 @@ + @@ -38322,8 +38198,8 @@ - - + + @@ -39294,6 +39170,17 @@ + + + + + + + + + + + @@ -39573,9 +39460,9 @@ - - - + + + @@ -40082,7 +39969,6 @@ - @@ -41040,6 +40926,7 @@ + @@ -43541,7 +43428,15 @@ + + + + + + + + @@ -43878,7 +43773,18 @@ - + + + + + + + + + + + + @@ -43974,12 +43880,12 @@ - - - - - - + + + + + + @@ -44084,6 +43990,7 @@ + @@ -44864,21 +44771,21 @@ - + - + - + - + - + - + @@ -45324,6 +45231,7 @@ + @@ -46974,8 +46882,8 @@ - - + + @@ -47321,35 +47229,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -47910,14 +47790,7 @@ - - - - - - - - + @@ -48563,6 +48436,11 @@ + + + + + @@ -48968,7 +48846,7 @@ - + @@ -49094,11 +48972,6 @@ - - - - - @@ -49404,7 +49277,7 @@ - + @@ -49552,7 +49425,56 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -49893,7 +49815,6 @@ - @@ -50829,7 +50750,7 @@ - + @@ -51674,8 +51595,26 @@ + + + + + + + + + + + + + + + + + + @@ -51934,6 +51873,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -52121,7 +52080,6 @@ - @@ -52711,23 +52669,7 @@ - - - - - - - - - - - - - - - - - + @@ -53089,6 +53031,7 @@ + @@ -54019,9 +53962,9 @@ - - - + + + @@ -54741,7 +54684,6 @@ - @@ -55326,7 +55268,7 @@ - + @@ -55791,7 +55733,7 @@ - + @@ -56652,6 +56594,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -57996,6 +57958,7 @@ + @@ -58458,6 +58421,11 @@ + + + + + @@ -59682,7 +59650,44 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -60872,7 +60877,65 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -61649,6 +61712,7 @@ + @@ -62598,17 +62662,7 @@ - - - - - - - - - - - + @@ -63674,7 +63728,7 @@ - + @@ -64168,10 +64222,10 @@ - - - - + + + + @@ -64221,12 +64275,6 @@ - - - - - - @@ -64486,7 +64534,6 @@ - @@ -64810,7 +64857,47 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -65405,6 +65492,11 @@ + + + + + @@ -66431,6 +66523,11 @@ + + + + + @@ -66891,7 +66988,7 @@ - + @@ -68461,7 +68558,7 @@ - + @@ -68755,6 +68852,7 @@ + @@ -68951,7 +69049,6 @@ - @@ -69573,6 +69670,17 @@ + + + + + + + + + + + @@ -70549,7 +70657,14 @@ - + + + + + + + + @@ -70683,6 +70798,14 @@ + + + + + + + + @@ -71371,8 +71494,8 @@ - - + + @@ -71491,6 +71614,7 @@ + @@ -72177,8 +72301,8 @@ - - + + @@ -72250,7 +72374,6 @@ - @@ -72715,7 +72838,38 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -72826,7 +72980,7 @@ - + @@ -75506,6 +75660,7 @@ + @@ -76913,11 +77068,11 @@ - + - + @@ -77970,12 +78125,12 @@ - - - - - - + + + + + + @@ -79261,7 +79416,6 @@ - @@ -79501,6 +79655,7 @@ + @@ -80226,7 +80381,6 @@ - @@ -80533,231 +80687,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -81038,7 +80968,6 @@ - @@ -81111,9 +81040,6 @@ - - - @@ -81130,6 +81056,11 @@ + + + + + @@ -81152,6 +81083,7 @@ + @@ -81612,7 +81544,7 @@ - + @@ -81688,6 +81620,14 @@ + + + + + + + + @@ -84765,7 +84705,6 @@ - @@ -85384,7 +85323,7 @@ - + @@ -86065,9 +86004,9 @@ - - - + + + @@ -86536,7 +86475,26 @@ - + + + + + + + + + + + + + + + + + + + + @@ -86561,7 +86519,7 @@ - + @@ -86586,7 +86544,6 @@ - @@ -86625,7 +86582,6 @@ - @@ -88038,7 +87994,7 @@ - + @@ -88669,8 +88625,8 @@ - - + + @@ -89739,6 +89695,7 @@ + @@ -89899,14 +89856,6 @@ - - - - - - - - @@ -90341,20 +90290,7 @@ - - - - - - - - - - - - - - + @@ -90911,7 +90847,7 @@ - + @@ -91086,7 +91022,7 @@ - + @@ -91381,7 +91317,6 @@ - @@ -91517,12 +91452,12 @@ - + - + @@ -93087,6 +93022,7 @@ + @@ -93599,6 +93535,17 @@ + + + + + + + + + + + @@ -94361,7 +94308,7 @@ - + @@ -94919,7 +94866,7 @@ - + @@ -95357,7 +95304,7 @@ - + @@ -96063,6 +96010,9 @@ + + + @@ -97302,7 +97252,6 @@ - @@ -97578,8 +97527,8 @@ - - + + @@ -97788,8 +97737,8 @@ - - + + @@ -98944,7 +98893,6 @@ - @@ -99920,14 +99868,7 @@ - - - - - - - - + @@ -101406,10 +101347,10 @@ - - - + + + @@ -101433,7 +101374,7 @@ - + @@ -101574,8 +101515,8 @@ - - + + @@ -102175,6 +102116,7 @@ + @@ -102443,7 +102385,6 @@ - @@ -102969,20 +102910,7 @@ - - - - - - - - - - - - - - + @@ -103041,9 +102969,6 @@ - - - @@ -106451,7 +106376,6 @@ - @@ -106466,6 +106390,20 @@ + + + + + + + + + + + + + + @@ -106800,7 +106738,6 @@ - @@ -110127,7 +110064,7 @@ - + @@ -110725,6 +110662,11 @@ + + + + + @@ -111051,7 +110993,6 @@ - @@ -112807,6 +112748,7 @@ + @@ -112891,6 +112833,7 @@ + @@ -113009,8 +112952,8 @@ - - + + @@ -113547,7 +113490,6 @@ - @@ -116958,9 +116900,9 @@ - - - + + + @@ -116971,33 +116913,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + @@ -117007,27 +116949,27 @@ - - - + + + - - - + + + - - - + + + - - - + + + @@ -117037,8 +116979,8 @@ - - + + @@ -117057,8 +116999,8 @@ - - + + @@ -117074,57 +117016,57 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + @@ -117135,16 +117077,16 @@ - - + + - - + + @@ -117168,12 +117110,12 @@ - - - - - - + + + + + + @@ -117190,9 +117132,9 @@ - - - + + + @@ -117208,33 +117150,33 @@ - - + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + @@ -117247,22 +117189,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -117336,13 +117278,13 @@ - - - - - - - + + + + + + + @@ -117351,29 +117293,29 @@ - - - + + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -117415,11 +117357,11 @@ - - - - - + + + + + @@ -117439,14 +117381,14 @@ - - + + - - - - + + + + @@ -117469,15 +117411,15 @@ - - - - + + + + - - - + + + @@ -117485,11 +117427,11 @@ - - - - - + + + + + @@ -117540,21 +117482,21 @@ - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -117595,18 +117537,18 @@ - - + + - - - + + + - - - + + + @@ -117639,17 +117581,17 @@ - - - - + + + + - - - - - + + + + + @@ -117660,58 +117602,58 @@ - - - - + + + + - - + + - - - + + + - - - + + + - - + + - - - - + + + + - - + + - - + + - - + + - - - - - + + + + + - - - + + + @@ -117720,49 +117662,49 @@ - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -117772,10 +117714,10 @@ - - - - + + + + @@ -117819,17 +117761,17 @@ - - + + - - + + - - - + + + @@ -117864,10 +117806,10 @@ - - - - + + + + @@ -117899,13 +117841,13 @@ - - - + + + - - + + @@ -117936,8 +117878,8 @@ - - + + @@ -117946,8 +117888,8 @@ - - + + @@ -117969,8 +117911,8 @@ - - + + @@ -118017,8 +117959,8 @@ - - + + @@ -118040,10 +117982,10 @@ - - - - + + + + @@ -118079,9 +118021,9 @@ - - - + + + @@ -118225,16 +118167,16 @@ - - + + - - + + @@ -118283,26 +118225,26 @@ - - - - + + + + - - - - + + + + - - - + + + - - - + + + @@ -118311,31 +118253,31 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -118353,9 +118295,9 @@ - - - + + + @@ -118403,67 +118345,67 @@ - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + @@ -118479,16 +118421,16 @@ - - + + - - - - - - + + + + + + @@ -118509,33 +118451,33 @@ - - + + - - + + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -118545,8 +118487,8 @@ - - + + @@ -118559,8 +118501,8 @@ - - + + @@ -118630,9 +118572,9 @@ - - - + + + @@ -118671,11 +118613,11 @@ - - - - - + + + + + @@ -118691,19 +118633,19 @@ - - - + + + - - - + + + - - - + + + @@ -118735,9 +118677,9 @@ - - - + + + @@ -118821,14 +118763,14 @@ - - - + + + - - - + + + @@ -118837,65 +118779,65 @@ - - - + + + - - - - + + + + - - + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -118904,48 +118846,48 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -118956,8 +118898,8 @@ - - + + @@ -119075,8 +119017,8 @@ - - + + @@ -119178,28 +119120,28 @@ - - - + + + - - + + - - - - - + + + + + @@ -119214,11 +119156,11 @@ - - - - - + + + + + @@ -119230,11 +119172,11 @@ - - - - - + + + + + @@ -119253,8 +119195,8 @@ - - + + @@ -119291,10 +119233,10 @@ - - - - + + + + @@ -119332,22 +119274,22 @@ - - + + - - - - + + + + - - + + - - + + @@ -119374,22 +119316,22 @@ - - + + - - - - + + + + - - - + + + @@ -119450,8 +119392,8 @@ - - + + @@ -119482,18 +119424,18 @@ - - + + - - - + + + - - - + + + @@ -119505,8 +119447,8 @@ - - + + @@ -119522,9 +119464,9 @@ - - - + + + @@ -119557,12 +119499,12 @@ - - + + - - + + @@ -119573,23 +119515,23 @@ - - + + - - - + + + - - - - + + + + @@ -119604,9 +119546,9 @@ - - - + + + @@ -119625,8 +119567,8 @@ - - + + @@ -119646,58 +119588,58 @@ - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - + - + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -119740,12 +119682,12 @@ - - + + - - + + @@ -119774,10 +119716,10 @@ - - - - + + + + @@ -119832,42 +119774,42 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - + + - - - + + + - - - + + + - + @@ -119902,10 +119844,10 @@ - - - - + + + + @@ -119913,9 +119855,9 @@ - - - + + + @@ -119925,7 +119867,7 @@ - + @@ -119936,8 +119878,8 @@ - - + + @@ -119954,22 +119896,22 @@ - - + + - - - + + + - - - + + + @@ -120019,11 +119961,11 @@ - - - - - + + + + + @@ -120031,44 +119973,44 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -120083,8 +120025,8 @@ - - + + @@ -120105,18 +120047,18 @@ - - - + + + - - - + + + @@ -120133,9 +120075,9 @@ - - - + + + @@ -120146,11 +120088,11 @@ - - - - - + + + + + @@ -120160,8 +120102,8 @@ - - + + @@ -120177,18 +120119,18 @@ - - + + - - + + - - - - + + + + @@ -120219,12 +120161,12 @@ - - + + - - + + @@ -120233,7 +120175,7 @@ - + @@ -120264,11 +120206,11 @@ - - - - - + + + + + @@ -120278,25 +120220,25 @@ - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -120333,11 +120275,11 @@ - - - - - + + + + + @@ -120347,11 +120289,11 @@ - - - - - + + + + + @@ -120383,9 +120325,9 @@ - - - + + + @@ -120396,8 +120338,8 @@ - - + + @@ -120407,9 +120349,9 @@ - - - + + + @@ -120418,11 +120360,11 @@ - - - - - + + + + + @@ -120435,16 +120377,16 @@ - - + + - - + + - - + + @@ -120455,8 +120397,8 @@ - - + + @@ -120492,49 +120434,49 @@ - - + + - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -120556,9 +120498,9 @@ - - - + + + @@ -120571,9 +120513,9 @@ - - - + + + @@ -120595,10 +120537,10 @@ - - - - + + + + @@ -120629,15 +120571,15 @@ - - - - + + + + - - - + + + @@ -120657,8 +120599,8 @@ - - + + @@ -120674,8 +120616,8 @@ - - + + @@ -120683,13 +120625,13 @@ - - + + - - - + + + @@ -120700,9 +120642,9 @@ - - - + + + @@ -120719,16 +120661,16 @@ - - + + - - + + @@ -120753,9 +120695,9 @@ - - - + + + @@ -120845,9 +120787,9 @@ - - - + + + @@ -120860,17 +120802,17 @@ - - - - + + + + - - - - + + + + @@ -120878,10 +120820,10 @@ - - - - + + + + @@ -120889,9 +120831,9 @@ - - - + + + @@ -120912,11 +120854,11 @@ - - - - - + + + + + @@ -120988,20 +120930,20 @@ - - + + - - + + - - + + @@ -121014,8 +120956,8 @@ - - + + @@ -121037,12 +120979,12 @@ - - - - - - + + + + + + @@ -121051,40 +120993,40 @@ - - - + + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -121119,28 +121061,28 @@ - - - + + + - - + + - - - - + + + + - - - + + + @@ -121162,10 +121104,10 @@ - - - - + + + + @@ -121187,11 +121129,11 @@ - - - - - + + + + + @@ -121214,15 +121156,15 @@ - - - + + + - - - - + + + + @@ -121239,14 +121181,14 @@ - - - + + + - - - + + + @@ -121275,22 +121217,22 @@ - - + + - - + + - - - - + + + + @@ -121313,10 +121255,10 @@ - - - - + + + + @@ -121324,15 +121266,15 @@ - - - - + + + + - - - + + + @@ -121439,11 +121381,11 @@ - - - - - + + + + + @@ -121641,29 +121583,29 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -121673,10 +121615,10 @@ - - - - + + + + @@ -121715,14 +121657,14 @@ - - - - - - - - + + + + + + + + @@ -121735,9 +121677,9 @@ - - - + + + @@ -121770,8 +121712,8 @@ - - + + @@ -121838,14 +121780,14 @@ - - - + + + - - - + + + @@ -121853,10 +121795,10 @@ - - - - + + + + @@ -121901,15 +121843,15 @@ - - - - + + + + - - - + + + @@ -122008,16 +121950,16 @@ - - - + + + - - - - - + + + + + @@ -122067,46 +122009,46 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - - + + + + + - - + + - - + + @@ -122201,9 +122143,9 @@ - - - + + + @@ -122225,17 +122167,17 @@ - - + + - - - + + + - - + + @@ -122243,15 +122185,15 @@ - - - + + + - - - - + + + + @@ -122262,34 +122204,34 @@ - - + + - - - - + + + + - - + + - - - + + + - - - - + + + + @@ -122301,9 +122243,9 @@ - - - + + + @@ -122311,8 +122253,8 @@ - - + + @@ -122323,15 +122265,15 @@ - + - - - - - - + + + + + + @@ -122343,13 +122285,13 @@ - - - - + + + + - - + + @@ -122369,10 +122311,10 @@ - - - - + + + + @@ -122522,46 +122464,46 @@ - - - + + + - - - + + + - - + + - - - - - + + + + + - - + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -122694,8 +122636,8 @@ - - + + @@ -122728,16 +122670,16 @@ - - + + - - + + - - + + @@ -122749,8 +122691,8 @@ - - + + @@ -122761,8 +122703,8 @@ - - + + @@ -122782,9 +122724,9 @@ - - - + + + @@ -122794,62 +122736,62 @@ - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -122867,14 +122809,14 @@ - - - + + + - - - + + + @@ -122909,13 +122851,13 @@ - - - - - - - + + + + + + + @@ -123139,62 +123081,62 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + @@ -123210,15 +123152,15 @@ - - + + - - - - - + + + + + @@ -123229,10 +123171,10 @@ - - - - + + + + @@ -123261,8 +123203,8 @@ - - + + @@ -123270,9 +123212,9 @@ - - - + + + @@ -123309,9 +123251,9 @@ - - - + + + @@ -123320,8 +123262,8 @@ - - + + @@ -123329,19 +123271,19 @@ - - - - - + + + + + - - - - - - + + + + + + @@ -123349,20 +123291,20 @@ - - + + - - + + - - + + - - + + @@ -123375,17 +123317,17 @@ - - + + - - + + - - - + + + @@ -123432,19 +123374,19 @@ - - - - - - - + + + + + + + - - - + + + @@ -123452,17 +123394,17 @@ - - - + + + - - + + @@ -123480,20 +123422,20 @@ - - + + - - + + - - + + @@ -123506,11 +123448,11 @@ - - - - - + + + + + @@ -123521,33 +123463,33 @@ - - - + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -123831,23 +123773,23 @@ - - + + - - - - + + + + - - - + + + @@ -123863,12 +123805,12 @@ - - - - - - + + + + + + @@ -123920,20 +123862,20 @@ - - + + - - - - + + + + - - - - + + + + @@ -124088,10 +124030,10 @@ - - - - + + + + @@ -124141,9 +124083,9 @@ - - - + + + @@ -124272,19 +124214,19 @@ - - - + + + - - - + + + - - - + + + @@ -124385,8 +124327,8 @@ - - + + @@ -124408,9 +124350,9 @@ - - - + + + @@ -124438,8 +124380,8 @@ - - + + @@ -124454,24 +124396,24 @@ - - + + - - - + + + - - - - + + + + - - - + + + @@ -124490,9 +124432,9 @@ - - - + + + @@ -124506,18 +124448,18 @@ - - + + - - - + + + - - - + + + @@ -124538,9 +124480,9 @@ - - - + + + @@ -124571,28 +124513,28 @@ - - + + - - + + - - - + + + - - - - + + + + - - - + + + @@ -124603,83 +124545,83 @@ - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + @@ -124735,17 +124677,17 @@ - - + + - - + + - - - + + + @@ -124759,20 +124701,20 @@ - - + + - - + + - - + + @@ -124841,9 +124783,9 @@ - - - + + + @@ -124851,44 +124793,44 @@ - - + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + @@ -124898,12 +124840,12 @@ - - - - - - + + + + + + @@ -124914,9 +124856,9 @@ - - - + + + @@ -124924,18 +124866,18 @@ - - - - + + + + - - - - - - - + + + + + + + @@ -124950,30 +124892,30 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -125009,8 +124951,8 @@ - - + + @@ -125086,20 +125028,20 @@ - - + + - - - - - - - - - - + + + + + + + + + + @@ -125108,19 +125050,19 @@ - - - + + + - - - - + + + + - - - + + + @@ -125147,36 +125089,36 @@ - - - - + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -125415,8 +125357,8 @@ - - + + @@ -125430,13 +125372,13 @@ - - + + - - - + + + @@ -125475,14 +125417,14 @@ - - - + + + - - - + + + @@ -125490,17 +125432,17 @@ - - - - + + + + - - + + @@ -125515,9 +125457,9 @@ - - - + + + @@ -125531,50 +125473,50 @@ - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - + + @@ -125584,15 +125526,15 @@ - - - + + + - - - - + + + + @@ -125625,27 +125567,27 @@ - - - - + + + + - - - - - + + + + + - - - + + + - - + + @@ -125659,9 +125601,9 @@ - - - + + + @@ -125670,30 +125612,30 @@ - - - + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -125709,26 +125651,26 @@ - - + + - - - + + + - - + + - - - + + + @@ -125745,8 +125687,8 @@ - - + + @@ -125761,8 +125703,8 @@ - - + + @@ -125810,18 +125752,18 @@ - - - + + + - - + + - - - + + + @@ -125829,13 +125771,13 @@ - - + + - - - + + + @@ -125843,9 +125785,9 @@ - - - + + + @@ -125903,8 +125845,8 @@ - - + + @@ -125913,9 +125855,9 @@ - - - + + + @@ -125928,8 +125870,8 @@ - - + + @@ -125972,12 +125914,12 @@ - - + + - - + + @@ -126014,35 +125956,35 @@ - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - + + + @@ -126054,13 +125996,13 @@ - - - + + + - - + + @@ -126103,33 +126045,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + @@ -126150,8 +126092,8 @@ - - + + @@ -126176,10 +126118,10 @@ - - - - + + + + @@ -126189,12 +126131,12 @@ - - + + - - + + @@ -126205,17 +126147,17 @@ - - - - - - - + + + + + + + - - + + @@ -126232,8 +126174,8 @@ - - + + @@ -126259,15 +126201,15 @@ - - + + - - - - - + + + + + @@ -126279,8 +126221,8 @@ - - + + @@ -126306,8 +126248,8 @@ - - + + @@ -126317,20 +126259,20 @@ - - + + - + - - - + + + @@ -126344,41 +126286,41 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -126388,13 +126330,13 @@ - - + + - - - + + + @@ -126408,41 +126350,41 @@ - - - - - - + + + + + + - - + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + @@ -126452,8 +126394,8 @@ - - + + @@ -126465,18 +126407,18 @@ - - + + - - - - + + + + @@ -126500,23 +126442,23 @@ - - - + + + - - - + + + - - - + + + - - + + @@ -126529,9 +126471,9 @@ - - - + + + @@ -126539,29 +126481,29 @@ - - - - + + + + - - + + - - - - - + + + + + - - - - - - + + + + + + @@ -126594,9 +126536,9 @@ - - - + + + @@ -126605,13 +126547,13 @@ - - + + - - - + + + @@ -126704,8 +126646,8 @@ - - + + @@ -126730,13 +126672,13 @@ - - - + + + - - + + @@ -126781,27 +126723,27 @@ - - + + - + - - - + + + - - + + - - + + @@ -126852,38 +126794,38 @@ - - - - + + + + - - - - - - - - + + + + + + + + - - + + - - + + - + - - + + @@ -126894,9 +126836,9 @@ - - - + + + @@ -126911,26 +126853,26 @@ - - + + - - - - + + + + - - - - - - + + + + + + - - + + @@ -126945,28 +126887,28 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - - + + + + @@ -126981,28 +126923,28 @@ - - - - - + + + + + - - + + - - - - - + + + + + - - - - + + + + @@ -127024,18 +126966,18 @@ - - + + - - + + - - + + @@ -127058,12 +127000,12 @@ - - + + - - + + @@ -127100,9 +127042,9 @@ - - - + + + @@ -127137,81 +127079,81 @@ - - - + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -127336,12 +127278,12 @@ - - + + - - + + @@ -127384,14 +127326,14 @@ - - + + - - - - + + + + @@ -127412,36 +127354,36 @@ - - - - - + + + + + - - + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -127452,39 +127394,39 @@ - - + + - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - - - + + + + @@ -127510,14 +127452,14 @@ - - + + - - - - + + + + @@ -127534,8 +127476,8 @@ - - + + @@ -127625,14 +127567,14 @@ - - - - - - - - + + + + + + + + @@ -127642,8 +127584,8 @@ - - + + @@ -127667,9 +127609,9 @@ - - - + + + @@ -127689,18 +127631,18 @@ - - - - + + + + - - - + + + @@ -127708,27 +127650,27 @@ - - - - - - + + + + + + - - - + + + - - - + + + - - - + + + @@ -127738,8 +127680,8 @@ - - + + @@ -127760,8 +127702,8 @@ - - + + @@ -127776,8 +127718,8 @@ - - + + @@ -127810,20 +127752,20 @@ - - + + - - + + - - + + @@ -127860,12 +127802,12 @@ - - + + - - + + @@ -127873,34 +127815,34 @@ - - + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -127982,9 +127924,9 @@ - - - + + + @@ -128145,29 +128087,29 @@ - - - + + + - - + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -128175,47 +128117,47 @@ - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - - - + + + + + + - - - - - + + + + + @@ -128250,8 +128192,8 @@ - - + + @@ -128351,13 +128293,13 @@ - - - + + + - - + + @@ -128368,15 +128310,15 @@ - - - - - - - - - + + + + + + + + + @@ -128412,9 +128354,9 @@ - - - + + + @@ -128440,30 +128382,30 @@ - - - + + + - - - - + + + + - - - - + + + + - - - + + + @@ -128476,10 +128418,10 @@ - - - - + + + + @@ -128487,11 +128429,11 @@ - - - - - + + + + + @@ -128514,10 +128456,10 @@ - - - - + + + + @@ -128530,20 +128472,20 @@ - - - + + + - - - - + + + + - + - - + + @@ -128553,9 +128495,9 @@ - - - + + + @@ -128644,14 +128586,14 @@ - - - + + + - - + + @@ -128727,8 +128669,8 @@ - - + + @@ -128738,66 +128680,66 @@ - - + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - + + - + - - - - + + + + @@ -128817,21 +128759,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -128842,23 +128784,23 @@ - - - - - - - - + + + + + + + + - - + + - - - + + + @@ -128867,10 +128809,10 @@ - - - - + + + + @@ -128902,46 +128844,46 @@ - - - - + + + + - - - + + + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - - + + + @@ -128950,31 +128892,31 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -128983,23 +128925,23 @@ - - - + + + - - - + + + - - - + + + @@ -129007,34 +128949,34 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + @@ -129044,10 +128986,10 @@ - - - - + + + + @@ -129063,10 +129005,10 @@ - - - - + + + + @@ -129076,10 +129018,10 @@ - - - - + + + + @@ -129089,37 +129031,37 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -129130,9 +129072,9 @@ - - - + + + @@ -129146,11 +129088,11 @@ - - - - - + + + + + @@ -129182,11 +129124,11 @@ - - + + - + @@ -129203,15 +129145,15 @@ - - + + - - + + - - + + @@ -129231,8 +129173,8 @@ - - + + @@ -129242,8 +129184,8 @@ - - + + @@ -129255,8 +129197,8 @@ - - + + @@ -129270,18 +129212,18 @@ - - - + + + - - - - + + + + - - + + @@ -129289,10 +129231,10 @@ - - - - + + + + @@ -129305,14 +129247,14 @@ - - - - + + + + - - + + @@ -129348,18 +129290,18 @@ - - - + + + - - - + + + @@ -129370,8 +129312,8 @@ - - + + @@ -129382,29 +129324,29 @@ - - - - + + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -129423,11 +129365,11 @@ - - - - - + + + + + @@ -129435,8 +129377,8 @@ - - + + @@ -129454,11 +129396,11 @@ - - - - - + + + + + @@ -129486,21 +129428,21 @@ - - - + + + - - - - + + + + - - - - + + + + @@ -129513,9 +129455,9 @@ - - - + + + @@ -129526,13 +129468,13 @@ - - + + - - - + + + @@ -129540,50 +129482,50 @@ - - - + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -129597,8 +129539,8 @@ - - + + @@ -129674,9 +129616,9 @@ - - - + + + @@ -129710,12 +129652,12 @@ - - + + - - - + + + @@ -129725,17 +129667,17 @@ - - - + + + - - - + + + - + @@ -129746,9 +129688,9 @@ - - - + + + @@ -129813,10 +129755,10 @@ - - - - + + + + @@ -129844,13 +129786,13 @@ - - - - - - - + + + + + + + @@ -130037,12 +129979,12 @@ - - + + - - + + @@ -130054,11 +129996,11 @@ - - - - - + + + + + @@ -130099,8 +130041,8 @@ - - + + @@ -130153,8 +130095,8 @@ - - + + @@ -130166,9 +130108,9 @@ - - - + + + @@ -130179,28 +130121,28 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - + + + + + @@ -130211,9 +130153,9 @@ - - - + + + @@ -130274,8 +130216,8 @@ - - + + @@ -130314,9 +130256,9 @@ - - - + + + @@ -130372,8 +130314,8 @@ - - + + @@ -130426,51 +130368,51 @@ - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + @@ -130478,18 +130420,18 @@ - - - - + + + + - - + + @@ -130497,14 +130439,14 @@ - - - - + + + + - - - + + + @@ -130540,17 +130482,17 @@ - - + + - - - + + + @@ -130560,9 +130502,9 @@ - - - + + + @@ -130604,12 +130546,12 @@ - - + + - - + + @@ -130623,67 +130565,67 @@ - - - + + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + @@ -130691,19 +130633,19 @@ - - + + - - + + - - - - - + + + + + @@ -130714,41 +130656,41 @@ - - - - + + + + - - - + + + - - + + - - - - - + + + + + - - + + - - + + @@ -130757,16 +130699,16 @@ - - - - + + + + - - - - + + + + @@ -130787,11 +130729,11 @@ - - - - - + + + + + @@ -130808,24 +130750,24 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + @@ -130860,12 +130802,12 @@ - - + + - - + + @@ -130890,18 +130832,18 @@ - - - + + + - - + + - - - + + + @@ -130925,18 +130867,18 @@ - - - - - + + + + + - - - - - + + + + + @@ -130947,19 +130889,19 @@ - - - - + + + + - - + + - - - + + + @@ -130978,14 +130920,14 @@ - - - + + + - - - + + + @@ -131011,9 +130953,9 @@ - - - + + + @@ -131026,22 +130968,22 @@ - - - - + + + + - - + + - - + + @@ -131055,43 +130997,43 @@ - - + + - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + @@ -131104,9 +131046,9 @@ - - - + + + @@ -131139,14 +131081,14 @@ - - - - + + + + - - + + @@ -131157,44 +131099,44 @@ - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -131228,16 +131170,16 @@ - - - - - - + + + + + + - - - + + + @@ -131245,9 +131187,9 @@ - - - + + + @@ -131291,33 +131233,33 @@ - - - + + + - - - + + + - - + + - - + + - - - + + + - - - - + + + + @@ -131342,9 +131284,9 @@ - - - + + + @@ -131360,32 +131302,32 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - - + + + @@ -131394,9 +131336,9 @@ - - - + + + @@ -131404,74 +131346,74 @@ - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -131483,42 +131425,42 @@ - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - + + @@ -131533,8 +131475,8 @@ - - + + @@ -131554,8 +131496,8 @@ - - + + @@ -131569,61 +131511,61 @@ - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - + + + + @@ -131641,12 +131583,12 @@ - - - - - - + + + + + + @@ -131657,12 +131599,12 @@ - - - - - - + + + + + + @@ -131677,9 +131619,9 @@ - - - + + + @@ -131692,15 +131634,15 @@ - - + + - - - - - + + + + + @@ -131717,10 +131659,10 @@ - - - - + + + + @@ -131740,10 +131682,10 @@ - - - - + + + + @@ -131769,8 +131711,8 @@ - - + + @@ -131781,8 +131723,8 @@ - - + + @@ -131889,25 +131831,25 @@ - - + + - - - - - - + + + + + + - - - + + + - - + + @@ -131933,8 +131875,8 @@ - - + + @@ -131949,16 +131891,16 @@ - - + + - - + + - - + + @@ -132043,19 +131985,19 @@ - - - + + + - - - + + + - - - + + + @@ -132070,8 +132012,8 @@ - - + + @@ -132102,9 +132044,9 @@ - - - + + + @@ -132134,14 +132076,14 @@ - - - + + + - - - + + + @@ -132154,9 +132096,9 @@ - - - + + + @@ -132164,10 +132106,10 @@ - - - - + + + + @@ -132181,12 +132123,12 @@ - - + + - - + + @@ -132207,9 +132149,9 @@ - - - + + + @@ -132221,9 +132163,9 @@ - - - + + + @@ -132271,8 +132213,8 @@ - - + + @@ -132318,9 +132260,9 @@ - - - + + + @@ -132336,10 +132278,10 @@ - - - - + + + + @@ -132360,10 +132302,10 @@ - - - - + + + + @@ -132396,17 +132338,17 @@ - - + + - - - + + + @@ -132420,40 +132362,40 @@ - - + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - + + - - + + - - + + @@ -132475,20 +132417,20 @@ - - - - - - + + + + + + - - + + - - + + @@ -132496,21 +132438,21 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -132521,7 +132463,7 @@ - + @@ -132540,21 +132482,21 @@ - - - - + + + + - - - - - - - - - + + + + + + + + + @@ -132588,8 +132530,8 @@ - - + + @@ -132609,9 +132551,9 @@ - - - + + + @@ -132619,23 +132561,23 @@ - - - + + + - - - + + + - - - + + + @@ -132656,37 +132598,37 @@ - - + + - - - - + + + + - - - + + + - - + + - - - - + + + + @@ -132700,11 +132642,11 @@ - - - - - + + + + + @@ -132755,10 +132697,10 @@ - - - - + + + + @@ -132817,24 +132759,24 @@ - - + + - - + + - - + + @@ -132844,11 +132786,11 @@ - - - - - + + + + + @@ -132893,14 +132835,14 @@ - - - - + + + + - - - + + + @@ -133132,8 +133074,8 @@ - - + + @@ -133153,29 +133095,29 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + @@ -133187,14 +133129,14 @@ - - - + + + - - - + + + @@ -133207,16 +133149,16 @@ - - - - + + + + - - - - + + + + @@ -133268,12 +133210,12 @@ - - + + - - + + @@ -133320,24 +133262,24 @@ - - + + - - + + - - + + - - + + @@ -133357,13 +133299,13 @@ - - + + - - - + + + @@ -133377,19 +133319,18 @@ - - - - + + + + - - - - + + + + - @@ -133407,8 +133348,8 @@ - - + + @@ -133423,8 +133364,8 @@ - - + + @@ -133458,8 +133399,8 @@ - - + + @@ -133477,10 +133418,10 @@ - - - - + + + + @@ -133493,54 +133434,54 @@ - - + + - - - + + + - - + + - + - + - - - - + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + + - - + + @@ -133549,36 +133490,36 @@ - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + @@ -133589,12 +133530,12 @@ - - - - - - + + + + + + @@ -133613,9 +133554,9 @@ - - - + + + @@ -133625,8 +133566,8 @@ - - + + @@ -133640,10 +133581,10 @@ - - - - + + + + @@ -133656,13 +133597,13 @@ - - - + + + - - + + @@ -133715,11 +133656,11 @@ - - - - - + + + + + @@ -133735,20 +133676,20 @@ - - + + - - + + - - + + @@ -133756,24 +133697,24 @@ - - + + - - + + - - + + @@ -133833,8 +133774,8 @@ - - + + @@ -133844,21 +133785,21 @@ - - - - - + + + + + - - - - + + + + @@ -133872,19 +133813,19 @@ - - - + + + - - + + - - - - + + + + @@ -133907,48 +133848,48 @@ - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + @@ -133957,7 +133898,7 @@ - + @@ -133997,17 +133938,17 @@ - + - + - - + + @@ -134026,8 +133967,8 @@ - - + + @@ -134054,31 +133995,31 @@ - - + + - - - - + + + + - - - + + + - - - + + + @@ -134138,8 +134079,8 @@ - - + + @@ -134180,16 +134121,16 @@ - - + + - - + + - - + + @@ -134200,8 +134141,8 @@ - - + + @@ -134224,12 +134165,12 @@ - - + + - - + + @@ -134245,8 +134186,8 @@ - - + + @@ -134365,10 +134306,10 @@ - - - - + + + + @@ -134377,20 +134318,20 @@ - - - - - - - - + + + + + + + + - - - - + + + + @@ -134398,14 +134339,14 @@ - - - + + + - - - + + + @@ -134423,8 +134364,8 @@ - - + + @@ -134436,8 +134377,8 @@ - - + + @@ -134474,8 +134415,8 @@ - - + + @@ -134526,22 +134467,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -134631,8 +134572,8 @@ - - + + @@ -134640,22 +134581,22 @@ - - + + - - - - - - + + + + + + - - - - + + + + @@ -134668,9 +134609,9 @@ - - - + + + @@ -134678,9 +134619,9 @@ - - - + + + @@ -134728,13 +134669,13 @@ - - - - - - - + + + + + + + @@ -134742,28 +134683,28 @@ - - + + - - + + - - + + - - + + - - + + @@ -134779,20 +134720,20 @@ - - - - - - + + + + + + - - - + + + - - + + @@ -134808,8 +134749,8 @@ - - + + @@ -134826,8 +134767,8 @@ - - + + @@ -134840,15 +134781,15 @@ - - - + + + - - - - + + + + @@ -134856,39 +134797,39 @@ - - - + + + - - - - + + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + @@ -134896,33 +134837,33 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + - + @@ -135046,8 +134987,8 @@ - - + + @@ -135166,12 +135107,12 @@ - - + + - - + + @@ -135188,9 +135129,9 @@ - - - + + + @@ -135198,9 +135139,9 @@ - - - + + + @@ -135208,9 +135149,9 @@ - - - + + + @@ -135235,12 +135176,12 @@ - - + + - - + + @@ -135258,10 +135199,10 @@ - - - - + + + + @@ -135278,62 +135219,62 @@ - - - - + + + + - - - + + + - - + + - - - - - - + + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -135344,7 +135285,7 @@ - + @@ -135378,10 +135319,10 @@ - - - - + + + + @@ -135423,7 +135364,7 @@ - + @@ -135431,34 +135372,34 @@ - - + + - - + + - - + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -135469,10 +135410,10 @@ - - - - + + + + @@ -135482,8 +135423,8 @@ - - + + @@ -135494,8 +135435,8 @@ - - + + @@ -135533,8 +135474,8 @@ - - + + @@ -135572,14 +135513,14 @@ - - - - - + + + + + - - + + @@ -135617,11 +135558,11 @@ - - - - - + + + + + @@ -135765,21 +135706,21 @@ - - + + - - - + + + - - + + - - + + @@ -135813,11 +135754,11 @@ - - - - - + + + + + @@ -135832,21 +135773,21 @@ - - + + - - + + - - + + - - - + + + @@ -135862,11 +135803,11 @@ - - - - - + + + + + @@ -135907,21 +135848,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -135942,26 +135883,26 @@ - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + @@ -135970,20 +135911,20 @@ - - - + + + - - - + + + - - - + + + @@ -135993,26 +135934,26 @@ - - - + + + - - - + + + - - - - + + + + - - - - + + + + @@ -136158,9 +136099,9 @@ - - - + + + @@ -136169,9 +136110,9 @@ - - - + + + @@ -136179,21 +136120,21 @@ - - + + - - - - + + + + - - + + - - + + @@ -136201,15 +136142,15 @@ - - - + + + - - - - + + + + @@ -136221,33 +136162,33 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - + + + @@ -136255,28 +136196,28 @@ - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -136287,13 +136228,13 @@ - - - - - - - + + + + + + + @@ -136325,14 +136266,14 @@ - - + + - - - - + + + + @@ -136340,10 +136281,10 @@ - - - - + + + + @@ -136351,10 +136292,10 @@ - - - - + + + + @@ -136377,10 +136318,10 @@ - - - - + + + + @@ -136396,29 +136337,29 @@ - + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -136447,13 +136388,13 @@ - - - - - - - + + + + + + + @@ -136472,10 +136413,10 @@ - - - - + + + + @@ -136492,10 +136433,10 @@ - - - - + + + + @@ -136505,30 +136446,30 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - - - + + + + + + + @@ -136545,13 +136486,13 @@ - - + + - - - + + + @@ -136570,39 +136511,39 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + @@ -136619,55 +136560,55 @@ - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -136677,9 +136618,9 @@ - - - + + + @@ -136689,16 +136630,16 @@ - - - - - + + + + + - - - + + + @@ -136733,15 +136674,15 @@ - - - + + + - - - - + + + + @@ -136754,11 +136695,11 @@ - - - - - + + + + + @@ -136768,16 +136709,16 @@ - - - - - + + + + + - - - + + + @@ -136787,8 +136728,8 @@ - - + + @@ -136800,25 +136741,25 @@ - - + + - - + + - - - - - - - + + + + + + + - - + + @@ -136829,9 +136770,9 @@ - - - + + + @@ -136883,9 +136824,9 @@ - - - + + + @@ -136919,22 +136860,22 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -137013,13 +136954,13 @@ - - + + - - - + + + @@ -137071,8 +137012,8 @@ - - + + @@ -137088,9 +137029,9 @@ - - - + + + @@ -137100,17 +137041,17 @@ - - - - + + + + - - - - - + + + + + @@ -137127,17 +137068,17 @@ - - + + - - - - - - - + + + + + + + @@ -137146,23 +137087,23 @@ - - + + - - - - + + + + - - - + + + - - + + @@ -137173,12 +137114,12 @@ - - - - - - + + + + + + @@ -137190,8 +137131,8 @@ - - + + @@ -137203,18 +137144,18 @@ - - - - - - + + + + + + - - - - + + + + @@ -137222,12 +137163,12 @@ - - + + - - + + @@ -137265,9 +137206,9 @@ - - - + + + @@ -137279,8 +137220,8 @@ - - + + @@ -137312,45 +137253,45 @@ - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + @@ -137395,9 +137336,9 @@ - - - + + + @@ -137428,10 +137369,10 @@ - - - - + + + + @@ -137523,14 +137464,14 @@ - - - - + + + + - - + + @@ -137548,8 +137489,8 @@ - - + + @@ -137794,9 +137735,9 @@ - - - + + + @@ -137885,9 +137826,9 @@ - - - + + + @@ -137908,13 +137849,13 @@ - - - - - - - + + + + + + + @@ -137926,29 +137867,29 @@ - - - + + + - - + + - - + + - - - - - - + + + + + + - - + + @@ -138006,9 +137947,9 @@ - - - + + + @@ -138020,17 +137961,17 @@ - - - - - - + + + + + + - - - + + + @@ -138154,9 +138095,9 @@ - - - + + + @@ -138189,30 +138130,30 @@ - - + + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -138235,9 +138176,9 @@ - - - + + + @@ -138255,8 +138196,8 @@ - - + + @@ -138291,10 +138232,10 @@ - - - - + + + + @@ -138303,21 +138244,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -138325,21 +138266,21 @@ - - - - + + + + - - - - - + + + + + - - - + + + @@ -138358,12 +138299,12 @@ - - - + + + - - + + @@ -138378,26 +138319,26 @@ - - + + - - + + - - + + - + - + @@ -138409,12 +138350,12 @@ - - + + - - + + @@ -138429,23 +138370,23 @@ - - + + - - + + - - - + + + - + - + @@ -138464,15 +138405,15 @@ - - - + + + - - - - + + + + @@ -138485,20 +138426,20 @@ - - - + + + - - - - + + + + - - - + + + @@ -138520,9 +138461,9 @@ - - - + + + @@ -138531,10 +138472,10 @@ - - - - + + + + @@ -138542,9 +138483,9 @@ - - - + + + @@ -138552,9 +138493,9 @@ - - - + + + @@ -138563,17 +138504,17 @@ - - - - + + + + - + @@ -138585,11 +138526,11 @@ - - + + - + @@ -138628,8 +138569,8 @@ - - + + @@ -138722,8 +138663,8 @@ - - + + @@ -138732,8 +138673,8 @@ - - + + @@ -138765,19 +138706,19 @@ - - - - - - - - - + + + + + + + + + - - + + @@ -138789,9 +138730,9 @@ - - - + + + @@ -138810,14 +138751,14 @@ - - - - + + + + - - + + @@ -138845,9 +138786,9 @@ - - - + + + @@ -138865,6 +138806,7 @@ + @@ -138886,19 +138828,19 @@ - - + + - - - - + + + + - - - + + + @@ -138916,8 +138858,8 @@ - - + + @@ -138927,24 +138869,24 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -138954,32 +138896,32 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -138996,12 +138938,12 @@ - + - - - + + + @@ -139129,10 +139071,10 @@ - - - - + + + + @@ -139140,10 +139082,10 @@ - - - - + + + + @@ -139222,19 +139164,19 @@ - - - + + + - - - + + + - - - + + + @@ -139264,8 +139206,8 @@ - - + + @@ -139283,16 +139225,16 @@ - - + + - - + + @@ -139345,9 +139287,9 @@ - - - + + + @@ -139361,9 +139303,9 @@ - - - + + + @@ -139402,8 +139344,8 @@ - - + + @@ -139449,9 +139391,9 @@ - - - + + + @@ -139542,11 +139484,11 @@ - - - - - + + + + + @@ -139781,9 +139723,9 @@ - - - + + + @@ -139901,15 +139843,15 @@ - - + + - - - - - + + + + + @@ -139943,8 +139885,8 @@ - - + + @@ -139979,17 +139921,17 @@ - - + + - - + + - - - + + + @@ -140000,8 +139942,8 @@ - - + + @@ -140032,12 +139974,12 @@ - - + + - - + + @@ -140060,8 +140002,8 @@ - - + + @@ -140083,8 +140025,8 @@ - - + + @@ -140120,9 +140062,9 @@ - - - + + + @@ -140145,9 +140087,9 @@ - - - + + + @@ -140162,16 +140104,16 @@ - - + + - - + + - - + + @@ -140190,8 +140132,8 @@ - - + + @@ -140206,16 +140148,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -140249,8 +140191,8 @@ - - + + @@ -140273,9 +140215,9 @@ - - - + + + @@ -140287,9 +140229,9 @@ - - - + + + @@ -140308,24 +140250,24 @@ - - - + + + - - - - + + + + - - - + + + @@ -140352,8 +140294,8 @@ - - + + @@ -140372,9 +140314,9 @@ - - - + + + @@ -140383,28 +140325,28 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -140413,14 +140355,14 @@ - - - - + + + + - - + + @@ -140431,9 +140373,9 @@ - - - + + + @@ -140467,8 +140409,8 @@ - - + + @@ -140570,15 +140512,15 @@ - - - + + + - - - - + + + + @@ -140590,8 +140532,8 @@ - - + + @@ -140657,8 +140599,8 @@ - - + + @@ -140670,10 +140612,10 @@ - - - - + + + + @@ -140697,30 +140639,30 @@ - - + + - - + + - - - + + + - - - + + + - - + + @@ -140732,10 +140674,10 @@ - - - - + + + + @@ -140759,9 +140701,9 @@ - - - + + + @@ -140769,8 +140711,8 @@ - - + + @@ -140809,9 +140751,9 @@ - - - + + + @@ -140832,10 +140774,10 @@ - - - - + + + + @@ -140885,9 +140827,9 @@ - - - + + + @@ -140947,21 +140889,21 @@ - - - + + + - - - - - - + + + + + + - - + + @@ -141137,9 +141079,9 @@ - - - + + + @@ -141153,27 +141095,27 @@ - - + + - - - - + + + + - - - + + + @@ -141187,33 +141129,33 @@ - - - - - + + + + + - - - + + + - - + + - - + + - - + + - - - + + + @@ -141459,15 +141401,15 @@ - - - + + + - - - - + + + + @@ -141518,9 +141460,9 @@ - - - + + + @@ -141534,15 +141476,15 @@ - - - - + + + + - - - + + + @@ -141620,9 +141562,9 @@ - - - + + + @@ -141638,36 +141580,36 @@ - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -141682,9 +141624,9 @@ - - - + + + @@ -141699,14 +141641,14 @@ - - - + + + - - - + + + @@ -141748,15 +141690,15 @@ - - + + - - - - - + + + + + @@ -141764,11 +141706,11 @@ - - - - - + + + + + @@ -141784,8 +141726,8 @@ - - + + @@ -141805,8 +141747,8 @@ - - + + @@ -141849,8 +141791,8 @@ - - + + @@ -141886,8 +141828,8 @@ - - + + @@ -141954,9 +141896,9 @@ - - - + + + @@ -142027,26 +141969,26 @@ - - - - - - - + + + + + + + - - + + - - - + + + @@ -142083,21 +142025,21 @@ - - - + + + - - - + + + - - - + + + @@ -142161,15 +142103,15 @@ - - + + - - + + @@ -142180,16 +142122,16 @@ - - - - - + + + + + - - - + + + @@ -142198,11 +142140,11 @@ - - - - - + + + + + @@ -142211,9 +142153,9 @@ - - - + + + @@ -142263,11 +142205,11 @@ - - - - - + + + + + @@ -142277,23 +142219,23 @@ - - - - + + + + - - - + + + - - + + - - + + @@ -142306,12 +142248,12 @@ - - + + - - + + @@ -142319,8 +142261,8 @@ - - + + @@ -142337,8 +142279,8 @@ - - + + @@ -142346,12 +142288,12 @@ - - - + + + - + @@ -142380,17 +142322,17 @@ - - - + + + - - + + @@ -142457,28 +142399,28 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + @@ -142488,17 +142430,17 @@ - - + + - - - - + + + + @@ -142509,26 +142451,26 @@ - - - - + + + + - - - - + + + + - - + + - - - - + + + + @@ -142539,9 +142481,9 @@ - - - + + + @@ -142573,10 +142515,10 @@ - - - - + + + + @@ -142609,9 +142551,9 @@ - - - + + + @@ -142628,15 +142570,15 @@ - - - - + + + + - - - + + + @@ -142660,12 +142602,12 @@ - - - - - - + + + + + + @@ -142687,13 +142629,13 @@ - - + + - - - + + + @@ -142710,10 +142652,10 @@ - - - - + + + + @@ -142724,47 +142666,47 @@ - - - + + + - - + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + From 8d68a30fe15f6fcf396a9f5b3b5a0a389d440250 Mon Sep 17 00:00:00 2001 From: Bicycle Tsai Date: Wed, 27 Oct 2021 08:12:41 +0800 Subject: [PATCH 36/62] ANDROID: ASoC: soc-pcm: Get all BEs along DAPM path dpcm_end_walk_at_be() stops the graph walk when first BE is found for the given FE component. In a component model we may want to connect multiple DAIs from different components. android_vh_snd_soc_card_get_comp_chain can be registered here to allows DAI/component chaining. Later PCM operations can be called for all these listed components for a valid DAPM path. ALSA machine driver can setup component_chaining like below code slice. static void my_board_component_chaining_hook(void *data, bool *ret) { *ret = true; } static int my_board_dev_probe(struct platform_device *pdev) { register_trace_android_vh_snd_soc_card_get_comp_chain( my_board_component_chaining_hook, NULL); return 0; } static int my_board_dev_remove(struct platform_device *pdev) { unregister_trace_android_vh_snd_soc_card_get_comp_chain( my_board_component_chaining_hook, NULL); return 0; } static struct platform_driver my_board_driver = { ... .probe = my_board_dev_probe, .remove = my_board_dev_remove, ... }; Bug: 198732156 Signed-off-by: Bicycle Tsai Change-Id: Ife5df291d40af9ec83d57462b6a08aba95d9119d --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/sound.h | 4 ++++ sound/soc/soc-pcm.c | 6 +++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index b44972ad1b93..46f71a3def2b 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -374,6 +374,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_usb_dev_resume); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipv6_gen_linklocal_addr); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sound_usb_support_cpu_suspend); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_snd_compr_use_pause_in_drain); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_snd_soc_card_get_comp_chain); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_show_max_freq); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tcp_sendmsg_locked); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tcp_recvmsg); diff --git a/include/trace/hooks/sound.h b/include/trace/hooks/sound.h index 2bf018edf392..6eb8bc326cf8 100644 --- a/include/trace/hooks/sound.h +++ b/include/trace/hooks/sound.h @@ -15,6 +15,10 @@ DECLARE_HOOK(android_vh_sound_usb_support_cpu_suspend, bool *is_support), TP_ARGS(udev, direction, is_support)); +DECLARE_HOOK(android_vh_snd_soc_card_get_comp_chain, + TP_PROTO(bool *component_chaining), + TP_ARGS(component_chaining)); + #endif /* _TRACE_HOOK_SOUND_H */ /* This part must be outside protection */ #include diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 69c78fd59e41..f7aff87849fc 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -26,6 +26,7 @@ #include #include #include +#include #define DPCM_MAX_BE_USERS 8 @@ -1275,6 +1276,7 @@ int dpcm_path_get(struct snd_soc_pcm_runtime *fe, { struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(fe, 0); int paths; + bool chaining = false; if (fe->num_cpus > 1) { dev_err(fe->dev, @@ -1282,9 +1284,11 @@ int dpcm_path_get(struct snd_soc_pcm_runtime *fe, return -EINVAL; } + trace_android_vh_snd_soc_card_get_comp_chain(&chaining); + /* get number of valid DAI paths and their widgets */ paths = snd_soc_dapm_dai_get_connected_widgets(cpu_dai, stream, list, - dpcm_end_walk_at_be); + chaining ? NULL : dpcm_end_walk_at_be); dev_dbg(fe->dev, "ASoC: found %d audio %s paths\n", paths, stream ? "capture" : "playback"); From 82c940e0e1401cb0837b3792d88659866ecd9dcc Mon Sep 17 00:00:00 2001 From: Bicycle Tsai Date: Wed, 27 Oct 2021 11:57:10 +0800 Subject: [PATCH 37/62] ANDROID: Update symbol list for mtk Generated with: BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable 1 Added function: [A] 'function int __traceiter_android_vh_snd_soc_card_get_comp_chain(void*, bool*)' 1 Added variable: [A] 'tracepoint __tracepoint_android_vh_snd_soc_card_get_comp_chain' Bug: 198732156 Signed-off-by: Bicycle Tsai Change-Id: I1327ec4b1ba8df264007ebdeab86c15785d5a46a --- android/abi_gki_aarch64.xml | 10659 +++++++++++++++++----------------- android/abi_gki_aarch64_mtk | 2 + 2 files changed, 5247 insertions(+), 5414 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 6c512af3f193..de92167acb09 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -483,6 +483,7 @@ + @@ -5837,6 +5838,7 @@ + @@ -8541,9 +8543,9 @@ - - - + + + @@ -8556,7 +8558,6 @@ - @@ -8638,7 +8639,6 @@ - @@ -9052,7 +9052,14 @@ - + + + + + + + + @@ -9060,13 +9067,6 @@ - - - - - - - @@ -11499,6 +11499,7 @@ + @@ -11905,8 +11906,8 @@ - - + + @@ -12539,7 +12540,23 @@ - + + + + + + + + + + + + + + + + + @@ -13186,6 +13203,7 @@ + @@ -14735,12 +14753,6 @@ - - - - - - @@ -15235,6 +15247,9 @@ + + + @@ -15434,7 +15449,29 @@ - + + + + + + + + + + + + + + + + + + + + + + + @@ -16789,8 +16826,8 @@ - - + + @@ -18318,7 +18355,6 @@ - @@ -18692,11 +18728,7 @@ - - - - - + @@ -19651,7 +19683,6 @@ - @@ -19849,7 +19880,6 @@ - @@ -20287,14 +20317,6 @@ - - - - - - - - @@ -20645,7 +20667,7 @@ - + @@ -21359,6 +21381,7 @@ + @@ -22099,6 +22122,11 @@ + + + + + @@ -24257,7 +24285,7 @@ - + @@ -24481,6 +24509,7 @@ + @@ -24785,7 +24814,23 @@ - + + + + + + + + + + + + + + + + + @@ -25447,7 +25492,7 @@ - + @@ -25824,7 +25869,6 @@ - @@ -25902,7 +25946,7 @@ - + @@ -25959,6 +26003,7 @@ + @@ -26312,6 +26357,7 @@ + @@ -26934,7 +26980,7 @@ - + @@ -27869,7 +27915,6 @@ - @@ -31614,9 +31659,9 @@ - - - + + + @@ -32490,7 +32535,6 @@ - @@ -32745,7 +32789,68 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -33250,7 +33355,6 @@ - @@ -33665,6 +33769,7 @@ + @@ -33863,7 +33968,7 @@ - + @@ -37408,7 +37513,6 @@ - @@ -38198,8 +38302,8 @@ - - + + @@ -39170,17 +39274,6 @@ - - - - - - - - - - - @@ -39460,9 +39553,9 @@ - - - + + + @@ -39969,6 +40062,7 @@ + @@ -40926,7 +41020,6 @@ - @@ -43428,15 +43521,7 @@ - - - - - - - - @@ -43773,18 +43858,7 @@ - - - - - - - - - - - - + @@ -43880,12 +43954,12 @@ - - - - - - + + + + + + @@ -43990,7 +44064,6 @@ - @@ -44771,21 +44844,21 @@ - + - + - + - + - + - + @@ -45231,7 +45304,6 @@ - @@ -46882,8 +46954,8 @@ - - + + @@ -47229,7 +47301,35 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -47790,7 +47890,14 @@ - + + + + + + + + @@ -48436,11 +48543,6 @@ - - - - - @@ -48846,7 +48948,7 @@ - + @@ -48972,6 +49074,11 @@ + + + + + @@ -49277,7 +49384,7 @@ - + @@ -49425,56 +49532,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -49815,6 +49873,7 @@ + @@ -50750,7 +50809,7 @@ - + @@ -51595,26 +51654,8 @@ - - - - - - - - - - - - - - - - - - @@ -51873,26 +51914,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -52080,6 +52101,7 @@ + @@ -52669,7 +52691,23 @@ - + + + + + + + + + + + + + + + + + @@ -53031,7 +53069,6 @@ - @@ -53962,9 +53999,9 @@ - - - + + + @@ -54684,6 +54721,7 @@ + @@ -55268,7 +55306,7 @@ - + @@ -55733,7 +55771,7 @@ - + @@ -56594,26 +56632,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -57958,7 +57976,6 @@ - @@ -58421,11 +58438,6 @@ - - - - - @@ -59650,44 +59662,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -60877,65 +60852,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -61712,7 +61629,6 @@ - @@ -62662,7 +62578,17 @@ - + + + + + + + + + + + @@ -63728,7 +63654,7 @@ - + @@ -64222,10 +64148,10 @@ - - - - + + + + @@ -64275,6 +64201,12 @@ + + + + + + @@ -64534,6 +64466,7 @@ + @@ -64857,47 +64790,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -65492,11 +65385,6 @@ - - - - - @@ -66523,11 +66411,6 @@ - - - - - @@ -66988,7 +66871,7 @@ - + @@ -68852,7 +68735,6 @@ - @@ -69049,6 +68931,7 @@ + @@ -70657,14 +70540,7 @@ - - - - - - - - + @@ -70798,14 +70674,6 @@ - - - - - - - - @@ -71494,8 +71362,8 @@ - - + + @@ -71614,7 +71482,6 @@ - @@ -72301,8 +72168,8 @@ - - + + @@ -72374,6 +72241,7 @@ + @@ -72838,38 +72706,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -72980,7 +72817,7 @@ - + @@ -75660,7 +75497,6 @@ - @@ -77068,11 +76904,11 @@ - + - + @@ -78125,12 +77961,12 @@ - - - - - - + + + + + + @@ -79416,6 +79252,7 @@ + @@ -79655,7 +79492,6 @@ - @@ -80381,6 +80217,7 @@ + @@ -80968,6 +80805,7 @@ + @@ -81040,6 +80878,9 @@ + + + @@ -81056,11 +80897,6 @@ - - - - - @@ -81083,7 +80919,6 @@ - @@ -81544,7 +81379,7 @@ - + @@ -81620,14 +81455,6 @@ - - - - - - - - @@ -84705,6 +84532,7 @@ + @@ -85323,7 +85151,7 @@ - + @@ -86004,9 +85832,9 @@ - - - + + + @@ -86475,26 +86303,7 @@ - - - - - - - - - - - - - - - - - - - - + @@ -86519,7 +86328,7 @@ - + @@ -86544,6 +86353,7 @@ + @@ -86582,6 +86392,7 @@ + @@ -87994,7 +87805,7 @@ - + @@ -88625,8 +88436,8 @@ - - + + @@ -89695,7 +89506,6 @@ - @@ -89856,6 +89666,14 @@ + + + + + + + + @@ -90290,7 +90108,20 @@ - + + + + + + + + + + + + + + @@ -90847,7 +90678,7 @@ - + @@ -91022,7 +90853,7 @@ - + @@ -91317,6 +91148,7 @@ + @@ -91452,12 +91284,12 @@ - + - + @@ -93022,7 +92854,6 @@ - @@ -93535,17 +93366,6 @@ - - - - - - - - - - - @@ -94308,7 +94128,7 @@ - + @@ -94866,7 +94686,7 @@ - + @@ -95304,7 +95124,7 @@ - + @@ -96010,9 +95830,6 @@ - - - @@ -97252,6 +97069,7 @@ + @@ -97527,8 +97345,8 @@ - - + + @@ -97737,8 +97555,8 @@ - - + + @@ -98893,6 +98711,7 @@ + @@ -99868,7 +99687,14 @@ - + + + + + + + + @@ -101347,10 +101173,10 @@ - - - + + + @@ -101374,7 +101200,7 @@ - + @@ -101515,8 +101341,8 @@ - - + + @@ -102116,7 +101942,6 @@ - @@ -102385,6 +102210,7 @@ + @@ -102910,7 +102736,20 @@ - + + + + + + + + + + + + + + @@ -102969,6 +102808,9 @@ + + + @@ -106376,6 +106218,7 @@ + @@ -106390,20 +106233,6 @@ - - - - - - - - - - - - - - @@ -106738,6 +106567,7 @@ + @@ -110064,7 +109894,7 @@ - + @@ -110662,11 +110492,6 @@ - - - - - @@ -110993,6 +110818,7 @@ + @@ -112748,7 +112574,6 @@ - @@ -112833,7 +112658,6 @@ - @@ -112952,8 +112776,8 @@ - - + + @@ -113490,6 +113314,7 @@ + @@ -115880,6 +115705,11 @@ + + + + + @@ -116630,6 +116460,7 @@ + @@ -116900,9 +116731,9 @@ - - - + + + @@ -116913,33 +116744,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + @@ -116949,27 +116780,27 @@ - - - + + + - - - + + + - - - + + + - - - + + + @@ -116979,8 +116810,8 @@ - - + + @@ -116999,8 +116830,8 @@ - - + + @@ -117016,57 +116847,57 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + @@ -117077,16 +116908,16 @@ - - + + - - + + @@ -117110,12 +116941,12 @@ - - - - - - + + + + + + @@ -117132,9 +116963,9 @@ - - - + + + @@ -117150,33 +116981,33 @@ - - + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + @@ -117189,22 +117020,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -117278,13 +117109,13 @@ - - - - - - - + + + + + + + @@ -117293,29 +117124,29 @@ - - - + + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -117357,11 +117188,11 @@ - - - - - + + + + + @@ -117381,14 +117212,14 @@ - - + + - - - - + + + + @@ -117411,15 +117242,15 @@ - - - - + + + + - - - + + + @@ -117427,11 +117258,11 @@ - - - - - + + + + + @@ -117482,21 +117313,21 @@ - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -117537,18 +117368,18 @@ - - + + - - - + + + - - - + + + @@ -117581,17 +117412,17 @@ - - - - + + + + - - - - - + + + + + @@ -117602,58 +117433,58 @@ - - - - + + + + - - + + - - - + + + - - - + + + - - + + - - - - + + + + - - + + - - + + - - + + - - - - - + + + + + - - - + + + @@ -117662,49 +117493,49 @@ - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -117714,10 +117545,10 @@ - - - - + + + + @@ -117761,17 +117592,17 @@ - - + + - - + + - - - + + + @@ -117806,10 +117637,10 @@ - - - - + + + + @@ -117841,13 +117672,13 @@ - - - + + + - - + + @@ -117878,8 +117709,8 @@ - - + + @@ -117888,8 +117719,8 @@ - - + + @@ -117911,8 +117742,8 @@ - - + + @@ -117959,8 +117790,8 @@ - - + + @@ -117982,10 +117813,10 @@ - - - - + + + + @@ -118021,9 +117852,9 @@ - - - + + + @@ -118167,16 +117998,16 @@ - - + + - - + + @@ -118225,26 +118056,26 @@ - - - - + + + + - - - - + + + + - - - + + + - - - + + + @@ -118253,31 +118084,31 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -118295,9 +118126,9 @@ - - - + + + @@ -118345,67 +118176,67 @@ - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + @@ -118421,16 +118252,16 @@ - - + + - - - - - - + + + + + + @@ -118451,33 +118282,33 @@ - - + + - - + + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -118487,8 +118318,8 @@ - - + + @@ -118501,8 +118332,8 @@ - - + + @@ -118572,9 +118403,9 @@ - - - + + + @@ -118613,11 +118444,11 @@ - - - - - + + + + + @@ -118633,19 +118464,19 @@ - - - + + + - - - + + + - - - + + + @@ -118677,9 +118508,9 @@ - - - + + + @@ -118763,14 +118594,14 @@ - - - + + + - - - + + + @@ -118779,65 +118610,65 @@ - - - + + + - - - - + + + + - - + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -118846,48 +118677,48 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -118898,8 +118729,8 @@ - - + + @@ -119017,8 +118848,8 @@ - - + + @@ -119120,28 +118951,28 @@ - - - + + + - - + + - - - - - + + + + + @@ -119156,11 +118987,11 @@ - - - - - + + + + + @@ -119172,11 +119003,11 @@ - - - - - + + + + + @@ -119195,8 +119026,8 @@ - - + + @@ -119233,10 +119064,10 @@ - - - - + + + + @@ -119274,22 +119105,22 @@ - - + + - - - - + + + + - - + + - - + + @@ -119316,22 +119147,22 @@ - - + + - - - - + + + + - - - + + + @@ -119392,8 +119223,8 @@ - - + + @@ -119424,18 +119255,18 @@ - - + + - - - + + + - - - + + + @@ -119447,8 +119278,8 @@ - - + + @@ -119464,9 +119295,9 @@ - - - + + + @@ -119499,12 +119330,12 @@ - - + + - - + + @@ -119515,23 +119346,23 @@ - - + + - - - + + + - - - - + + + + @@ -119546,9 +119377,9 @@ - - - + + + @@ -119567,8 +119398,8 @@ - - + + @@ -119588,58 +119419,58 @@ - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - + - + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -119682,12 +119513,12 @@ - - + + - - + + @@ -119716,10 +119547,10 @@ - - - - + + + + @@ -119774,42 +119605,42 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - + + - - - + + + - - - + + + - + @@ -119844,10 +119675,10 @@ - - - - + + + + @@ -119855,9 +119686,9 @@ - - - + + + @@ -119867,7 +119698,7 @@ - + @@ -119878,8 +119709,8 @@ - - + + @@ -119896,22 +119727,22 @@ - - + + - - - + + + - - - + + + @@ -119961,11 +119792,11 @@ - - - - - + + + + + @@ -119973,44 +119804,44 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -120025,8 +119856,8 @@ - - + + @@ -120047,18 +119878,18 @@ - - - + + + - - - + + + @@ -120075,9 +119906,9 @@ - - - + + + @@ -120088,11 +119919,11 @@ - - - - - + + + + + @@ -120102,8 +119933,8 @@ - - + + @@ -120119,18 +119950,18 @@ - - + + - - + + - - - - + + + + @@ -120161,12 +119992,12 @@ - - + + - - + + @@ -120175,7 +120006,7 @@ - + @@ -120206,11 +120037,11 @@ - - - - - + + + + + @@ -120220,25 +120051,25 @@ - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -120275,11 +120106,11 @@ - - - - - + + + + + @@ -120289,11 +120120,11 @@ - - - - - + + + + + @@ -120325,9 +120156,9 @@ - - - + + + @@ -120338,8 +120169,8 @@ - - + + @@ -120349,9 +120180,9 @@ - - - + + + @@ -120360,11 +120191,11 @@ - - - - - + + + + + @@ -120377,16 +120208,16 @@ - - + + - - + + - - + + @@ -120397,8 +120228,8 @@ - - + + @@ -120434,49 +120265,49 @@ - - + + - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -120498,9 +120329,9 @@ - - - + + + @@ -120513,9 +120344,9 @@ - - - + + + @@ -120537,10 +120368,10 @@ - - - - + + + + @@ -120571,15 +120402,15 @@ - - - - + + + + - - - + + + @@ -120599,8 +120430,8 @@ - - + + @@ -120616,8 +120447,8 @@ - - + + @@ -120625,13 +120456,13 @@ - - + + - - - + + + @@ -120642,9 +120473,9 @@ - - - + + + @@ -120661,16 +120492,16 @@ - - + + - - + + @@ -120695,9 +120526,9 @@ - - - + + + @@ -120787,9 +120618,9 @@ - - - + + + @@ -120802,17 +120633,17 @@ - - - - + + + + - - - - + + + + @@ -120820,10 +120651,10 @@ - - - - + + + + @@ -120831,9 +120662,9 @@ - - - + + + @@ -120854,11 +120685,11 @@ - - - - - + + + + + @@ -120930,20 +120761,20 @@ - - + + - - + + - - + + @@ -120956,8 +120787,8 @@ - - + + @@ -120979,12 +120810,12 @@ - - - - - - + + + + + + @@ -120993,40 +120824,40 @@ - - - + + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -121061,28 +120892,28 @@ - - - + + + - - + + - - - - + + + + - - - + + + @@ -121104,10 +120935,10 @@ - - - - + + + + @@ -121129,11 +120960,11 @@ - - - - - + + + + + @@ -121156,15 +120987,15 @@ - - - + + + - - - - + + + + @@ -121181,14 +121012,14 @@ - - - + + + - - - + + + @@ -121217,22 +121048,22 @@ - - + + - - + + - - - - + + + + @@ -121255,10 +121086,10 @@ - - - - + + + + @@ -121266,15 +121097,15 @@ - - - - + + + + - - - + + + @@ -121381,11 +121212,11 @@ - - - - - + + + + + @@ -121583,29 +121414,29 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -121615,10 +121446,10 @@ - - - - + + + + @@ -121657,14 +121488,14 @@ - - - - - - - - + + + + + + + + @@ -121677,9 +121508,9 @@ - - - + + + @@ -121712,8 +121543,8 @@ - - + + @@ -121780,14 +121611,14 @@ - - - + + + - - - + + + @@ -121795,10 +121626,10 @@ - - - - + + + + @@ -121843,15 +121674,15 @@ - - - - + + + + - - - + + + @@ -121950,16 +121781,16 @@ - - - + + + - - - - - + + + + + @@ -122009,46 +121840,46 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - - + + + + + - - + + - - + + @@ -122143,9 +121974,9 @@ - - - + + + @@ -122167,17 +121998,17 @@ - - + + - - - + + + - - + + @@ -122185,15 +122016,15 @@ - - - + + + - - - - + + + + @@ -122204,34 +122035,34 @@ - - + + - - - - + + + + - - + + - - - + + + - - - - + + + + @@ -122243,9 +122074,9 @@ - - - + + + @@ -122253,8 +122084,8 @@ - - + + @@ -122265,15 +122096,15 @@ - + - - - - - - + + + + + + @@ -122285,13 +122116,13 @@ - - - - + + + + - - + + @@ -122311,10 +122142,10 @@ - - - - + + + + @@ -122464,46 +122295,46 @@ - - - + + + - - - + + + - - + + - - - - - + + + + + - - + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -122636,8 +122467,8 @@ - - + + @@ -122670,16 +122501,16 @@ - - + + - - + + - - + + @@ -122691,8 +122522,8 @@ - - + + @@ -122703,8 +122534,8 @@ - - + + @@ -122724,9 +122555,9 @@ - - - + + + @@ -122736,62 +122567,62 @@ - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -122809,14 +122640,14 @@ - - - + + + - - - + + + @@ -122851,13 +122682,13 @@ - - - - - - - + + + + + + + @@ -123081,62 +122912,62 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + @@ -123152,15 +122983,15 @@ - - + + - - - - - + + + + + @@ -123171,10 +123002,10 @@ - - - - + + + + @@ -123203,8 +123034,8 @@ - - + + @@ -123212,9 +123043,9 @@ - - - + + + @@ -123251,9 +123082,9 @@ - - - + + + @@ -123262,8 +123093,8 @@ - - + + @@ -123271,19 +123102,19 @@ - - - - - + + + + + - - - - - - + + + + + + @@ -123291,20 +123122,20 @@ - - + + - - + + - - + + - - + + @@ -123317,17 +123148,17 @@ - - + + - - + + - - - + + + @@ -123374,19 +123205,19 @@ - - - - - - - + + + + + + + - - - + + + @@ -123394,17 +123225,17 @@ - - - + + + - - + + @@ -123422,20 +123253,20 @@ - - + + - - + + - - + + @@ -123448,11 +123279,11 @@ - - - - - + + + + + @@ -123463,33 +123294,33 @@ - - - + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -123773,23 +123604,23 @@ - - + + - - - - + + + + - - - + + + @@ -123805,12 +123636,12 @@ - - - - - - + + + + + + @@ -123862,20 +123693,20 @@ - - + + - - - - + + + + - - - - + + + + @@ -124030,10 +123861,10 @@ - - - - + + + + @@ -124083,9 +123914,9 @@ - - - + + + @@ -124214,19 +124045,19 @@ - - - + + + - - - + + + - - - + + + @@ -124327,8 +124158,8 @@ - - + + @@ -124350,9 +124181,9 @@ - - - + + + @@ -124380,8 +124211,8 @@ - - + + @@ -124396,24 +124227,24 @@ - - + + - - - + + + - - - - + + + + - - - + + + @@ -124432,9 +124263,9 @@ - - - + + + @@ -124448,18 +124279,18 @@ - - + + - - - + + + - - - + + + @@ -124480,9 +124311,9 @@ - - - + + + @@ -124513,28 +124344,28 @@ - - + + - - + + - - - + + + - - - - + + + + - - - + + + @@ -124545,83 +124376,83 @@ - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + @@ -124677,17 +124508,17 @@ - - + + - - + + - - - + + + @@ -124701,20 +124532,20 @@ - - + + - - + + - - + + @@ -124783,9 +124614,9 @@ - - - + + + @@ -124793,44 +124624,44 @@ - - + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + @@ -124840,12 +124671,12 @@ - - - - - - + + + + + + @@ -124856,9 +124687,9 @@ - - - + + + @@ -124866,18 +124697,18 @@ - - - - + + + + - - - - - - - + + + + + + + @@ -124892,30 +124723,30 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -124951,8 +124782,8 @@ - - + + @@ -125028,20 +124859,20 @@ - - + + - - - - - - - - - - + + + + + + + + + + @@ -125050,19 +124881,19 @@ - - - + + + - - - - + + + + - - - + + + @@ -125089,36 +124920,36 @@ - - - - + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -125357,8 +125188,8 @@ - - + + @@ -125372,13 +125203,13 @@ - - + + - - - + + + @@ -125417,14 +125248,14 @@ - - - + + + - - - + + + @@ -125432,17 +125263,17 @@ - - - - + + + + - - + + @@ -125457,9 +125288,9 @@ - - - + + + @@ -125473,50 +125304,50 @@ - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - + + @@ -125526,15 +125357,15 @@ - - - + + + - - - - + + + + @@ -125567,27 +125398,27 @@ - - - - + + + + - - - - - + + + + + - - - + + + - - + + @@ -125601,9 +125432,9 @@ - - - + + + @@ -125612,30 +125443,30 @@ - - - + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -125651,26 +125482,26 @@ - - + + - - - + + + - - + + - - - + + + @@ -125687,8 +125518,8 @@ - - + + @@ -125703,8 +125534,8 @@ - - + + @@ -125752,18 +125583,18 @@ - - - + + + - - + + - - - + + + @@ -125771,13 +125602,13 @@ - - + + - - - + + + @@ -125785,9 +125616,9 @@ - - - + + + @@ -125845,8 +125676,8 @@ - - + + @@ -125855,9 +125686,9 @@ - - - + + + @@ -125870,8 +125701,8 @@ - - + + @@ -125914,12 +125745,12 @@ - - + + - - + + @@ -125956,35 +125787,35 @@ - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - + + + @@ -125996,13 +125827,13 @@ - - - + + + - - + + @@ -126045,33 +125876,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + @@ -126092,8 +125923,8 @@ - - + + @@ -126118,10 +125949,10 @@ - - - - + + + + @@ -126131,12 +125962,12 @@ - - + + - - + + @@ -126147,17 +125978,17 @@ - - - - - - - + + + + + + + - - + + @@ -126174,8 +126005,8 @@ - - + + @@ -126201,15 +126032,15 @@ - - + + - - - - - + + + + + @@ -126221,8 +126052,8 @@ - - + + @@ -126248,8 +126079,8 @@ - - + + @@ -126259,20 +126090,20 @@ - - + + - + - - - + + + @@ -126286,41 +126117,41 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -126330,13 +126161,13 @@ - - + + - - - + + + @@ -126350,41 +126181,41 @@ - - - - - - + + + + + + - - + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + @@ -126394,8 +126225,8 @@ - - + + @@ -126407,18 +126238,18 @@ - - + + - - - - + + + + @@ -126442,23 +126273,23 @@ - - - + + + - - - + + + - - - + + + - - + + @@ -126471,9 +126302,9 @@ - - - + + + @@ -126481,29 +126312,29 @@ - - - - + + + + - - + + - - - - - + + + + + - - - - - - + + + + + + @@ -126536,9 +126367,9 @@ - - - + + + @@ -126547,13 +126378,13 @@ - - + + - - - + + + @@ -126646,8 +126477,8 @@ - - + + @@ -126672,13 +126503,13 @@ - - - + + + - - + + @@ -126723,27 +126554,27 @@ - - + + - + - - - + + + - - + + - - + + @@ -126794,38 +126625,38 @@ - - - - + + + + - - - - - - - - + + + + + + + + - - + + - - + + - + - - + + @@ -126836,9 +126667,9 @@ - - - + + + @@ -126853,26 +126684,26 @@ - - + + - - - - + + + + - - - - - - + + + + + + - - + + @@ -126887,28 +126718,28 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - - + + + + @@ -126923,28 +126754,28 @@ - - - - - + + + + + - - + + - - - - - + + + + + - - - - + + + + @@ -126966,18 +126797,18 @@ - - + + - - + + - - + + @@ -127000,12 +126831,12 @@ - - + + - - + + @@ -127042,9 +126873,9 @@ - - - + + + @@ -127079,81 +126910,81 @@ - - - + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -127278,12 +127109,12 @@ - - + + - - + + @@ -127326,14 +127157,14 @@ - - + + - - - - + + + + @@ -127354,36 +127185,36 @@ - - - - - + + + + + - - + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -127394,39 +127225,39 @@ - - + + - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - - - + + + + @@ -127452,14 +127283,14 @@ - - + + - - - - + + + + @@ -127476,8 +127307,8 @@ - - + + @@ -127567,14 +127398,14 @@ - - - - - - - - + + + + + + + + @@ -127584,8 +127415,8 @@ - - + + @@ -127609,9 +127440,9 @@ - - - + + + @@ -127631,18 +127462,18 @@ - - - - + + + + - - - + + + @@ -127650,27 +127481,27 @@ - - - - - - + + + + + + - - - + + + - - - + + + - - - + + + @@ -127680,8 +127511,8 @@ - - + + @@ -127702,8 +127533,8 @@ - - + + @@ -127718,8 +127549,8 @@ - - + + @@ -127752,20 +127583,20 @@ - - + + - - + + - - + + @@ -127802,12 +127633,12 @@ - - + + - - + + @@ -127815,34 +127646,34 @@ - - + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -127924,9 +127755,9 @@ - - - + + + @@ -128087,29 +127918,29 @@ - - - + + + - - + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -128117,47 +127948,47 @@ - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - - - + + + + + + - - - - - + + + + + @@ -128192,8 +128023,8 @@ - - + + @@ -128293,13 +128124,13 @@ - - - + + + - - + + @@ -128310,15 +128141,15 @@ - - - - - - - - - + + + + + + + + + @@ -128354,9 +128185,9 @@ - - - + + + @@ -128382,30 +128213,30 @@ - - - + + + - - - - + + + + - - - - + + + + - - - + + + @@ -128418,10 +128249,10 @@ - - - - + + + + @@ -128429,11 +128260,11 @@ - - - - - + + + + + @@ -128456,10 +128287,10 @@ - - - - + + + + @@ -128472,20 +128303,20 @@ - - - + + + - - - - + + + + - + - - + + @@ -128495,9 +128326,9 @@ - - - + + + @@ -128586,14 +128417,14 @@ - - - + + + - - + + @@ -128669,8 +128500,8 @@ - - + + @@ -128680,66 +128511,66 @@ - - + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - + + - + - - - - + + + + @@ -128759,21 +128590,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -128784,23 +128615,23 @@ - - - - - - - - + + + + + + + + - - + + - - - + + + @@ -128809,10 +128640,10 @@ - - - - + + + + @@ -128844,46 +128675,46 @@ - - - - + + + + - - - + + + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - - + + + @@ -128892,31 +128723,31 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -128925,23 +128756,23 @@ - - - + + + - - - + + + - - - + + + @@ -128949,34 +128780,34 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + @@ -128986,10 +128817,10 @@ - - - - + + + + @@ -129005,10 +128836,10 @@ - - - - + + + + @@ -129018,10 +128849,10 @@ - - - - + + + + @@ -129031,37 +128862,37 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -129072,9 +128903,9 @@ - - - + + + @@ -129088,11 +128919,11 @@ - - - - - + + + + + @@ -129124,11 +128955,11 @@ - - + + - + @@ -129145,15 +128976,15 @@ - - + + - - + + - - + + @@ -129173,8 +129004,8 @@ - - + + @@ -129184,8 +129015,8 @@ - - + + @@ -129197,8 +129028,8 @@ - - + + @@ -129212,18 +129043,18 @@ - - - + + + - - - - + + + + - - + + @@ -129231,10 +129062,10 @@ - - - - + + + + @@ -129247,14 +129078,14 @@ - - - - + + + + - - + + @@ -129290,18 +129121,18 @@ - - - + + + - - - + + + @@ -129312,8 +129143,8 @@ - - + + @@ -129324,29 +129155,29 @@ - - - - + + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -129365,11 +129196,11 @@ - - - - - + + + + + @@ -129377,8 +129208,8 @@ - - + + @@ -129396,11 +129227,11 @@ - - - - - + + + + + @@ -129428,21 +129259,21 @@ - - - + + + - - - - + + + + - - - - + + + + @@ -129455,9 +129286,9 @@ - - - + + + @@ -129468,13 +129299,13 @@ - - + + - - - + + + @@ -129482,50 +129313,50 @@ - - - + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -129539,8 +129370,8 @@ - - + + @@ -129616,9 +129447,9 @@ - - - + + + @@ -129652,12 +129483,12 @@ - - + + - - - + + + @@ -129667,17 +129498,17 @@ - - - + + + - - - + + + - + @@ -129688,9 +129519,9 @@ - - - + + + @@ -129755,10 +129586,10 @@ - - - - + + + + @@ -129786,13 +129617,13 @@ - - - - - - - + + + + + + + @@ -129979,12 +129810,12 @@ - - + + - - + + @@ -129996,11 +129827,11 @@ - - - - - + + + + + @@ -130041,8 +129872,8 @@ - - + + @@ -130095,8 +129926,8 @@ - - + + @@ -130108,9 +129939,9 @@ - - - + + + @@ -130121,28 +129952,28 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - + + + + + @@ -130153,9 +129984,9 @@ - - - + + + @@ -130216,8 +130047,8 @@ - - + + @@ -130256,9 +130087,9 @@ - - - + + + @@ -130314,8 +130145,8 @@ - - + + @@ -130368,51 +130199,51 @@ - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + @@ -130420,18 +130251,18 @@ - - - - + + + + - - + + @@ -130439,14 +130270,14 @@ - - - - + + + + - - - + + + @@ -130482,17 +130313,17 @@ - - + + - - - + + + @@ -130502,9 +130333,9 @@ - - - + + + @@ -130546,12 +130377,12 @@ - - + + - - + + @@ -130565,67 +130396,67 @@ - - - + + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + @@ -130633,19 +130464,19 @@ - - + + - - + + - - - - - + + + + + @@ -130656,41 +130487,41 @@ - - - - + + + + - - - + + + - - + + - - - - - + + + + + - - + + - - + + @@ -130699,16 +130530,16 @@ - - - - + + + + - - - - + + + + @@ -130729,11 +130560,11 @@ - - - - - + + + + + @@ -130750,24 +130581,24 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + @@ -130802,12 +130633,12 @@ - - + + - - + + @@ -130832,18 +130663,18 @@ - - - + + + - - + + - - - + + + @@ -130867,18 +130698,18 @@ - - - - - + + + + + - - - - - + + + + + @@ -130889,19 +130720,19 @@ - - - - + + + + - - + + - - - + + + @@ -130920,14 +130751,14 @@ - - - + + + - - - + + + @@ -130953,9 +130784,9 @@ - - - + + + @@ -130968,22 +130799,22 @@ - - - - + + + + - - + + - - + + @@ -130997,43 +130828,43 @@ - - + + - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + @@ -131046,9 +130877,9 @@ - - - + + + @@ -131081,14 +130912,14 @@ - - - - + + + + - - + + @@ -131099,44 +130930,44 @@ - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -131170,16 +131001,16 @@ - - - - - - + + + + + + - - - + + + @@ -131187,9 +131018,9 @@ - - - + + + @@ -131233,33 +131064,33 @@ - - - + + + - - - + + + - - + + - - + + - - - + + + - - - - + + + + @@ -131284,9 +131115,9 @@ - - - + + + @@ -131302,32 +131133,32 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - - + + + @@ -131336,9 +131167,9 @@ - - - + + + @@ -131346,74 +131177,74 @@ - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -131425,42 +131256,42 @@ - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - + + @@ -131475,8 +131306,8 @@ - - + + @@ -131496,8 +131327,8 @@ - - + + @@ -131511,61 +131342,61 @@ - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - + + + + @@ -131583,12 +131414,12 @@ - - - - - - + + + + + + @@ -131599,12 +131430,12 @@ - - - - - - + + + + + + @@ -131619,9 +131450,9 @@ - - - + + + @@ -131634,15 +131465,15 @@ - - + + - - - - - + + + + + @@ -131659,10 +131490,10 @@ - - - - + + + + @@ -131682,10 +131513,10 @@ - - - - + + + + @@ -131711,8 +131542,8 @@ - - + + @@ -131723,8 +131554,8 @@ - - + + @@ -131831,25 +131662,25 @@ - - + + - - - - - - + + + + + + - - - + + + - - + + @@ -131875,8 +131706,8 @@ - - + + @@ -131891,16 +131722,16 @@ - - + + - - + + - - + + @@ -131985,19 +131816,19 @@ - - - + + + - - - + + + - - - + + + @@ -132012,8 +131843,8 @@ - - + + @@ -132044,9 +131875,9 @@ - - - + + + @@ -132076,14 +131907,14 @@ - - - + + + - - - + + + @@ -132096,9 +131927,9 @@ - - - + + + @@ -132106,10 +131937,10 @@ - - - - + + + + @@ -132123,12 +131954,12 @@ - - + + - - + + @@ -132149,9 +131980,9 @@ - - - + + + @@ -132163,9 +131994,9 @@ - - - + + + @@ -132213,8 +132044,8 @@ - - + + @@ -132260,9 +132091,9 @@ - - - + + + @@ -132278,10 +132109,10 @@ - - - - + + + + @@ -132302,10 +132133,10 @@ - - - - + + + + @@ -132338,17 +132169,17 @@ - - + + - - - + + + @@ -132362,40 +132193,40 @@ - - + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - + + - - + + - - + + @@ -132417,20 +132248,20 @@ - - - - - - + + + + + + - - + + - - + + @@ -132438,21 +132269,21 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -132463,7 +132294,7 @@ - + @@ -132482,21 +132313,21 @@ - - - - + + + + - - - - - - - - - + + + + + + + + + @@ -132530,8 +132361,8 @@ - - + + @@ -132551,9 +132382,9 @@ - - - + + + @@ -132561,23 +132392,23 @@ - - - + + + - - - + + + - - - + + + @@ -132598,37 +132429,37 @@ - - + + - - - - + + + + - - - + + + - - + + - - - - + + + + @@ -132642,11 +132473,11 @@ - - - - - + + + + + @@ -132697,10 +132528,10 @@ - - - - + + + + @@ -132759,24 +132590,24 @@ - - + + - - + + - - + + @@ -132786,11 +132617,11 @@ - - - - - + + + + + @@ -132835,14 +132666,14 @@ - - - - + + + + - - - + + + @@ -133074,8 +132905,8 @@ - - + + @@ -133095,29 +132926,29 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + @@ -133129,14 +132960,14 @@ - - - + + + - - - + + + @@ -133149,16 +132980,16 @@ - - - - + + + + - - - - + + + + @@ -133210,12 +133041,12 @@ - - + + - - + + @@ -133262,24 +133093,24 @@ - - + + - - + + - - + + - - + + @@ -133299,13 +133130,13 @@ - - + + - - - + + + @@ -133319,18 +133150,19 @@ - - - - + + + + - - - - + + + + + @@ -133348,8 +133180,8 @@ - - + + @@ -133364,8 +133196,8 @@ - - + + @@ -133399,8 +133231,8 @@ - - + + @@ -133418,10 +133250,10 @@ - - - - + + + + @@ -133434,54 +133266,54 @@ - - + + - - - + + + - - + + - + - + - - - - + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + + - - + + @@ -133490,36 +133322,36 @@ - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + @@ -133530,12 +133362,12 @@ - - - - - - + + + + + + @@ -133554,9 +133386,9 @@ - - - + + + @@ -133566,8 +133398,8 @@ - - + + @@ -133581,10 +133413,10 @@ - - - - + + + + @@ -133597,13 +133429,13 @@ - - - + + + - - + + @@ -133656,11 +133488,11 @@ - - - - - + + + + + @@ -133676,20 +133508,20 @@ - - + + - - + + - - + + @@ -133697,24 +133529,24 @@ - - + + - - + + - - + + @@ -133774,8 +133606,8 @@ - - + + @@ -133785,21 +133617,21 @@ - - - - - + + + + + - - - - + + + + @@ -133813,19 +133645,19 @@ - - - + + + - - + + - - - - + + + + @@ -133848,48 +133680,48 @@ - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + @@ -133898,7 +133730,7 @@ - + @@ -133938,17 +133770,17 @@ - + - + - - + + @@ -133967,8 +133799,8 @@ - - + + @@ -133995,31 +133827,31 @@ - - + + - - - - + + + + - - - + + + - - - + + + @@ -134079,8 +133911,8 @@ - - + + @@ -134121,16 +133953,16 @@ - - + + - - + + - - + + @@ -134141,8 +133973,8 @@ - - + + @@ -134165,12 +133997,12 @@ - - + + - - + + @@ -134186,8 +134018,8 @@ - - + + @@ -134306,10 +134138,10 @@ - - - - + + + + @@ -134318,20 +134150,20 @@ - - - - - - - - + + + + + + + + - - - - + + + + @@ -134339,14 +134171,14 @@ - - - + + + - - - + + + @@ -134364,8 +134196,8 @@ - - + + @@ -134377,8 +134209,8 @@ - - + + @@ -134415,8 +134247,8 @@ - - + + @@ -134467,22 +134299,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -134572,8 +134404,8 @@ - - + + @@ -134581,22 +134413,22 @@ - - + + - - - - - - + + + + + + - - - - + + + + @@ -134609,9 +134441,9 @@ - - - + + + @@ -134619,9 +134451,9 @@ - - - + + + @@ -134669,13 +134501,13 @@ - - - - - - - + + + + + + + @@ -134683,28 +134515,28 @@ - - + + - - + + - - + + - - + + - - + + @@ -134720,20 +134552,20 @@ - - - - - - + + + + + + - - - + + + - - + + @@ -134749,8 +134581,8 @@ - - + + @@ -134767,8 +134599,8 @@ - - + + @@ -134781,15 +134613,15 @@ - - - + + + - - - - + + + + @@ -134797,39 +134629,39 @@ - - - + + + - - - - + + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + @@ -134837,30 +134669,30 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -134987,8 +134819,8 @@ - - + + @@ -135107,12 +134939,12 @@ - - + + - - + + @@ -135129,9 +134961,9 @@ - - - + + + @@ -135139,9 +134971,9 @@ - - - + + + @@ -135149,9 +134981,9 @@ - - - + + + @@ -135176,12 +135008,12 @@ - - + + - - + + @@ -135199,10 +135031,10 @@ - - - - + + + + @@ -135219,62 +135051,62 @@ - - - - + + + + - - - + + + - - + + - - - - - - + + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -135285,7 +135117,7 @@ - + @@ -135319,10 +135151,10 @@ - - - - + + + + @@ -135364,7 +135196,7 @@ - + @@ -135372,34 +135204,34 @@ - - + + - - + + - - + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -135410,10 +135242,10 @@ - - - - + + + + @@ -135423,8 +135255,8 @@ - - + + @@ -135435,8 +135267,8 @@ - - + + @@ -135474,8 +135306,8 @@ - - + + @@ -135513,14 +135345,14 @@ - - - - - + + + + + - - + + @@ -135558,11 +135390,11 @@ - - - - - + + + + + @@ -135706,21 +135538,21 @@ - - + + - - - + + + - - + + - - + + @@ -135754,11 +135586,11 @@ - - - - - + + + + + @@ -135773,21 +135605,21 @@ - - + + - - + + - - + + - - - + + + @@ -135803,11 +135635,11 @@ - - - - - + + + + + @@ -135848,21 +135680,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -135883,26 +135715,26 @@ - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + @@ -135911,20 +135743,20 @@ - - - + + + - - - + + + - - - + + + @@ -135934,26 +135766,26 @@ - - - + + + - - - + + + - - - - + + + + - - - - + + + + @@ -136099,9 +135931,9 @@ - - - + + + @@ -136110,9 +135942,9 @@ - - - + + + @@ -136120,21 +135952,21 @@ - - + + - - - - + + + + - - + + - - + + @@ -136142,15 +135974,15 @@ - - - + + + - - - - + + + + @@ -136162,33 +135994,33 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - + + + @@ -136196,28 +136028,28 @@ - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -136228,13 +136060,13 @@ - - - - - - - + + + + + + + @@ -136266,14 +136098,14 @@ - - + + - - - - + + + + @@ -136281,10 +136113,10 @@ - - - - + + + + @@ -136292,10 +136124,10 @@ - - - - + + + + @@ -136318,10 +136150,10 @@ - - - - + + + + @@ -136337,29 +136169,29 @@ - + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -136388,13 +136220,13 @@ - - - - - - - + + + + + + + @@ -136413,10 +136245,10 @@ - - - - + + + + @@ -136433,10 +136265,10 @@ - - - - + + + + @@ -136446,30 +136278,30 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - - - + + + + + + + @@ -136486,13 +136318,13 @@ - - + + - - - + + + @@ -136511,39 +136343,39 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + @@ -136560,55 +136392,55 @@ - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -136618,9 +136450,9 @@ - - - + + + @@ -136630,16 +136462,16 @@ - - - - - + + + + + - - - + + + @@ -136674,15 +136506,15 @@ - - - + + + - - - - + + + + @@ -136695,11 +136527,11 @@ - - - - - + + + + + @@ -136709,16 +136541,16 @@ - - - - - + + + + + - - - + + + @@ -136728,8 +136560,8 @@ - - + + @@ -136741,25 +136573,25 @@ - - + + - - + + - - - - - - - + + + + + + + - - + + @@ -136770,9 +136602,9 @@ - - - + + + @@ -136824,9 +136656,9 @@ - - - + + + @@ -136860,22 +136692,22 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -136954,13 +136786,13 @@ - - + + - - - + + + @@ -137012,8 +136844,8 @@ - - + + @@ -137029,9 +136861,9 @@ - - - + + + @@ -137041,17 +136873,17 @@ - - - - + + + + - - - - - + + + + + @@ -137068,17 +136900,17 @@ - - + + - - - - - - - + + + + + + + @@ -137087,23 +136919,23 @@ - - + + - - - - + + + + - - - + + + - - + + @@ -137114,12 +136946,12 @@ - - - - - - + + + + + + @@ -137131,8 +136963,8 @@ - - + + @@ -137144,18 +136976,18 @@ - - - - - - + + + + + + - - - - + + + + @@ -137163,12 +136995,12 @@ - - + + - - + + @@ -137206,9 +137038,9 @@ - - - + + + @@ -137220,8 +137052,8 @@ - - + + @@ -137253,45 +137085,45 @@ - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + @@ -137336,9 +137168,9 @@ - - - + + + @@ -137369,10 +137201,10 @@ - - - - + + + + @@ -137464,14 +137296,14 @@ - - - - + + + + - - + + @@ -137489,8 +137321,8 @@ - - + + @@ -137503,9 +137335,9 @@ - - - + + + @@ -137724,10 +137556,10 @@ - - - - + + + + @@ -137735,9 +137567,9 @@ - - - + + + @@ -137826,9 +137658,9 @@ - - - + + + @@ -137849,13 +137681,13 @@ - - - - - - - + + + + + + + @@ -137867,29 +137699,29 @@ - - - + + + - - + + - - + + - - - - - - + + + + + + - - + + @@ -137947,9 +137779,9 @@ - - - + + + @@ -137961,17 +137793,17 @@ - - - - - - + + + + + + - - - + + + @@ -138095,9 +137927,9 @@ - - - + + + @@ -138130,30 +137962,30 @@ - - + + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -138176,9 +138008,9 @@ - - - + + + @@ -138196,8 +138028,8 @@ - - + + @@ -138232,10 +138064,10 @@ - - - - + + + + @@ -138244,21 +138076,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -138266,21 +138098,21 @@ - - - - + + + + - - - - - + + + + + - - - + + + @@ -138299,12 +138131,12 @@ - - - + + + - - + + @@ -138319,26 +138151,26 @@ - - + + - - + + - - + + - + - + @@ -138350,12 +138182,12 @@ - - + + - - + + @@ -138370,23 +138202,23 @@ - - + + - - + + - - - + + + - + - + @@ -138405,15 +138237,15 @@ - - - + + + - - - - + + + + @@ -138426,20 +138258,20 @@ - - - + + + - - - - + + + + - - - + + + @@ -138461,9 +138293,9 @@ - - - + + + @@ -138472,10 +138304,10 @@ - - - - + + + + @@ -138483,9 +138315,9 @@ - - - + + + @@ -138493,9 +138325,9 @@ - - - + + + @@ -138504,17 +138336,17 @@ - - - - + + + + - + @@ -138526,8 +138358,8 @@ - - + + @@ -138569,8 +138401,8 @@ - - + + @@ -138663,8 +138495,8 @@ - - + + @@ -138673,8 +138505,8 @@ - - + + @@ -138706,19 +138538,19 @@ - - - - - - - - - + + + + + + + + + - - + + @@ -138730,9 +138562,9 @@ - - - + + + @@ -138751,14 +138583,14 @@ - - - - + + + + - - + + @@ -138786,9 +138618,9 @@ - - - + + + @@ -138806,7 +138638,6 @@ - @@ -138828,19 +138659,19 @@ - - + + - - - - + + + + - - - + + + @@ -138858,8 +138689,8 @@ - - + + @@ -138869,24 +138700,24 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -138896,32 +138727,32 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -138938,12 +138769,12 @@ - + - - - + + + @@ -139071,10 +138902,10 @@ - - - - + + + + @@ -139082,10 +138913,10 @@ - - - - + + + + @@ -139164,19 +138995,19 @@ - - - + + + - - - + + + - - - + + + @@ -139206,8 +139037,8 @@ - - + + @@ -139225,16 +139056,16 @@ - - + + - - + + @@ -139287,9 +139118,9 @@ - - - + + + @@ -139303,9 +139134,9 @@ - - - + + + @@ -139344,8 +139175,8 @@ - - + + @@ -139391,9 +139222,9 @@ - - - + + + @@ -139484,11 +139315,11 @@ - - - - - + + + + + @@ -139723,9 +139554,9 @@ - - - + + + @@ -139843,15 +139674,15 @@ - - + + - - - - - + + + + + @@ -139885,8 +139716,8 @@ - - + + @@ -139921,17 +139752,17 @@ - - + + - - + + - - - + + + @@ -139942,8 +139773,8 @@ - - + + @@ -139974,12 +139805,12 @@ - - + + - - + + @@ -140002,8 +139833,8 @@ - - + + @@ -140025,8 +139856,8 @@ - - + + @@ -140062,9 +139893,9 @@ - - - + + + @@ -140087,9 +139918,9 @@ - - - + + + @@ -140104,16 +139935,16 @@ - - + + - - + + - - + + @@ -140132,8 +139963,8 @@ - - + + @@ -140148,16 +139979,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -140191,8 +140022,8 @@ - - + + @@ -140215,9 +140046,9 @@ - - - + + + @@ -140229,9 +140060,9 @@ - - - + + + @@ -140250,24 +140081,24 @@ - - - + + + - - - - + + + + - - - + + + @@ -140294,8 +140125,8 @@ - - + + @@ -140314,9 +140145,9 @@ - - - + + + @@ -140325,28 +140156,28 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -140355,14 +140186,14 @@ - - - - + + + + - - + + @@ -140373,9 +140204,9 @@ - - - + + + @@ -140409,8 +140240,8 @@ - - + + @@ -140512,15 +140343,15 @@ - - - + + + - - - - + + + + @@ -140532,8 +140363,8 @@ - - + + @@ -140599,8 +140430,8 @@ - - + + @@ -140612,10 +140443,10 @@ - - - - + + + + @@ -140639,30 +140470,30 @@ - - + + - - + + - - - + + + - - - + + + - - + + @@ -140674,10 +140505,10 @@ - - - - + + + + @@ -140701,9 +140532,9 @@ - - - + + + @@ -140711,8 +140542,8 @@ - - + + @@ -140751,9 +140582,9 @@ - - - + + + @@ -140774,10 +140605,10 @@ - - - - + + + + @@ -140827,9 +140658,9 @@ - - - + + + @@ -140889,21 +140720,21 @@ - - - + + + - - - - - - + + + + + + - - + + @@ -141079,9 +140910,9 @@ - - - + + + @@ -141095,27 +140926,27 @@ - - + + - - - - + + + + - - - + + + @@ -141129,33 +140960,33 @@ - - - - - + + + + + - - - + + + - - + + - - + + - - + + - - - + + + @@ -141401,15 +141232,15 @@ - - - + + + - - - - + + + + @@ -141460,9 +141291,9 @@ - - - + + + @@ -141476,15 +141307,15 @@ - - - - + + + + - - - + + + @@ -141562,9 +141393,9 @@ - - - + + + @@ -141580,36 +141411,36 @@ - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -141624,9 +141455,9 @@ - - - + + + @@ -141641,14 +141472,14 @@ - - - + + + - - - + + + @@ -141690,15 +141521,15 @@ - - + + - - - - - + + + + + @@ -141706,11 +141537,11 @@ - - - - - + + + + + @@ -141726,8 +141557,8 @@ - - + + @@ -141747,8 +141578,8 @@ - - + + @@ -141791,8 +141622,8 @@ - - + + @@ -141828,8 +141659,8 @@ - - + + @@ -141896,9 +141727,9 @@ - - - + + + @@ -141969,26 +141800,26 @@ - - - - - - - + + + + + + + - - + + - - - + + + @@ -142025,21 +141856,21 @@ - - - + + + - - - + + + - - - + + + @@ -142103,15 +141934,15 @@ - - + + - - + + @@ -142122,16 +141953,16 @@ - - - - - + + + + + - - - + + + @@ -142140,11 +141971,11 @@ - - - - - + + + + + @@ -142153,9 +141984,9 @@ - - - + + + @@ -142205,11 +142036,11 @@ - - - - - + + + + + @@ -142219,23 +142050,23 @@ - - - - + + + + - - - + + + - - + + - - + + @@ -142248,12 +142079,12 @@ - - + + - - + + @@ -142261,8 +142092,8 @@ - - + + @@ -142279,8 +142110,8 @@ - - + + @@ -142288,12 +142119,12 @@ - - - + + + - + @@ -142322,17 +142153,17 @@ - - - + + + - - + + @@ -142399,28 +142230,28 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + @@ -142430,17 +142261,17 @@ - - + + - - - - + + + + @@ -142451,26 +142282,26 @@ - - - - + + + + - - - - + + + + - - + + - - - - + + + + @@ -142481,9 +142312,9 @@ - - - + + + @@ -142515,10 +142346,10 @@ - - - - + + + + @@ -142551,9 +142382,9 @@ - - - + + + @@ -142570,15 +142401,15 @@ - - - - + + + + - - - + + + @@ -142602,12 +142433,12 @@ - - - - - - + + + + + + @@ -142629,13 +142460,13 @@ - - + + - - - + + + @@ -142652,10 +142483,10 @@ - - - - + + + + @@ -142666,47 +142497,47 @@ - - - + + + - - + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index 37eeb6f8b5f2..e1befd71e03a 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -1952,6 +1952,7 @@ __traceiter_android_vh_set_module_permit_after_init __traceiter_android_vh_set_module_permit_before_init __traceiter_android_vh_set_wake_flags + __traceiter_android_vh_snd_soc_card_get_comp_chain __traceiter_android_vh_syscall_prctl_finished __traceiter_android_vh_ufs_send_command __traceiter_android_vh_ufs_send_tm_command @@ -2030,6 +2031,7 @@ __tracepoint_android_vh_set_module_permit_after_init __tracepoint_android_vh_set_module_permit_before_init __tracepoint_android_vh_set_wake_flags + __tracepoint_android_vh_snd_soc_card_get_comp_chain __tracepoint_android_vh_syscall_prctl_finished __tracepoint_android_vh_ufs_send_command __tracepoint_android_vh_ufs_send_tm_command From b397a0387cb280697e83033ec9a45f4a2e7bc444 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Tue, 3 Aug 2021 23:06:26 -0700 Subject: [PATCH 38/62] ANDROID: fips140: test all implementations Test all implementations of each algorithm rather than just the highest priority implementation. This aligns with the revised guidance we have received from the lab. We can still skip some tests in some cases, as per the FIPS 140-2 Implementation Guidance document. See the comments for details. To align with the new scope of the tests, the fips140.broken_alg module parameter now must specify an implementation (e.g. "sha256-ce") rather than an algorithm (e.g. "sha256"). No change to the DRBG tests is required, as it turns out the module only includes HMAC_DRBG. However, clarify the comment about the DRBG tests. On a Pixel device, this increases the running time of the fips140 tests from 0.5ms to 3.1 ms (very roughly; there's a lot of variation). This is still very fast, so it isn't expected to be a problem. Bug: 153614920 Bug: 173104584 Bug: 188620248 Change-Id: I555b535dd45f0164b7744a2c9338c501bb88de86 Signed-off-by: Eric Biggers (cherry picked from commit abe07806964be48e8d0005e26f33632ace5e4152) --- crypto/fips140-selftests.c | 597 ++++++++++++++++++++++--------------- 1 file changed, 359 insertions(+), 238 deletions(-) diff --git a/crypto/fips140-selftests.c b/crypto/fips140-selftests.c index 3ebf5a914cf0..6679e675fe03 100644 --- a/crypto/fips140-selftests.c +++ b/crypto/fips140-selftests.c @@ -14,10 +14,6 @@ * is somewhat helpful. Basically, all implementations of all FIPS approved * algorithms (including modes of operation) must be tested. However: * - * - If an implementation won't be used, it doesn't have to be tested. So - * when multiple implementations of the same algorithm are registered with - * the crypto API, we only have to test the default (highest-priority) one. - * * - There are provisions for skipping tests that are already sufficiently * covered by other tests. E.g., HMAC-SHA256 may cover SHA-256. * @@ -28,12 +24,15 @@ * * - Only one key size per algorithm needs to be tested. * + * There is some ambiguity about whether all implementations of each algorithm + * must be tested, or whether it is sufficient to test just the highest priority + * implementation. To be safe we test all implementations, except ones that can + * be excluded by one of the rules above. + * * See fips140_selftests[] for the list of tests we've selected. Currently, all * our test vectors except the DRBG ones were generated by the script * tools/crypto/gen_fips140_testvecs.py, using the known-good implementations in - * the Python packages hashlib, pycryptodome, and cryptography. The DRBG test - * vectors were manually extracted from - * https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/drbg/drbgtestvectors.zip. + * the Python packages hashlib, pycryptodome, and cryptography. * * Note that we don't reuse the upstream crypto API's self-tests * (crypto/testmgr.{c,h}), for several reasons: @@ -54,22 +53,12 @@ #include #include #include -#include #include #include #include #include "fips140-module.h" -/* Test vector for a block cipher algorithm */ -struct blockcipher_testvec { - const u8 *key; - size_t key_size; - const u8 *plaintext; - const u8 *ciphertext; - size_t block_size; -}; - /* Test vector for an AEAD algorithm */ struct aead_testvec { const u8 *key; @@ -121,15 +110,27 @@ struct drbg_testvec { size_t out_size; }; -/* - * A struct which specifies an algorithm name (using crypto API syntax), a test - * function for that algorithm, and a test vector used by that test function. - */ struct fips_test { + /* The name of the algorithm, in crypto API syntax */ const char *alg; - int __must_check (*func)(const struct fips_test *test); + + /* + * The optional list of implementations to test. @func will be called + * once per implementation, or once with @alg if this list is empty. + * The implementation names must be given in crypto API syntax, or in + * the case of a library implementation should have "-lib" appended. + */ + const char *impls[8]; + + /* + * The test function. It should execute a known-answer test on an + * algorithm implementation, using the below test vector. + */ + int __must_check (*func)(const struct fips_test *test, + const char *impl); + + /* The test vector, with a format specific to the type of algorithm */ union { - struct blockcipher_testvec blockcipher; struct aead_testvec aead; struct skcipher_testvec skcipher; struct hash_testvec hash; @@ -141,17 +142,16 @@ struct fips_test { #define MAX_IV_SIZE 16 static int __init __must_check -fips_check_result(const struct fips_test *test, u8 *result, - const u8 *expected_result, size_t result_size, - const char *operation) +fips_check_result(u8 *result, const u8 *expected_result, size_t result_size, + const char *impl, const char *operation) { #ifdef CONFIG_CRYPTO_FIPS140_MOD_ERROR_INJECTION /* Inject a failure (via corrupting the result) if requested. */ - if (fips140_broken_alg && strcmp(test->alg, fips140_broken_alg) == 0) + if (fips140_broken_alg && strcmp(impl, fips140_broken_alg) == 0) result[0] ^= 0xff; #endif if (memcmp(result, expected_result, result_size) != 0) { - pr_err("wrong result from %s %s\n", test->alg, operation); + pr_err("wrong result from %s %s\n", impl, operation); return -EBADMSG; } return 0; @@ -176,96 +176,65 @@ fips_validate_alg(const struct crypto_alg *alg) return 0; } -/* Test a block cipher using the crypto_cipher API. */ static int __init __must_check -fips_test_blockcipher(const struct fips_test *test) +fips_handle_alloc_tfm_error(const char *impl, int err) { - const struct blockcipher_testvec *vec = &test->blockcipher; - struct crypto_cipher *tfm; - u8 block[MAX_CIPHER_BLOCKSIZE]; - int err; + if (err == -ENOENT) { + /* + * The requested implementation of the algorithm wasn't found. + * This is expected if the CPU lacks a feature the + * implementation needs, such as the ARMv8 Crypto Extensions. + * + * When this happens, the implementation isn't available for + * use, so we can't test it, nor do we need to. So we just skip + * the test. + */ - if (WARN_ON(vec->block_size > MAX_CIPHER_BLOCKSIZE)) - return -EINVAL; + /* + * "ghash-neon" is a bit unusual in that it is only registered + * if the CPU does *not* have a feature. Skip it silently in + * order to avoid a confusing log message. + */ + if (!strcmp(impl, "gcm_base(ctr(aes-generic),ghash-neon)")) + return 0; - tfm = crypto_alloc_cipher(test->alg, 0, 0); - if (IS_ERR(tfm)) { - err = PTR_ERR(tfm); - pr_err("failed to allocate %s tfm: %d\n", test->alg, err); - return err; + pr_info("%s is unavailable (no CPU support?), skipping testing it\n", + impl); + return 0; } - err = fips_validate_alg(tfm->base.__crt_alg); - if (err) - goto out; - if (crypto_cipher_blocksize(tfm) != vec->block_size) { - pr_err("%s has wrong block size\n", test->alg); - err = -EINVAL; - goto out; - } - - err = crypto_cipher_setkey(tfm, vec->key, vec->key_size); - if (err) { - pr_err("failed to set %s key: %d\n", test->alg, err); - goto out; - } - - /* Encrypt the plaintext, then verify the resulting ciphertext. */ - memcpy(block, vec->plaintext, vec->block_size); - crypto_cipher_encrypt_one(tfm, block, block); - err = fips_check_result(test, block, vec->ciphertext, vec->block_size, - "encryption"); - if (err) - goto out; - - /* Decrypt the ciphertext, then verify the resulting plaintext. */ - crypto_cipher_decrypt_one(tfm, block, block); - err = fips_check_result(test, block, vec->plaintext, vec->block_size, - "decryption"); -out: - crypto_free_cipher(tfm); + pr_err("failed to allocate %s tfm: %d\n", impl, err); return err; } -/* - * Test for plain AES (no mode of operation). We test this separately from the - * AES modes because the implementation of AES which is used by the "aes" - * crypto_cipher isn't necessarily the same as that used by the AES modes such - * as "ecb(aes)". Similarly, the aes_{encrypt,decrypt}() library functions may - * use a different implementation as well, so we test them separately too. - */ static int __init __must_check -fips_test_aes(const struct fips_test *test) +fips_test_aes_library(const struct fips_test *test, const char *impl) { - const struct blockcipher_testvec *vec = &test->blockcipher; + const struct skcipher_testvec *vec = &test->skcipher; struct crypto_aes_ctx ctx; u8 block[AES_BLOCK_SIZE]; int err; - if (WARN_ON(vec->block_size != AES_BLOCK_SIZE)) + if (WARN_ON(vec->message_size != AES_BLOCK_SIZE)) return -EINVAL; - err = fips_test_blockcipher(test); - if (err) - return err; - err = aes_expandkey(&ctx, vec->key, vec->key_size); if (err) { pr_err("aes_expandkey() failed: %d\n", err); return err; } aes_encrypt(&ctx, block, vec->plaintext); - err = fips_check_result(test, block, vec->ciphertext, AES_BLOCK_SIZE, - "encryption (library API)"); + err = fips_check_result(block, vec->ciphertext, AES_BLOCK_SIZE, + impl, "encryption"); if (err) return err; aes_decrypt(&ctx, block, block); - return fips_check_result(test, block, vec->plaintext, AES_BLOCK_SIZE, - "decryption (library API)"); + return fips_check_result(block, vec->plaintext, AES_BLOCK_SIZE, + impl, "decryption"); } /* Test a length-preserving symmetric cipher using the crypto_skcipher API. */ static int __init __must_check -fips_test_skcipher(const struct fips_test *test) +fips_test_skcipher(const struct fips_test *test, const char *impl) { const struct skcipher_testvec *vec = &test->skcipher; struct crypto_skcipher *tfm; @@ -277,18 +246,17 @@ fips_test_skcipher(const struct fips_test *test) if (WARN_ON(vec->iv_size > MAX_IV_SIZE)) return -EINVAL; + if (WARN_ON(vec->message_size <= 0)) + return -EINVAL; - tfm = crypto_alloc_skcipher(test->alg, 0, 0); - if (IS_ERR(tfm)) { - err = PTR_ERR(tfm); - pr_err("failed to allocate %s tfm: %d\n", test->alg, err); - return err; - } + tfm = crypto_alloc_skcipher(impl, 0, 0); + if (IS_ERR(tfm)) + return fips_handle_alloc_tfm_error(impl, PTR_ERR(tfm)); err = fips_validate_alg(&crypto_skcipher_alg(tfm)->base); if (err) goto out; if (crypto_skcipher_ivsize(tfm) != vec->iv_size) { - pr_err("%s has wrong IV size\n", test->alg); + pr_err("%s has wrong IV size\n", impl); err = -EINVAL; goto out; } @@ -307,7 +275,7 @@ fips_test_skcipher(const struct fips_test *test) err = crypto_skcipher_setkey(tfm, vec->key, vec->key_size); if (err) { - pr_err("failed to set %s key: %d\n", test->alg, err); + pr_err("failed to set %s key: %d\n", impl, err); goto out; } @@ -315,11 +283,11 @@ fips_test_skcipher(const struct fips_test *test) memcpy(iv, vec->iv, vec->iv_size); err = crypto_skcipher_encrypt(req); if (err) { - pr_err("%s encryption failed: %d\n", test->alg, err); + pr_err("%s encryption failed: %d\n", impl, err); goto out; } - err = fips_check_result(test, message, vec->ciphertext, - vec->message_size, "encryption"); + err = fips_check_result(message, vec->ciphertext, vec->message_size, + impl, "encryption"); if (err) goto out; @@ -327,11 +295,11 @@ fips_test_skcipher(const struct fips_test *test) memcpy(iv, vec->iv, vec->iv_size); err = crypto_skcipher_decrypt(req); if (err) { - pr_err("%s decryption failed: %d\n", test->alg, err); + pr_err("%s decryption failed: %d\n", impl, err); goto out; } - err = fips_check_result(test, message, vec->plaintext, - vec->message_size, "decryption"); + err = fips_check_result(message, vec->plaintext, vec->message_size, + impl, "decryption"); out: kfree(message); skcipher_request_free(req); @@ -341,7 +309,7 @@ out: /* Test an AEAD using the crypto_aead API. */ static int __init __must_check -fips_test_aead(const struct fips_test *test) +fips_test_aead(const struct fips_test *test, const char *impl) { const struct aead_testvec *vec = &test->aead; const int tag_size = vec->ciphertext_size - vec->plaintext_size; @@ -359,17 +327,14 @@ fips_test_aead(const struct fips_test *test) if (WARN_ON(vec->ciphertext_size <= vec->plaintext_size)) return -EINVAL; - tfm = crypto_alloc_aead(test->alg, 0, 0); - if (IS_ERR(tfm)) { - err = PTR_ERR(tfm); - pr_err("failed to allocate %s tfm: %d\n", test->alg, err); - return err; - } + tfm = crypto_alloc_aead(impl, 0, 0); + if (IS_ERR(tfm)) + return fips_handle_alloc_tfm_error(impl, PTR_ERR(tfm)); err = fips_validate_alg(&crypto_aead_alg(tfm)->base); if (err) goto out; if (crypto_aead_ivsize(tfm) != vec->iv_size) { - pr_err("%s has wrong IV size\n", test->alg); + pr_err("%s has wrong IV size\n", impl); err = -EINVAL; goto out; } @@ -393,14 +358,14 @@ fips_test_aead(const struct fips_test *test) err = crypto_aead_setkey(tfm, vec->key, vec->key_size); if (err) { - pr_err("failed to set %s key: %d\n", test->alg, err); + pr_err("failed to set %s key: %d\n", impl, err); goto out; } err = crypto_aead_setauthsize(tfm, tag_size); if (err) { pr_err("failed to set %s authentication tag size: %d\n", - test->alg, err); + impl, err); goto out; } @@ -412,11 +377,11 @@ fips_test_aead(const struct fips_test *test) aead_request_set_crypt(req, sg, sg, vec->plaintext_size, iv); err = crypto_aead_encrypt(req); if (err) { - pr_err("%s encryption failed: %d\n", test->alg, err); + pr_err("%s encryption failed: %d\n", impl, err); goto out; } - err = fips_check_result(test, message, vec->ciphertext, - vec->ciphertext_size, "encryption"); + err = fips_check_result(message, vec->ciphertext, vec->ciphertext_size, + impl, "encryption"); if (err) goto out; @@ -428,11 +393,11 @@ fips_test_aead(const struct fips_test *test) aead_request_set_crypt(req, sg, sg, vec->ciphertext_size, iv); err = crypto_aead_decrypt(req); if (err) { - pr_err("%s decryption failed: %d\n", test->alg, err); + pr_err("%s decryption failed: %d\n", impl, err); goto out; } - err = fips_check_result(test, message, vec->plaintext, - vec->plaintext_size, "decryption"); + err = fips_check_result(message, vec->plaintext, vec->plaintext_size, + impl, "decryption"); out: kfree(message); kfree(assoc); @@ -449,7 +414,7 @@ out: * be no hash algorithms that can be accessed only through crypto_ahash. */ static int __init __must_check -fips_test_hash(const struct fips_test *test) +fips_test_hash(const struct fips_test *test, const char *impl) { const struct hash_testvec *vec = &test->hash; struct crypto_shash *tfm; @@ -459,17 +424,14 @@ fips_test_hash(const struct fips_test *test) if (WARN_ON(vec->digest_size > HASH_MAX_DIGESTSIZE)) return -EINVAL; - tfm = crypto_alloc_shash(test->alg, 0, 0); - if (IS_ERR(tfm)) { - err = PTR_ERR(tfm); - pr_err("failed to allocate %s tfm: %d\n", test->alg, err); - return err; - } + tfm = crypto_alloc_shash(impl, 0, 0); + if (IS_ERR(tfm)) + return fips_handle_alloc_tfm_error(impl, PTR_ERR(tfm)); err = fips_validate_alg(&crypto_shash_alg(tfm)->base); if (err) goto out; if (crypto_shash_digestsize(tfm) != vec->digest_size) { - pr_err("%s has wrong digest size\n", test->alg); + pr_err("%s has wrong digest size\n", impl); err = -EINVAL; goto out; } @@ -477,7 +439,7 @@ fips_test_hash(const struct fips_test *test) if (vec->key) { err = crypto_shash_setkey(tfm, vec->key, vec->key_size); if (err) { - pr_err("failed to set %s key: %d\n", test->alg, err); + pr_err("failed to set %s key: %d\n", impl, err); goto out; } } @@ -485,22 +447,18 @@ fips_test_hash(const struct fips_test *test) err = crypto_shash_tfm_digest(tfm, vec->message, vec->message_size, digest); if (err) { - pr_err("%s digest computation failed: %d\n", test->alg, err); + pr_err("%s digest computation failed: %d\n", impl, err); goto out; } - err = fips_check_result(test, digest, vec->digest, vec->digest_size, - "digest"); + err = fips_check_result(digest, vec->digest, vec->digest_size, + impl, "digest"); out: crypto_free_shash(tfm); return err; } -/* - * Test the sha256() library function, as it may not be covered by the "sha256" - * crypto_shash, and thus may not be covered by the "hmac(sha256)" test we do. - */ static int __init __must_check -fips_test_sha256_library(const struct fips_test *test) +fips_test_sha256_library(const struct fips_test *test, const char *impl) { const struct hash_testvec *vec = &test->hash; u8 digest[SHA256_DIGEST_SIZE]; @@ -509,13 +467,13 @@ fips_test_sha256_library(const struct fips_test *test) return -EINVAL; sha256(vec->message, vec->message_size, digest); - return fips_check_result(test, digest, vec->digest, vec->digest_size, - "digest (library API)"); + return fips_check_result(digest, vec->digest, vec->digest_size, + impl, "digest"); } /* Test a DRBG using the crypto_rng API. */ static int __init __must_check -fips_test_drbg(const struct fips_test *test) +fips_test_drbg(const struct fips_test *test, const char *impl) { const struct drbg_testvec *vec = &test->drbg; struct crypto_rng *rng; @@ -524,12 +482,9 @@ fips_test_drbg(const struct fips_test *test) struct drbg_string addtl, pers, testentropy; int err; - rng = crypto_alloc_rng(test->alg, 0, 0); - if (IS_ERR(rng)) { - err = PTR_ERR(rng); - pr_err("failed to allocate %s tfm: %d\n", test->alg, err); - return PTR_ERR(rng); - } + rng = crypto_alloc_rng(impl, 0, 0); + if (IS_ERR(rng)) + return fips_handle_alloc_tfm_error(impl, PTR_ERR(rng)); err = fips_validate_alg(&crypto_rng_alg(rng)->base); if (err) goto out; @@ -549,7 +504,7 @@ fips_test_drbg(const struct fips_test *test) drbg_string_fill(&pers, vec->pers, vec->pers_size); err = crypto_drbg_reset_test(rng, &pers, &test_data); if (err) { - pr_err("failed to reset %s\n", test->alg); + pr_err("failed to reset %s\n", impl); goto out; } @@ -570,7 +525,7 @@ fips_test_drbg(const struct fips_test *test) } if (err) { pr_err("failed to get bytes from %s (try 1): %d\n", - test->alg, err); + impl, err); goto out; } @@ -590,13 +545,13 @@ fips_test_drbg(const struct fips_test *test) } if (err) { pr_err("failed to get bytes from %s (try 2): %d\n", - test->alg, err); + impl, err); goto out; } /* Check that the DRBG generated the expected output. */ - err = fips_check_result(test, output, vec->output, vec->out_size, - "get_bytes"); + err = fips_check_result(output, vec->output, vec->out_size, + impl, "get_bytes"); out: kfree(output); crypto_free_rng(rng); @@ -606,33 +561,134 @@ out: /* Include the test vectors generated by the Python script. */ #include "fips140-generated-testvecs.h" -/* List of all self-tests. Keep this in sync with fips140_algorithms[]. */ +/* + * List of all self-tests. Keep this in sync with fips140_algorithms[]. + * + * When possible, we have followed the FIPS 140-2 Implementation Guidance (IG) + * document when creating this list of tests. The result is intended to be a + * list of tests that is near-minimal (and thus minimizes runtime overhead) + * while complying with all requirements. For additional details, see the + * comment at the beginning of this file. + */ static const struct fips_test fips140_selftests[] __initconst = { /* - * Tests for AES and AES modes. + * Test for the AES library API. * - * The full list of AES algorithms we potentially need to test are AES - * by itself, AES-CBC, AES-CTR, AES-ECB, AES-GCM, and AES-XTS. We can - * follow the FIPS 140-2 Implementation Guidance (IG) document to try to - * reduce this list, but we run into the issue that the architecture- - * specific implementations of these algorithms in Linux often don't - * share the "same" underlying AES implementation. E.g., the ARMv8 CE - * optimized implementations issue ARMv8 CE instructions directly rather - * than going through a separate AES implementation. In this case, - * separate tests are needed according to section 9.2 of the IG. + * Since the AES library API may use its own AES implementation and the + * module provides no support for composing it with a mode of operation + * (it's just plain AES), we must test it directly. + * + * In contrast, we don't need to directly test the "aes" ciphers that + * are accessible through the crypto_cipher API (e.g. "aes-ce"), as they + * are covered indirectly by AES-GCM and AES-ECB tests. */ { .alg = "aes", - .func = fips_test_aes, - .blockcipher = { + .impls = {"aes-lib"}, + .func = fips_test_aes_library, + .skcipher = { .key = fips_aes_key, .key_size = sizeof(fips_aes_key), .plaintext = fips_message, .ciphertext = fips_aes_ecb_ciphertext, - .block_size = 16, + .message_size = 16, } - }, { + }, + /* + * Tests for AES-GCM, a.k.a. "gcm(aes)" in crypto API syntax. + * + * The IG requires that each underlying AES implementation be tested in + * an authenticated mode, if implemented. We therefore must test the + * "gcm" template composed with each "aes" implementation. + * + * We also must test all standalone implementations of "gcm(aes)" such + * as "gcm-aes-ce", as they don't reuse another full AES implementation + * and thus can't be covered by another test. + */ + { + .alg = "gcm(aes)", + .impls = { + /* "gcm" template with all "aes" implementations */ + "gcm_base(ctr(aes-generic),ghash-generic)", + "gcm_base(ctr(aes-arm64),ghash-generic)", + "gcm_base(ctr(aes-ce),ghash-generic)", + /* + * "gcm" template with alternate "ghash" implementation. + * The IG doesn't consider multiple GHASH + * implementations, but we include this to be safe. + */ + "gcm_base(ctr(aes-generic),ghash-neon)", + /* All standalone implementations of "gcm(aes)" */ + "gcm-aes-ce", + }, + .func = fips_test_aead, + .aead = { + .key = fips_aes_key, + .key_size = sizeof(fips_aes_key), + .iv = fips_aes_iv, + /* The GCM implementations assume an IV size of 12. */ + .iv_size = 12, + .assoc = fips_aes_gcm_assoc, + .assoc_size = sizeof(fips_aes_gcm_assoc), + .plaintext = fips_message, + .plaintext_size = sizeof(fips_message), + .ciphertext = fips_aes_gcm_ciphertext, + .ciphertext_size = sizeof(fips_aes_gcm_ciphertext), + } + }, + /* + * Tests for AES-ECB, a.k.a. "ecb(aes)" in crypto API syntax. + * + * The IG requires that each underlying AES implementation be tested in + * a mode that exercises the encryption direction of AES and in a mode + * that exercises the decryption direction of AES. GCM only covers the + * encryption direction, so we add ECB to test decryption. We therefore + * test the "ecb" template composed with each "aes" implementation. + * + * We also must test all standalone implementations of "ecb(aes)" such + * as "ecb-aes-ce", as they don't reuse another full AES implementation + * and thus can't be covered by another test. + */ + { + .alg = "ecb(aes)", + .impls = { + /* "ecb" template with all "aes" implementations */ + "ecb(aes-generic)", + "ecb(aes-arm64)", + "ecb(aes-ce)", + /* All standalone implementations of "ecb(aes)" */ + "ecb-aes-neon", + "ecb-aes-neonbs", + "ecb-aes-ce", + }, + .func = fips_test_skcipher, + .skcipher = { + .key = fips_aes_key, + .key_size = sizeof(fips_aes_key), + .plaintext = fips_message, + .ciphertext = fips_aes_ecb_ciphertext, + .message_size = sizeof(fips_message) + } + }, + /* + * Tests for AES-CBC, AES-CTR, and AES-XTS. + * + * According to the IG, unauthenticated AES modes don't need to have + * their own test as long as both directions of the underlying AES + * implementation are already tested via other modes. + * + * However we must still test standalone implementations of these modes, + * as they don't reuse another full AES implementation and thus can't be + * covered by another test. + */ + { .alg = "cbc(aes)", + .impls = { + /* All standalone implementations of "cbc(aes)" */ + "cbc-aes-neon", + "cbc-aes-neonbs", + "cbc-aes-ce", + }, .func = fips_test_skcipher, .skcipher = { .key = fips_aes_key, @@ -645,6 +701,12 @@ static const struct fips_test fips140_selftests[] __initconst = { } }, { .alg = "ctr(aes)", + .impls = { + /* All standalone implementations of "ctr(aes)" */ + "ctr-aes-neon", + "ctr-aes-neonbs", + "ctr-aes-ce", + }, .func = fips_test_skcipher, .skcipher = { .key = fips_aes_key, @@ -655,34 +717,14 @@ static const struct fips_test fips140_selftests[] __initconst = { .ciphertext = fips_aes_ctr_ciphertext, .message_size = sizeof(fips_message), } - }, { - .alg = "ecb(aes)", - .func = fips_test_skcipher, - .skcipher = { - .key = fips_aes_key, - .key_size = sizeof(fips_aes_key), - .plaintext = fips_message, - .ciphertext = fips_aes_ecb_ciphertext, - .message_size = sizeof(fips_message) - } - }, { - .alg = "gcm(aes)", - .func = fips_test_aead, - .aead = { - .key = fips_aes_key, - .key_size = sizeof(fips_aes_key), - .iv = fips_aes_iv, - /* The GCM implementation assumes an IV size of 12. */ - .iv_size = 12, - .assoc = fips_aes_gcm_assoc, - .assoc_size = sizeof(fips_aes_gcm_assoc), - .plaintext = fips_message, - .plaintext_size = sizeof(fips_message), - .ciphertext = fips_aes_gcm_ciphertext, - .ciphertext_size = sizeof(fips_aes_gcm_ciphertext), - } }, { .alg = "xts(aes)", + .impls = { + /* All standalone implementations of "xts(aes)" */ + "xts-aes-neon", + "xts-aes-neonbs", + "xts-aes-ce", + }, .func = fips_test_skcipher, .skcipher = { .key = fips_aes_xts_key, @@ -693,27 +735,16 @@ static const struct fips_test fips140_selftests[] __initconst = { .ciphertext = fips_aes_xts_ciphertext, .message_size = sizeof(fips_message), } - /* - * Tests for SHA-1, SHA-256, HMAC-SHA256, and SHA-512. - * - * The selection of these specific tests follows the guidance from - * section 9 of the FIPS 140-2 Implementation Guidance (IG) document to - * achieve a minimal list of tests, rather than testing all of - * SHA-{1,224,256,384,512} and HMAC-SHA{1,224,256,384,512}. As per the - * IG, testing SHA-224 is only required if SHA-256 isn't implemented, - * and testing SHA-384 is only required if SHA-512 isn't implemented. - * Also, HMAC only has to be tested with one underlying SHA, and the - * HMAC test also fulfills the test for its underlying SHA. That would - * result in a test list of e.g. SHA-1, HMAC-SHA256, and SHA-512. - * - * However we also need to take into account cases where implementations - * aren't shared in the "natural" way assumed by the IG. Currently the - * only known exception w.r.t. SHA-* and HMAC-* is the sha256() library - * function which may not be covered by the test of the "hmac(sha256)" - * crypto_shash. So, we test sha256() separately. - */ - }, { + }, + + /* Tests for SHA-1 */ + { .alg = "sha1", + .impls = { + /* All implementations of "sha1" */ + "sha1-generic", + "sha1-ce" + }, .func = fips_test_hash, .hash = { .message = fips_message, @@ -721,8 +752,35 @@ static const struct fips_test fips140_selftests[] __initconst = { .digest = fips_sha1_digest, .digest_size = sizeof(fips_sha1_digest) } - }, { + }, + /* + * Tests for all SHA-256 implementations other than the sha256() library + * function. As per the IG, these tests also fulfill the tests for the + * corresponding SHA-224 implementations. + */ + { .alg = "sha256", + .impls = { + /* All implementations of "sha256" */ + "sha256-generic", + "sha256-arm64", + "sha256-ce", + }, + .func = fips_test_hash, + .hash = { + .message = fips_message, + .message_size = sizeof(fips_message), + .digest = fips_sha256_digest, + .digest_size = sizeof(fips_sha256_digest) + } + }, + /* + * Test for the sha256() library function. This must be tested + * separately because it may use its own SHA-256 implementation. + */ + { + .alg = "sha256", + .impls = {"sha256-lib"}, .func = fips_test_sha256_library, .hash = { .message = fips_message, @@ -730,7 +788,36 @@ static const struct fips_test fips140_selftests[] __initconst = { .digest = fips_sha256_digest, .digest_size = sizeof(fips_sha256_digest) } - }, { + }, + /* + * Tests for all SHA-512 implementations. As per the IG, these tests + * also fulfill the tests for the corresponding SHA-384 implementations. + */ + { + .alg = "sha512", + .impls = { + /* All implementations of "sha512" */ + "sha512-generic", + "sha512-arm64", + "sha512-ce", + }, + .func = fips_test_hash, + .hash = { + .message = fips_message, + .message_size = sizeof(fips_message), + .digest = fips_sha512_digest, + .digest_size = sizeof(fips_sha512_digest) + } + }, + /* + * Test for HMAC. As per the IG, only one HMAC test is required, + * provided that the same HMAC code is shared by all HMAC-SHA*. This is + * true in our case. We choose HMAC-SHA256 for the test. + * + * Note that as per the IG, this can fulfill the test for the underlying + * SHA. However, we don't currently rely on this. + */ + { .alg = "hmac(sha256)", .func = fips_test_hash, .hash = { @@ -741,28 +828,37 @@ static const struct fips_test fips140_selftests[] __initconst = { .digest = fips_hmac_sha256_digest, .digest_size = sizeof(fips_hmac_sha256_digest) } - }, { - .alg = "sha512", - .func = fips_test_hash, - .hash = { - .message = fips_message, - .message_size = sizeof(fips_message), - .digest = fips_sha512_digest, - .digest_size = sizeof(fips_sha512_digest) - } + }, /* - * Tests for DRBG algorithms. + * Known-answer tests for the SP800-90A DRBG algorithms. * - * Only the default variant (the one that users get when they request - * "stdrng") is required to be tested, as we don't consider the other - * variants to be used / usable in the FIPS security policy. This is - * similar to how e.g. we don't test both "xts(aes-generic)" and - * "xts-aes-ce" but rather just "xts(aes)". + * These test vectors were manually extracted from + * https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/drbg/drbgtestvectors.zip. * - * Currently the default one is "drbg_nopr_hmac_sha256"; however, just - * in case we also test the prediction-resistant enabled variant too. + * The selection of these tests follows the FIPS 140-2 IG as well as + * Section 11 of SP800-90A: + * + * - We must test all DRBG types (HMAC, Hash, and CTR) that the module + * implements. However, currently the module only implements + * HMAC_DRBG (since CONFIG_CRYPTO_DRBG_CTR and CONFIG_CRYPTO_DRBG_HASH + * aren't enabled). Therefore, we only need to test HMAC_DRBG. + * + * - We only need to test one HMAC variant. + * + * - We must test all DRBG operations: Instantiate(), Reseed(), and + * Generate(). However, a single test sequence with a single output + * comparison may cover all three operations, and this is what we do. + * Note that Reseed() happens implicitly via the use of the additional + * input and also via the use of prediction resistance when enabled. + * + * - The personalization string, additional input, and prediction + * resistance support must be tested. Therefore we have chosen test + * vectors that have a nonempty personalization string and nonempty + * additional input, and we test the prediction-resistant variant. + * Just in case, we also test the non-prediction-resistant variant; + * however, it's unclear whether it's required. */ - }, { + { .alg = "drbg_nopr_hmac_sha256", .func = fips_test_drbg, .drbg = { @@ -845,19 +941,44 @@ static const struct fips_test fips140_selftests[] __initconst = { } }; +static int __init __must_check +fips_run_test(const struct fips_test *test) +{ + int i; + int err; + + /* + * If no implementations were specified, then just test the default one. + * Otherwise, test the specified list of implementations. + */ + + if (test->impls[0] == NULL) { + err = test->func(test, test->alg); + if (err) + pr_emerg("self-tests failed for algorithm %s: %d\n", + test->alg, err); + return err; + } + + for (i = 0; i < ARRAY_SIZE(test->impls) && test->impls[i] != NULL; + i++) { + err = test->func(test, test->impls[i]); + if (err) { + pr_emerg("self-tests failed for algorithm %s, implementation %s: %d\n", + test->alg, test->impls[i], err); + return err; + } + } + return 0; +} + bool __init fips140_run_selftests(void) { int i; pr_info("running self-tests\n"); for (i = 0; i < ARRAY_SIZE(fips140_selftests); i++) { - const struct fips_test *test = &fips140_selftests[i]; - int err; - - err = test->func(test); - if (err) { - pr_emerg("self-tests failed for algorithm %s: %d\n", - test->alg, err); + if (fips_run_test(&fips140_selftests[i]) != 0) { /* The caller is responsible for calling panic(). */ return false; } From 17ccefe140215fc49d87ae3cb437044d89d82988 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Wed, 4 Aug 2021 17:21:56 -0700 Subject: [PATCH 39/62] ANDROID: fips140: use full 16-byte IV By using the initial_value parameter when creating the pycryptodome AES-CTR instance, we can use any 16-byte IV, like the other AES modes. Therefore, there's no need for the last 4 bytes of the IV to be 0. This doesn't really matter, but it seems nice to avoid this quirk. Bug: 153614920 Bug: 188620248 Change-Id: If33de260b1119f2b3e004164199b08364781ab23 Signed-off-by: Eric Biggers (cherry picked from commit fa5a44b364374dd3ed53215b9edf47ffee8a1a82) --- crypto/fips140-generated-testvecs.h | 14 +++++++------- tools/crypto/gen_fips140_testvecs.py | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/crypto/fips140-generated-testvecs.h b/crypto/fips140-generated-testvecs.h index 9328e9bacca7..af5c5a4a17a9 100644 --- a/crypto/fips140-generated-testvecs.h +++ b/crypto/fips140-generated-testvecs.h @@ -11,19 +11,19 @@ static const u8 fips_message[32] __initconst = static const u8 fips_aes_key[16] __initconst = "128-bit AES key"; -static const u8 fips_aes_iv[16] __initconst = "ABCDEFGHIJKL"; +static const u8 fips_aes_iv[16] __initconst = "ABCDEFGHIJKLMNOP"; static const u8 fips_aes_cbc_ciphertext[32] __initconst = - "\xc4\x6d\xad\xa4\x04\x52\x11\x5a\x7a\xb3\x7c\x68\x85\x8d\x90\xf0" - "\x55\xc3\xd3\x35\xc1\x75\x31\x90\xdf\x90\x4b\x5a\x56\xfd\xa7\x89"; + "\x4c\x3e\xeb\x38\x8d\x1f\x28\xfd\xa2\x3b\xa9\xda\x36\xf2\x99\xe2" + "\x84\x84\x66\x37\x0a\x53\x68\x2f\x17\x95\x8d\x7f\xca\x5a\x68\x4e"; static const u8 fips_aes_ecb_ciphertext[32] __initconst = "\xc1\x9d\xe6\xb8\xb2\x90\xff\xfe\xf2\x77\x18\xb0\x55\xd3\xee\xa9" "\xe2\x6f\x4a\x32\x67\xfd\xb7\xa5\x2f\x4b\x6e\x1a\x86\x2b\x6e\x3a"; static const u8 fips_aes_ctr_ciphertext[32] __initconst = - "\x92\xbe\x23\xa1\x80\x88\x5d\x31\x27\xb3\x9c\x40\x58\x57\x1d\xde" - "\xc1\x8d\x5b\xe7\x42\x93\x09\xf8\xd4\xf7\x49\x42\xcf\x40\x62\x7e"; + "\xed\x06\x2c\xd0\xbc\x48\xd1\x2e\x6a\x4e\x13\xe9\xaa\x17\x40\xca" + "\x00\xb4\xaf\x3b\x4f\xee\x73\xd6\x6c\x41\xf6\x4c\x8b\x0d\x6a\x0f"; static const u8 fips_aes_gcm_assoc[22] __initconst = "associated data string"; @@ -36,8 +36,8 @@ static const u8 fips_aes_xts_key[32] __initconst = "This is an AES-128-XTS key."; static const u8 fips_aes_xts_ciphertext[32] __initconst = - "\x5e\xb9\x98\xd6\x26\xb3\x55\xbf\x44\xab\x3e\xae\x73\xc0\x81\xc9" - "\xf4\x29\x0e\x17\x1e\xc5\xc8\x90\x79\x99\xf1\x43\x3a\x23\x08\x5a"; + "\x4f\xf7\x9f\x6c\x00\xa8\x30\xdf\xff\xf3\x25\x9c\xf6\x0b\x1b\xfd" + "\x3b\x34\x5e\x67\x7c\xf8\x8b\x68\x9a\xb9\x5a\x89\x51\x51\xbd\x35"; static const u8 fips_hmac_key[16] __initconst = "128-bit HMAC key"; diff --git a/tools/crypto/gen_fips140_testvecs.py b/tools/crypto/gen_fips140_testvecs.py index 25164d83389c..fdd816e8f2c4 100755 --- a/tools/crypto/gen_fips140_testvecs.py +++ b/tools/crypto/gen_fips140_testvecs.py @@ -28,7 +28,7 @@ scriptname = os.path.basename(__file__) message = bytes('This is a 32-byte test message.\0', 'ascii') aes_key = bytes('128-bit AES key\0', 'ascii') aes_xts_key = bytes('This is an AES-128-XTS key.\0\0\0\0\0', 'ascii') -aes_iv = bytes('ABCDEFGHIJKL\0\0\0\0', 'ascii') +aes_iv = bytes('ABCDEFGHIJKLMNOP', 'ascii') assoc = bytes('associated data string', 'ascii') hmac_key = bytes('128-bit HMAC key', 'ascii') @@ -82,7 +82,7 @@ def generate_aes_testvecs(): print_value('aes_ecb_ciphertext', ecb.encrypt(message)) ctr = Cryptodome.Cipher.AES.new(aes_key, Cryptodome.Cipher.AES.MODE_CTR, - nonce=aes_iv[:12]) + nonce=bytes(), initial_value=aes_iv) print_value('aes_ctr_ciphertext', ctr.encrypt(message)) print_value('aes_gcm_assoc', assoc) From 1be58af0776a8281c7c0ea0e9bfbe6f1d2261785 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Wed, 4 Aug 2021 17:21:57 -0700 Subject: [PATCH 40/62] ANDROID: fips140: remove non-prediction-resistant DRBG test The lab has confirmed that this test is not required. Bug: 153614920 Bug: 188620248 Change-Id: Ie55031beacd00f093db3a7ba30fe0844a2ce363b Signed-off-by: Eric Biggers (cherry picked from commit ea902862eaeb9b84a94652656b95bf5ac4287a73) --- crypto/fips140-selftests.c | 36 +----------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/crypto/fips140-selftests.c b/crypto/fips140-selftests.c index 6679e675fe03..df1ac71c67ce 100644 --- a/crypto/fips140-selftests.c +++ b/crypto/fips140-selftests.c @@ -855,43 +855,9 @@ static const struct fips_test fips140_selftests[] __initconst = { * resistance support must be tested. Therefore we have chosen test * vectors that have a nonempty personalization string and nonempty * additional input, and we test the prediction-resistant variant. - * Just in case, we also test the non-prediction-resistant variant; - * however, it's unclear whether it's required. + * Testing the non-prediction-resistant variant is not required. */ { - .alg = "drbg_nopr_hmac_sha256", - .func = fips_test_drbg, - .drbg = { - .entropy = - "\xf9\x7a\x3c\xfd\x91\xfa\xa0\x46\xb9\xe6\x1b\x94" - "\x93\xd4\x36\xc4\x93\x1f\x60\x4b\x22\xf1\x08\x15" - "\x21\xb3\x41\x91\x51\xe8\xff\x06\x11\xf3\xa7\xd4" - "\x35\x95\x35\x7d\x58\x12\x0b\xd1\xe2\xdd\x8a\xed", - .entropy_size = 48, - .output = - "\xc6\x87\x1c\xff\x08\x24\xfe\x55\xea\x76\x89\xa5" - "\x22\x29\x88\x67\x30\x45\x0e\x5d\x36\x2d\xa5\xbf" - "\x59\x0d\xcf\x9a\xcd\x67\xfe\xd4\xcb\x32\x10\x7d" - "\xf5\xd0\x39\x69\xa6\x6b\x1f\x64\x94\xfd\xf5\xd6" - "\x3d\x5b\x4d\x0d\x34\xea\x73\x99\xa0\x7d\x01\x16" - "\x12\x6d\x0d\x51\x8c\x7c\x55\xba\x46\xe1\x2f\x62" - "\xef\xc8\xfe\x28\xa5\x1c\x9d\x42\x8e\x6d\x37\x1d" - "\x73\x97\xab\x31\x9f\xc7\x3d\xed\x47\x22\xe5\xb4" - "\xf3\x00\x04\x03\x2a\x61\x28\xdf\x5e\x74\x97\xec" - "\xf8\x2c\xa7\xb0\xa5\x0e\x86\x7e\xf6\x72\x8a\x4f" - "\x50\x9a\x8c\x85\x90\x87\x03\x9c", - .out_size = 128, - .add_a = - "\x51\x72\x89\xaf\xe4\x44\xa0\xfe\x5e\xd1\xa4\x1d" - "\xbb\xb5\xeb\x17\x15\x00\x79\xbd\xd3\x1e\x29\xcf" - "\x2f\xf3\x00\x34\xd8\x26\x8e\x3b", - .add_b = - "\x88\x02\x8d\x29\xef\x80\xb4\xe6\xf0\xfe\x12\xf9" - "\x1d\x74\x49\xfe\x75\x06\x26\x82\xe8\x9c\x57\x14" - "\x40\xc0\xc9\xb5\x2c\x42\xa6\xe0", - .add_size = 32, - } - }, { .alg = "drbg_pr_hmac_sha256", .func = fips_test_drbg, .drbg = { From 2b5843ae2d905e33a62cd1d306760007f16b42d1 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Wed, 4 Aug 2021 17:21:58 -0700 Subject: [PATCH 41/62] ANDROID: fips140: add AES-CBC-CTS AES-CBC-CTS is a FIPS allowed algorithm, and fips140.ko already has arm64 implementations of it. Meanwhile, GKI includes both these arm64 implementations as well as the "cts" template. Add the "cts" template to fips140.ko too and add a self-test for AES-CBC-CTS, so that we can include AES-CBC-CTS in the set of algorithms which will be certified. There appears to be no support for CBC-CTS mode in pycryptodome or python-cryptography, so I manually added the test vector. As with a number of the other algorithms, the criteria for which algorithms need to be in the certified set are still not particularly clear, but the latest guidance we've received is to error on the side of including algorithms. Android uses AES-CBC-CTS for filenames encryption, which may be relevant (though arguably this use case doesn't actually require a FIPS approved algorithm). Bug: 153614920 Bug: 188620248 Change-Id: I53ffbd1d38493592eeaf471bc0007978ec400878 Signed-off-by: Eric Biggers (cherry picked from commit e2cfdfbc51b442a9ca96d5fad8060fb02a364eb4) --- crypto/Makefile | 2 +- crypto/fips140-module.c | 1 + crypto/fips140-selftests.c | 35 +++++++++++++++++++++++++++++++---- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/crypto/Makefile b/crypto/Makefile index aff52de1f84b..8c022d7f0938 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -206,7 +206,7 @@ FIPS140_CFLAGS := -D__DISABLE_EXPORTS -DBUILD_FIPS140_KO # Create a separate FIPS archive containing a duplicate of each builtin generic # module that is in scope for FIPS 140-2 certification # -crypto-fips-objs := drbg.o ecb.o cbc.o ctr.o gcm.o xts.o hmac.o memneq.o \ +crypto-fips-objs := drbg.o ecb.o cbc.o ctr.o cts.o gcm.o xts.o hmac.o memneq.o \ gf128mul.o aes_generic.o lib-crypto-aes.o \ sha1_generic.o sha256_generic.o sha512_generic.o \ lib-sha1.o lib-crypto-sha256.o diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index a91735c37c67..67092d857b60 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -76,6 +76,7 @@ static const char * const fips140_algorithms[] __initconst = { "ecb(aes)", "cbc(aes)", + "cts(cbc(aes))", "ctr(aes)", "xts(aes)", diff --git a/crypto/fips140-selftests.c b/crypto/fips140-selftests.c index df1ac71c67ce..437520dacd69 100644 --- a/crypto/fips140-selftests.c +++ b/crypto/fips140-selftests.c @@ -30,9 +30,10 @@ * be excluded by one of the rules above. * * See fips140_selftests[] for the list of tests we've selected. Currently, all - * our test vectors except the DRBG ones were generated by the script - * tools/crypto/gen_fips140_testvecs.py, using the known-good implementations in - * the Python packages hashlib, pycryptodome, and cryptography. + * our test vectors except the AES-CBC-CTS and DRBG ones were generated by the + * script tools/crypto/gen_fips140_testvecs.py, using the known-good + * implementations in the Python packages hashlib, pycryptodome, and + * cryptography. * * Note that we don't reuse the upstream crypto API's self-tests * (crypto/testmgr.{c,h}), for several reasons: @@ -671,7 +672,7 @@ static const struct fips_test fips140_selftests[] __initconst = { } }, /* - * Tests for AES-CBC, AES-CTR, and AES-XTS. + * Tests for AES-CBC, AES-CBC-CTS, AES-CTR, and AES-XTS. * * According to the IG, unauthenticated AES modes don't need to have * their own test as long as both directions of the underlying AES @@ -699,6 +700,32 @@ static const struct fips_test fips140_selftests[] __initconst = { .ciphertext = fips_aes_cbc_ciphertext, .message_size = sizeof(fips_message), } + }, { + .alg = "cts(cbc(aes))", + .impls = { + /* All standalone implementations of "cts(cbc(aes))" */ + "cts-cbc-aes-neon", + "cts-cbc-aes-ce", + }, + .func = fips_test_skcipher, + /* Test vector taken from RFC 3962 */ + .skcipher = { + .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20" + "\x74\x65\x72\x69\x79\x61\x6b\x69", + .key_size = 16, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00", + .iv_size = 16, + .plaintext = "\x49\x20\x77\x6f\x75\x6c\x64\x20" + "\x6c\x69\x6b\x65\x20\x74\x68\x65" + "\x20\x47\x65\x6e\x65\x72\x61\x6c" + "\x20\x47\x61\x75\x27\x73\x20", + .ciphertext = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1" + "\xd4\x45\xd4\xc8\xef\xf7\xed\x22" + "\x97\x68\x72\x68\xd6\xec\xcc\xc0" + "\xc0\x7b\x25\xe2\x5e\xcf\xe5", + .message_size = 31, + } }, { .alg = "ctr(aes)", .impls = { From 2ee56aad318c6b44ba2025611ee48f976c1d3db6 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Wed, 4 Aug 2021 17:21:59 -0700 Subject: [PATCH 42/62] ANDROID: fips140: add AES-CMAC AES-CMAC is a FIPS allowed algorithm, and fips140.ko already has arm64 implementations of it. Meanwhile, GKI includes both these arm64 implementations as well as the "cmac" template. Add the "cmac" template to fips140.ko too and add a self-test for AES-CMAC, so that we can include AES-CMAC in the set of algorithms which will be certified. As with a number of the other algorithms, the criteria for which algorithms need to be in the certified set are still not particularly clear, but the latest guidance we've received is to error on the side of including algorithms. Bug: 153614920 Bug: 188620248 Change-Id: I6c1d9281fe848a7101d5ef94ab48e5a41bbcc6f8 Signed-off-by: Eric Biggers (cherry picked from commit 038dc9f2cc956cab561bd9d50120920010867b75) --- crypto/Makefile | 4 ++-- crypto/fips140-generated-testvecs.h | 3 +++ crypto/fips140-module.c | 1 + crypto/fips140-selftests.c | 28 ++++++++++++++++++++++------ tools/crypto/gen_fips140_testvecs.py | 4 ++++ 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/crypto/Makefile b/crypto/Makefile index 8c022d7f0938..6651b9f1a685 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -206,8 +206,8 @@ FIPS140_CFLAGS := -D__DISABLE_EXPORTS -DBUILD_FIPS140_KO # Create a separate FIPS archive containing a duplicate of each builtin generic # module that is in scope for FIPS 140-2 certification # -crypto-fips-objs := drbg.o ecb.o cbc.o ctr.o cts.o gcm.o xts.o hmac.o memneq.o \ - gf128mul.o aes_generic.o lib-crypto-aes.o \ +crypto-fips-objs := drbg.o ecb.o cbc.o ctr.o cts.o gcm.o xts.o hmac.o cmac.o \ + memneq.o gf128mul.o aes_generic.o lib-crypto-aes.o \ sha1_generic.o sha256_generic.o sha512_generic.o \ lib-sha1.o lib-crypto-sha256.o crypto-fips-objs := $(foreach o,$(crypto-fips-objs),$(o:.o=-fips.o)) diff --git a/crypto/fips140-generated-testvecs.h b/crypto/fips140-generated-testvecs.h index af5c5a4a17a9..d4ccd77eb97f 100644 --- a/crypto/fips140-generated-testvecs.h +++ b/crypto/fips140-generated-testvecs.h @@ -39,6 +39,9 @@ static const u8 fips_aes_xts_ciphertext[32] __initconst = "\x4f\xf7\x9f\x6c\x00\xa8\x30\xdf\xff\xf3\x25\x9c\xf6\x0b\x1b\xfd" "\x3b\x34\x5e\x67\x7c\xf8\x8b\x68\x9a\xb9\x5a\x89\x51\x51\xbd\x35"; +static const u8 fips_aes_cmac_digest[16] __initconst = + "\x0c\x05\xda\x64\x51\x0c\x8e\x6c\x86\x52\x46\xa8\x2d\xb1\xfe\x0f"; + static const u8 fips_hmac_key[16] __initconst = "128-bit HMAC key"; static const u8 fips_sha1_digest[20] __initconst = diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index 67092d857b60..5b991163a971 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -79,6 +79,7 @@ static const char * const fips140_algorithms[] __initconst = { "cts(cbc(aes))", "ctr(aes)", "xts(aes)", + "cmac(aes)", "hmac(sha1)", "hmac(sha224)", diff --git a/crypto/fips140-selftests.c b/crypto/fips140-selftests.c index 437520dacd69..f94fc0bff0f3 100644 --- a/crypto/fips140-selftests.c +++ b/crypto/fips140-selftests.c @@ -599,8 +599,8 @@ static const struct fips_test fips140_selftests[] __initconst = { * Tests for AES-GCM, a.k.a. "gcm(aes)" in crypto API syntax. * * The IG requires that each underlying AES implementation be tested in - * an authenticated mode, if implemented. We therefore must test the - * "gcm" template composed with each "aes" implementation. + * an authenticated mode, if implemented. We therefore test the "gcm" + * template composed with each "aes" implementation. * * We also must test all standalone implementations of "gcm(aes)" such * as "gcm-aes-ce", as they don't reuse another full AES implementation @@ -672,11 +672,11 @@ static const struct fips_test fips140_selftests[] __initconst = { } }, /* - * Tests for AES-CBC, AES-CBC-CTS, AES-CTR, and AES-XTS. + * Tests for AES-CBC, AES-CBC-CTS, AES-CTR, AES-XTS, and AES-CMAC. * - * According to the IG, unauthenticated AES modes don't need to have - * their own test as long as both directions of the underlying AES - * implementation are already tested via other modes. + * According to the IG, other AES modes don't need to have their own + * test as long as both directions of the underlying AES implementation + * are already tested via other modes. * * However we must still test standalone implementations of these modes, * as they don't reuse another full AES implementation and thus can't be @@ -762,6 +762,22 @@ static const struct fips_test fips140_selftests[] __initconst = { .ciphertext = fips_aes_xts_ciphertext, .message_size = sizeof(fips_message), } + }, { + .alg = "cmac(aes)", + .impls = { + /* All standalone implementations of "cmac(aes)" */ + "cmac-aes-neon", + "cmac-aes-ce", + }, + .func = fips_test_hash, + .hash = { + .key = fips_aes_key, + .key_size = sizeof(fips_aes_key), + .message = fips_message, + .message_size = sizeof(fips_message), + .digest = fips_aes_cmac_digest, + .digest_size = sizeof(fips_aes_cmac_digest), + } }, /* Tests for SHA-1 */ diff --git a/tools/crypto/gen_fips140_testvecs.py b/tools/crypto/gen_fips140_testvecs.py index fdd816e8f2c4..825c4872235a 100755 --- a/tools/crypto/gen_fips140_testvecs.py +++ b/tools/crypto/gen_fips140_testvecs.py @@ -101,6 +101,10 @@ def generate_aes_testvecs(): ciphertext = xts.update(message) + xts.finalize() print_value('aes_xts_ciphertext', ciphertext) + cmac = Cryptodome.Hash.CMAC.new(aes_key, ciphermod=Cryptodome.Cipher.AES) + cmac.update(message) + print_value('aes_cmac_digest', cmac.digest()) + def generate_sha_testvecs(): print_value('hmac_key', hmac_key) for alg in ['sha1', 'sha256', 'hmac_sha256', 'sha512']: From 960ebb2b565b4aba0428776de57ad767ce7fb5d3 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Wed, 4 Aug 2021 17:21:59 -0700 Subject: [PATCH 43/62] ANDROID: fips140: add jitterentropy to fips140 module Although jitterentropy doesn't necessarily need to be part of fips140.ko, it does need to have the SP800-90B health tests enabled, and that requires that it be compiled with the fips_enabled flag set. The easiest way to do this is just to include a copy of it in fips140.ko. Bug: 153614920 Bug: 188620248 Change-Id: I9dc0281e07e08e0650e3d340897c697722ad3b1a Signed-off-by: Eric Biggers (cherry picked from commit cae242110570eb204b1a332b717aaa35eb16647d) --- crypto/Makefile | 5 +++++ crypto/fips140-module.c | 1 + 2 files changed, 6 insertions(+) diff --git a/crypto/Makefile b/crypto/Makefile index 6651b9f1a685..f353273de018 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -202,12 +202,17 @@ ifneq ($(CONFIG_CRYPTO_FIPS140_MOD),) FIPS140_CFLAGS := -D__DISABLE_EXPORTS -DBUILD_FIPS140_KO +CFLAGS_jitterentropy-fips.o := -O0 +KASAN_SANITIZE_jitterentropy-fips.o = n +UBSAN_SANITIZE_jitterentropy-fips.o = n + # # Create a separate FIPS archive containing a duplicate of each builtin generic # module that is in scope for FIPS 140-2 certification # crypto-fips-objs := drbg.o ecb.o cbc.o ctr.o cts.o gcm.o xts.o hmac.o cmac.o \ memneq.o gf128mul.o aes_generic.o lib-crypto-aes.o \ + jitterentropy.o jitterentropy-kcapi.o \ sha1_generic.o sha256_generic.o sha512_generic.o \ lib-sha1.o lib-crypto-sha256.o crypto-fips-objs := $(foreach o,$(crypto-fips-objs),$(o:.o=-fips.o)) diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index 5b991163a971..10ab5658737d 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -93,6 +93,7 @@ static const char * const fips140_algorithms[] __initconst = { "sha512", "stdrng", + "jitterentropy_rng", }; static bool __init is_fips140_algo(struct crypto_alg *alg) From e5b14396f9d2eec4c3bda7425bc30852512f0142 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Thu, 5 Aug 2021 13:49:23 -0700 Subject: [PATCH 44/62] ANDROID: fips140: take into account AES-GCM not being approvable Unfortunately, the AES-GCM implementations won't actually be able to be FIPS-approved. One consequence of this is that the "cmac" template will need to be tested with all underlying "aes" implementations, as the equivalent test with "gcm" won't count as fulfilling the requirement to test all AES implementations in an authenticated mode when supported. Update the self-tests and comments accordingly. Bug: 153614920 Bug: 188620248 Change-Id: I874b0718a5ff9d4e2dea2353448266e87f3f0d0b Signed-off-by: Eric Biggers (cherry picked from commit a9765fb6dc441dff749b1120ce13180c5561f69e) --- crypto/fips140-module.c | 27 ++++++-- crypto/fips140-selftests.c | 129 +++++++++++++++++++------------------ 2 files changed, 89 insertions(+), 67 deletions(-) diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index 10ab5658737d..0be7642773e2 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -66,20 +66,37 @@ const u8 *__rodata_start = &__fips140_rodata_start; /* * The list of the crypto API algorithms (by cra_name) that will be unregistered * by this module, in preparation for the module registering its own - * implementation(s) of them. When adding a new algorithm here, make sure to - * consider whether it needs a self-test added to fips140_selftests[] as well. + * implementation(s) of them. + * + * All algorithms that will be declared as FIPS-approved in the module + * certification must be listed here, to ensure that the non-FIPS-approved + * implementations of these algorithms in the kernel image aren't used. + * + * For every algorithm in this list, the module should contain all the "same" + * implementations that the kernel image does, including the C implementation as + * well as any architecture-specific implementations. This is needed to avoid + * performance regressions as well as the possibility of an algorithm being + * unavailable on some CPUs. E.g., "xcbc(aes)" isn't in this list, as the + * module doesn't have a C implementation of it (and it won't be FIPS-approved). + * + * Due to a quirk in the FIPS requirements, "gcm(aes)" isn't actually able to be + * FIPS-approved. However, we otherwise treat it the same as the algorithms + * that will be FIPS-approved, and therefore it's included in this list. + * + * When adding a new algorithm here, make sure to consider whether it needs a + * self-test added to fips140_selftests[] as well. */ static const char * const fips140_algorithms[] __initconst = { "aes", - "gcm(aes)", - + "cmac(aes)", "ecb(aes)", + "cbc(aes)", "cts(cbc(aes))", "ctr(aes)", "xts(aes)", - "cmac(aes)", + "gcm(aes)", "hmac(sha1)", "hmac(sha224)", diff --git a/crypto/fips140-selftests.c b/crypto/fips140-selftests.c index f94fc0bff0f3..0ab388a9f213 100644 --- a/crypto/fips140-selftests.c +++ b/crypto/fips140-selftests.c @@ -190,15 +190,6 @@ fips_handle_alloc_tfm_error(const char *impl, int err) * use, so we can't test it, nor do we need to. So we just skip * the test. */ - - /* - * "ghash-neon" is a bit unusual in that it is only registered - * if the CPU does *not* have a feature. Skip it silently in - * order to avoid a confusing log message. - */ - if (!strcmp(impl, "gcm_base(ctr(aes-generic),ghash-neon)")) - return 0; - pr_info("%s is unavailable (no CPU support?), skipping testing it\n", impl); return 0; @@ -581,7 +572,7 @@ static const struct fips_test fips140_selftests[] __initconst = { * * In contrast, we don't need to directly test the "aes" ciphers that * are accessible through the crypto_cipher API (e.g. "aes-ce"), as they - * are covered indirectly by AES-GCM and AES-ECB tests. + * are covered indirectly by AES-CMAC and AES-ECB tests. */ { .alg = "aes", @@ -596,45 +587,41 @@ static const struct fips_test fips140_selftests[] __initconst = { } }, /* - * Tests for AES-GCM, a.k.a. "gcm(aes)" in crypto API syntax. + * Tests for AES-CMAC, a.k.a. "cmac(aes)" in crypto API syntax. * * The IG requires that each underlying AES implementation be tested in - * an authenticated mode, if implemented. We therefore test the "gcm" - * template composed with each "aes" implementation. + * an authenticated mode, if implemented. Of such modes, this module + * implements AES-GCM and AES-CMAC. However, AES-GCM doesn't "count" + * because this module's implementations of AES-GCM won't actually be + * FIPS-approved, due to a quirk in the FIPS requirements. * - * We also must test all standalone implementations of "gcm(aes)" such - * as "gcm-aes-ce", as they don't reuse another full AES implementation - * and thus can't be covered by another test. + * Therefore, for us this requirement applies to AES-CMAC, so we must + * test the "cmac" template composed with each "aes" implementation. + * + * Separately from the above, we also must test all standalone + * implementations of "cmac(aes)" such as "cmac-aes-ce", as they don't + * reuse another full AES implementation and thus can't be covered by + * another test. */ { - .alg = "gcm(aes)", + .alg = "cmac(aes)", .impls = { - /* "gcm" template with all "aes" implementations */ - "gcm_base(ctr(aes-generic),ghash-generic)", - "gcm_base(ctr(aes-arm64),ghash-generic)", - "gcm_base(ctr(aes-ce),ghash-generic)", - /* - * "gcm" template with alternate "ghash" implementation. - * The IG doesn't consider multiple GHASH - * implementations, but we include this to be safe. - */ - "gcm_base(ctr(aes-generic),ghash-neon)", - /* All standalone implementations of "gcm(aes)" */ - "gcm-aes-ce", + /* "cmac" template with all "aes" implementations */ + "cmac(aes-generic)", + "cmac(aes-arm64)", + "cmac(aes-ce)", + /* All standalone implementations of "cmac(aes)" */ + "cmac-aes-neon", + "cmac-aes-ce", }, - .func = fips_test_aead, - .aead = { + .func = fips_test_hash, + .hash = { .key = fips_aes_key, .key_size = sizeof(fips_aes_key), - .iv = fips_aes_iv, - /* The GCM implementations assume an IV size of 12. */ - .iv_size = 12, - .assoc = fips_aes_gcm_assoc, - .assoc_size = sizeof(fips_aes_gcm_assoc), - .plaintext = fips_message, - .plaintext_size = sizeof(fips_message), - .ciphertext = fips_aes_gcm_ciphertext, - .ciphertext_size = sizeof(fips_aes_gcm_ciphertext), + .message = fips_message, + .message_size = sizeof(fips_message), + .digest = fips_aes_cmac_digest, + .digest_size = sizeof(fips_aes_cmac_digest), } }, /* @@ -642,13 +629,14 @@ static const struct fips_test fips140_selftests[] __initconst = { * * The IG requires that each underlying AES implementation be tested in * a mode that exercises the encryption direction of AES and in a mode - * that exercises the decryption direction of AES. GCM only covers the - * encryption direction, so we add ECB to test decryption. We therefore + * that exercises the decryption direction of AES. CMAC only covers the + * encryption direction, so we choose ECB to test decryption. Thus, we * test the "ecb" template composed with each "aes" implementation. * - * We also must test all standalone implementations of "ecb(aes)" such - * as "ecb-aes-ce", as they don't reuse another full AES implementation - * and thus can't be covered by another test. + * Separately from the above, we also must test all standalone + * implementations of "ecb(aes)" such as "ecb-aes-ce", as they don't + * reuse another full AES implementation and thus can't be covered by + * another test. */ { .alg = "ecb(aes)", @@ -672,15 +660,28 @@ static const struct fips_test fips140_selftests[] __initconst = { } }, /* - * Tests for AES-CBC, AES-CBC-CTS, AES-CTR, AES-XTS, and AES-CMAC. + * Tests for AES-CBC, AES-CBC-CTS, AES-CTR, AES-XTS, and AES-GCM. * - * According to the IG, other AES modes don't need to have their own - * test as long as both directions of the underlying AES implementation - * are already tested via other modes. + * According to the IG, an AES mode of operation doesn't need to have + * its own test, provided that (a) both the encryption and decryption + * directions of the underlying AES implementation are already tested + * via other mode(s), and (b) in the case of an authenticated mode, at + * least one other authenticated mode is already tested. The tests of + * the "cmac" and "ecb" templates fulfill these conditions; therefore, + * we don't need to test any other AES mode templates. * - * However we must still test standalone implementations of these modes, - * as they don't reuse another full AES implementation and thus can't be - * covered by another test. + * This does *not* apply to standalone implementations of these modes + * such as "cbc-aes-ce", as such implementations don't reuse another + * full AES implementation and thus can't be covered by another test. + * We must test all such standalone implementations. + * + * The AES-GCM test isn't actually required, as it's expected that this + * module's AES-GCM implementation won't actually be able to be + * FIPS-approved. This is unfortunate; it's caused by the FIPS + * requirements for GCM being incompatible with GCM implementations that + * don't generate their own IVs. We choose to still include the AES-GCM + * test to keep it on par with the other FIPS-approved algorithms, in + * case it turns out that AES-GCM can be approved after all. */ { .alg = "cbc(aes)", @@ -763,20 +764,24 @@ static const struct fips_test fips140_selftests[] __initconst = { .message_size = sizeof(fips_message), } }, { - .alg = "cmac(aes)", + .alg = "gcm(aes)", .impls = { - /* All standalone implementations of "cmac(aes)" */ - "cmac-aes-neon", - "cmac-aes-ce", + /* All standalone implementations of "gcm(aes)" */ + "gcm-aes-ce", }, - .func = fips_test_hash, - .hash = { + .func = fips_test_aead, + .aead = { .key = fips_aes_key, .key_size = sizeof(fips_aes_key), - .message = fips_message, - .message_size = sizeof(fips_message), - .digest = fips_aes_cmac_digest, - .digest_size = sizeof(fips_aes_cmac_digest), + .iv = fips_aes_iv, + /* The GCM implementations assume an IV size of 12. */ + .iv_size = 12, + .assoc = fips_aes_gcm_assoc, + .assoc_size = sizeof(fips_aes_gcm_assoc), + .plaintext = fips_message, + .plaintext_size = sizeof(fips_message), + .ciphertext = fips_aes_gcm_ciphertext, + .ciphertext_size = sizeof(fips_aes_gcm_ciphertext), } }, From 52b70d491bd46a403000a3984e37e5a90aea672e Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Fri, 8 Oct 2021 12:49:20 -0700 Subject: [PATCH 45/62] ANDROID: fips140: use FIPS140_CFLAGS when compiling fips140-selftests.c These flags are supposed to be used when building all source files for the module. Bug: 188620248 Fixes: b7397e89db29 ("ANDROID: fips140: add power-up cryptographic self-tests") Change-Id: I41cacff040c8a8a0065dd3cfc537303f1ff18335 Signed-off-by: Eric Biggers (cherry picked from commit 422bc2feb7e3e800a6c75a25795c7786794b7f2d) --- crypto/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/crypto/Makefile b/crypto/Makefile index f353273de018..bf5e547afc76 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -237,6 +237,7 @@ fips140-objs := fips140-module.o fips140-selftests.o crypto-fips.a obj-m += fips140.o CFLAGS_fips140-module.o += $(FIPS140_CFLAGS) +CFLAGS_fips140-selftests.o += $(FIPS140_CFLAGS) hostprogs-always-y := fips140_gen_hmac HOSTLDLIBS_fips140_gen_hmac := -lcrypto -lelf From e8d56bd78b6ec52dedea1b63ee46ab3c75de5c8f Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Mon, 4 Oct 2021 11:33:03 +0000 Subject: [PATCH 46/62] ANDROID: module: apply special LTO treatment to .text even if CFI is disabled We currently only emit directives for handling the .text section into the module linker script if both LTO and CFI are enabled, while for other sections, we do this even if CFI is not enabled. This is inconsistent at best, but as it also interferes with the assumption in the fips140.ko module that the .text._start and .text._end input sections are placed at the very start and end of the .text section, which currently can only be relied upon if CFI is enabled. So rearrange the #ifdef so that it only covers the .text.__cfi_check input section. Note that aligning to page size is likely to be redundant in any case, given that the .text section is laid out first, and module allocations are page aligned to begin with, so making that part unconditional is unlikely to make an observeable difference in the output. Bug: 153614920 Bug: 188620248 Fixes: 6be141eb36fe ("ANDROID: crypto: fips140 - perform load time integrity check") Change-Id: I3f9ed0ae8fa8fe5693c8d2964566cbb42c101aa7 Signed-off-by: Ard Biesheuvel (cherry picked from commit 6ae8277450ae86113cf7eea8b8348e509e2cc72d) --- scripts/module.lds.S | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/scripts/module.lds.S b/scripts/module.lds.S index 1713fc5383bb..8b9dcec11d1e 100644 --- a/scripts/module.lds.S +++ b/scripts/module.lds.S @@ -56,14 +56,16 @@ SECTIONS { *(.rodata.._end) } -#ifdef CONFIG_CFI_CLANG - /* - * With CFI_CLANG, ensure __cfi_check is at the beginning of the - * .text section, and that the section is aligned to page size. - */ .text : ALIGN(PAGE_SIZE) { *(.text.._start) +#ifdef CONFIG_CFI_CLANG + /* + * With CFI_CLANG, ensure __cfi_check is at the beginning of + * the .text section, and that the section is aligned to page + * size. + */ *(.text.__cfi_check) +#endif *(.text .text.[0-9a-zA-Z_]*) __cfi_jt_start = .; *(.text..L.cfi.jumptable .text..L.cfi.jumptable.*) @@ -71,7 +73,6 @@ SECTIONS { *(.text.._end) } #endif -#endif } /* bring in arch-specific sections */ From 6b995f5a5403d5c4747107b94af34e1fa6f0746f Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Fri, 1 Oct 2021 20:06:35 +0000 Subject: [PATCH 47/62] ANDROID: fips140: preserve RELA sections without relying on the module loader Instead of having a special case in the core kernel's module loader that treats a module called 'fips140.ko' in a special way, use a host tool to tweak the ELF metadata of this module so that the RELA data is preserved and accessible to the module init code. This is done in the following way: - each RELA section that we care about (the ones for .text and .rodata at the moment) is copied into a new section called .init.rela. with the SHF_ALLOC attribute, so that the module loader will copy it into __init memory at load time; - for each such section, an offset/count tuple is added as a global variable to the module; - the count field of those tuples is populated directly by the host tool based on the actual size of the RELA section in question; - the offset field is decorated with a place-relative relocation against the start of the copied RELA section via a weak symbol reference, which causes an entry to be emitted into the ELF symbol table; - these ELF symbol table entries are updated by the host tool and turned into STT_SECTION type symbols with STB_GLOBAL linkage, carrying the correct section index. With these changes in place, the unmodified module loader will load all required information into memory in a way that permits the module init code to locate the relocations, and apply them in reverse. Bug: 153614920 Bug: 188620248 Change-Id: I07d9704febdf913834502dd09c19aa4a04d983b1 Signed-off-by: Ard Biesheuvel (cherry picked from commit 502af6e3490d3ed51cf2131306303445b0d56579) --- arch/arm64/Makefile.postlink | 18 +++++++-- crypto/Makefile | 3 +- crypto/fips140-module.c | 16 ++++---- crypto/fips140-refs.S | 34 +++++++++++++++++ crypto/fips140_gen_hmac.c | 73 ++++++++++++++++++++++++++++++++++-- 5 files changed, 128 insertions(+), 16 deletions(-) create mode 100644 crypto/fips140-refs.S diff --git a/arch/arm64/Makefile.postlink b/arch/arm64/Makefile.postlink index eedcf35f8d94..a13789148bfb 100644 --- a/arch/arm64/Makefile.postlink +++ b/arch/arm64/Makefile.postlink @@ -3,8 +3,11 @@ # # This file is included by the generic Kbuild makefile to permit the # architecture to perform postlink actions on vmlinux and any .ko module file. -# In this case, we only need it for fips140.ko, which needs a HMAC digest to be -# injected into it. All other targets are NOPs. +# In this case, we only need it for fips140.ko, which needs some postprocessing +# for the integrity check mandated by FIPS. This involves making copies of the +# relocation sections so that the module will have access to them at +# initialization time, and calculating and injecting a HMAC digest into the +# module. All other targets are NOPs. # PHONY := __archpost @@ -15,7 +18,14 @@ include scripts/Kbuild.include CMD_FIPS140_GEN_HMAC = crypto/fips140_gen_hmac quiet_cmd_gen_hmac = HMAC $@ - cmd_gen_hmac = $(CMD_FIPS140_GEN_HMAC) $@ + cmd_gen_hmac = $(OBJCOPY) $@ \ + --dump-section=$(shell $(READELF) -SW $@|grep -Eo '\.rela\.text\S*')=$@.rela.text \ + --dump-section=$(shell $(READELF) -SW $@|grep -Eo '\.rela\.rodata\S*')=$@.rela.rodata \ + --add-section=.init.rela.text=$@.rela.text \ + --add-section=.init.rela.rodata=$@.rela.rodata \ + --set-section-flags=.init.rela.text=alloc,readonly \ + --set-section-flags=.init.rela.rodata=alloc,readonly && \ + $(CMD_FIPS140_GEN_HMAC) $@ # `@true` prevents complaints when there is nothing to be done @@ -29,7 +39,7 @@ $(objtree)/crypto/fips140.ko: FORCE @true clean: - @true + rm -f $(objtree)/crypto/fips140.ko.rela.* PHONY += FORCE clean diff --git a/crypto/Makefile b/crypto/Makefile index bf5e547afc76..bee803d812d2 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -233,7 +233,8 @@ $(obj)/lib-crypto-%-fips.o: $(srctree)/lib/crypto/%.c FORCE $(obj)/crypto-fips.a: $(addprefix $(obj)/,$(crypto-fips-objs)) FORCE $(call if_changed,ar_and_symver) -fips140-objs := fips140-module.o fips140-selftests.o crypto-fips.a +fips140-objs := fips140-module.o fips140-selftests.o crypto-fips.a \ + fips140-refs.o obj-m += fips140.o CFLAGS_fips140-module.o += $(FIPS140_CFLAGS) diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index 0be7642773e2..704b367ec562 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -279,6 +279,11 @@ static void __init unapply_rodata_relocations(void *section, int section_size, } } +extern struct { + u32 offset; + u32 count; +} fips140_rela_text, fips140_rela_rodata; + static bool __init check_fips140_module_hmac(void) { SHASH_DESC_ON_STACK(desc, dontcare); @@ -306,15 +311,12 @@ static bool __init check_fips140_module_hmac(void) // apply the relocations in reverse on the copies of .text and .rodata unapply_text_relocations(textcopy, textsize, - __this_module.arch.text_relocations, - __this_module.arch.num_text_relocations); + offset_to_ptr(&fips140_rela_text.offset), + fips140_rela_text.count); unapply_rodata_relocations(rodatacopy, rodatasize, - __this_module.arch.rodata_relocations, - __this_module.arch.num_rodata_relocations); - - kfree(__this_module.arch.text_relocations); - kfree(__this_module.arch.rodata_relocations); + offset_to_ptr(&fips140_rela_rodata.offset), + fips140_rela_rodata.count); desc->tfm = crypto_alloc_shash("hmac(sha256)", 0, 0); if (IS_ERR(desc->tfm)) { diff --git a/crypto/fips140-refs.S b/crypto/fips140-refs.S new file mode 100644 index 000000000000..fcbd52776323 --- /dev/null +++ b/crypto/fips140-refs.S @@ -0,0 +1,34 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright 2021 Google LLC + * Author: Ard Biesheuvel + * + * This file contains the variable definitions that will be used by the FIPS140 + * s/w module to access the RELA sections in the ELF image. These are used to + * apply the relocations applied by the module loader in reverse, so that we + * can reconstruct the image that was used to derive the HMAC used by the + * integrity check. + * + * The first .long of each entry will be populated by the module loader based + * on the actual placement of the respective RELA section in memory. The second + * .long carries the RELA entry count, and is populated by the host tool that + * also generates the HMAC of the contents of .text and .rodata. + */ + +#include +#include + + .section ".init.rodata", "a" + + .align 2 + .globl fips140_rela_text +fips140_rela_text: + .weak __sec_rela_text + .long __sec_rela_text - . + .long 0 + + .globl fips140_rela_rodata +fips140_rela_rodata: + .weak __sec_rela_rodata + .long __sec_rela_rodata - . + .long 0 diff --git a/crypto/fips140_gen_hmac.c b/crypto/fips140_gen_hmac.c index eebdc729ca99..69f754d38a1d 100644 --- a/crypto/fips140_gen_hmac.c +++ b/crypto/fips140_gen_hmac.c @@ -28,7 +28,7 @@ static Elf64_Ehdr *ehdr; static Elf64_Shdr *shdr; static int num_shdr; -static const char *strtab; +static const char *strtab, *shstrtab; static Elf64_Sym *syms; static int num_syms; @@ -42,17 +42,78 @@ static Elf64_Shdr *find_symtab_section(void) return NULL; } -static void *get_sym_addr(const char *sym_name) +static int get_section_idx(const char *name) +{ + int i; + + for (i = 0; i < num_shdr; i++) + if (!strcmp(shstrtab + shdr[i].sh_name, name)) + return i; + return -1; +} + +static int get_sym_idx(const char *sym_name) { int i; for (i = 0; i < num_syms; i++) if (!strcmp(strtab + syms[i].st_name, sym_name)) - return (void *)ehdr + shdr[syms[i].st_shndx].sh_offset + - syms[i].st_value; + return i; + return -1; +} + +static void *get_sym_addr(const char *sym_name) +{ + int i = get_sym_idx(sym_name); + + if (i >= 0) + return (void *)ehdr + shdr[syms[i].st_shndx].sh_offset + + syms[i].st_value; return NULL; } +static int update_rela_ref(const char *name) +{ + /* + * We need to do a couple of things to ensure that the copied RELA data + * is accessible to the module itself at module init time: + * - the associated entry in the symbol table needs to refer to the + * correct section index, and have SECTION type and GLOBAL linkage. + * - the 'count' global variable in the module need to be set to the + * right value based on the size of the RELA section. + */ + unsigned int *size_var; + int sec_idx, sym_idx; + char str[32]; + + sprintf(str, "fips140_rela_%s", name); + size_var = get_sym_addr(str); + if (!size_var) { + printf("variable '%s' not found, disregarding .%s section\n", + str, name); + return 1; + } + + sprintf(str, "__sec_rela_%s", name); + sym_idx = get_sym_idx(str); + + sprintf(str, ".init.rela.%s", name); + sec_idx = get_section_idx(str); + + if (sec_idx < 0 || sym_idx < 0) { + fprintf(stderr, "failed to locate metadata for .%s section in binary\n", + name); + return 0; + } + + syms[sym_idx].st_shndx = sec_idx; + syms[sym_idx].st_info = (STB_GLOBAL << 4) | STT_SECTION; + + size_var[1] = shdr[sec_idx].sh_size / sizeof(Elf64_Rela); + + return 1; +} + static void hmac_section(HMAC_CTX *hmac, const char *start, const char *end) { void *start_addr = get_sym_addr(start); @@ -103,6 +164,10 @@ int main(int argc, char **argv) num_syms = symtab_shdr->sh_size / sizeof(Elf64_Sym); strtab = (void *)ehdr + shdr[symtab_shdr->sh_link].sh_offset; + shstrtab = (void *)ehdr + shdr[ehdr->e_shstrndx].sh_offset; + + if (!update_rela_ref("text") || !update_rela_ref("rodata")) + exit(EXIT_FAILURE); hmac_key = get_sym_addr("fips140_integ_hmac_key"); if (!hmac_key) { From e45108ecff64d8ba8c94c83be44222cbe25bf448 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Mon, 11 Oct 2021 10:33:20 -0700 Subject: [PATCH 48/62] ANDROID: fips140: block crypto operations until tests complete As per the new guidance from the lab, the module must block crypto operations until the tests have completed. It's unclear what this means exactly (given that technically this is impossible), but let's make some changes that should be enough to comply with the requirement's intent. First, register the library functions and update the live algorithms after the tests rather than before the tests. This is a trivial change. Much more problematic is the fact that the algorithms are registered with the kernel's crypto framework before the tests run, as the tests depend on the framework. Unfortunately, the lab believes that the kernel isn't allowed to enforce the ordering here; the module itself must. Moreover, trying to solve this by copying the crypto API framework into the module proved to be heavily problematic. Thus, implement an alternate solution: make the module override the tfm initialization function of every algorithm it registers, so that it can wait for the tests to complete before allowing the use of any algorithm. This is sufficient if the user makes a supported sequence of API calls. Bug: 153614920 Bug: 188620248 Change-Id: I11ffba90c08114dda4e91c4be7ce8b608c4e14c1 Signed-off-by: Eric Biggers (cherry picked from commit 02e48f383b2acb42c85028563cc75453842f11ce) --- crypto/Makefile | 13 +- crypto/fips140-alg-registration.c | 388 ++++++++++++++++++++++++++++++ crypto/fips140-defs.h | 25 ++ crypto/fips140-module.c | 29 ++- crypto/fips140-module.h | 4 + 5 files changed, 442 insertions(+), 17 deletions(-) create mode 100644 crypto/fips140-alg-registration.c create mode 100644 crypto/fips140-defs.h diff --git a/crypto/Makefile b/crypto/Makefile index bee803d812d2..9ada957d4cbd 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -200,7 +200,7 @@ obj-$(CONFIG_CRYPTO_SIMD) += crypto_simd.o ifneq ($(CONFIG_CRYPTO_FIPS140_MOD),) -FIPS140_CFLAGS := -D__DISABLE_EXPORTS -DBUILD_FIPS140_KO +FIPS140_CFLAGS := -D__DISABLE_EXPORTS -DBUILD_FIPS140_KO -include fips140-defs.h CFLAGS_jitterentropy-fips.o := -O0 KASAN_SANITIZE_jitterentropy-fips.o = n @@ -233,10 +233,15 @@ $(obj)/lib-crypto-%-fips.o: $(srctree)/lib/crypto/%.c FORCE $(obj)/crypto-fips.a: $(addprefix $(obj)/,$(crypto-fips-objs)) FORCE $(call if_changed,ar_and_symver) -fips140-objs := fips140-module.o fips140-selftests.o crypto-fips.a \ - fips140-refs.o -obj-m += fips140.o +fips140-objs := \ + fips140-alg-registration.o \ + fips140-module.o \ + fips140-refs.o \ + fips140-selftests.o \ + crypto-fips.a +obj-m += fips140.o +CFLAGS_fips140-alg-registration.o += $(FIPS140_CFLAGS) CFLAGS_fips140-module.o += $(FIPS140_CFLAGS) CFLAGS_fips140-selftests.o += $(FIPS140_CFLAGS) diff --git a/crypto/fips140-alg-registration.c b/crypto/fips140-alg-registration.c new file mode 100644 index 000000000000..03757f88890b --- /dev/null +++ b/crypto/fips140-alg-registration.c @@ -0,0 +1,388 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Block crypto operations until tests complete + * + * Copyright 2021 Google LLC + * + * This file defines the fips140_crypto_register_*() functions, to which all + * calls to crypto_register_*() in the module are redirected. These functions + * override the tfm initialization function of each algorithm to insert a wait + * for the module having completed its self-tests and integrity check. + * + * The exact field that we override depends on the algorithm type. For + * algorithm types that have a strongly-typed initialization function pointer + * (e.g. skcipher), we must override that, since cra_init isn't guaranteed to be + * called for those despite the field being present in the base struct. For the + * other algorithm types (e.g. "cipher") we must override cra_init. + * + * All of this applies to both normal algorithms and template instances. + * + * The purpose of all of this is to meet a FIPS requirement where the module + * must not produce any output from cryptographic algorithms until it completes + * its tests. Technically this is impossible, but this solution meets the + * intent of the requirement, assuming the user makes a supported sequence of + * API calls. Note that we can't simply run the tests before registering the + * algorithms, as the algorithms must be registered in order to run the tests. + * + * It would be much easier to handle this in the kernel's crypto API framework. + * Unfortunately, that was deemed insufficient because the module itself is + * required to do the enforcement. What is *actually* required is still very + * vague, but the approach implemented here should meet the requirement. + */ + +/* + * This file is the one place in fips140.ko that needs to call the kernel's real + * algorithm registration functions, so #undefine all the macros from + * fips140-defs.h so that the "fips140_" prefix doesn't automatically get added. + */ +#undef aead_register_instance +#undef ahash_register_instance +#undef crypto_register_aead +#undef crypto_register_aeads +#undef crypto_register_ahash +#undef crypto_register_ahashes +#undef crypto_register_alg +#undef crypto_register_algs +#undef crypto_register_rng +#undef crypto_register_rngs +#undef crypto_register_shash +#undef crypto_register_shashes +#undef crypto_register_skcipher +#undef crypto_register_skciphers +#undef shash_register_instance +#undef skcipher_register_instance + +#include +#include +#include +#include +#include +#include + +#include "fips140-module.h" + +/* Indicates whether the self-tests and integrity check have completed */ +DECLARE_COMPLETION(fips140_tests_done); + +/* The thread running the self-tests and integrity check */ +struct task_struct *fips140_init_thread; + +/* + * Map from crypto_alg to original initialization function (possibly NULL) + * + * Note: unregistering an algorithm will leak its map entry, as we don't bother + * to remove it. This should be fine since fips140.ko can't be unloaded. The + * proper solution would be to store the original function pointer in a new + * field in 'struct crypto_alg', but that would require kernel support. + */ +static DEFINE_XARRAY(fips140_init_func_map); + +static bool fips140_ready(void) +{ + return completion_done(&fips140_tests_done); +} + +/* + * Wait until crypto operations are allowed to proceed. Return true if the + * tests are done, or false if the caller is the thread running the tests so it + * is allowed to proceed anyway. + */ +static bool fips140_wait_until_ready(struct crypto_alg *alg) +{ + if (fips140_ready()) + return true; + /* + * The thread running the tests must not wait. Since tfms can only be + * allocated in task context, we can reliably determine whether the + * invocation is from that thread or not by checking 'current'. + */ + if (current == fips140_init_thread) + return false; + + pr_info("blocking user of %s until tests complete\n", + alg->cra_driver_name); + wait_for_completion(&fips140_tests_done); + pr_info("tests done, allowing %s to proceed\n", alg->cra_driver_name); + return true; +} + +static int fips140_store_init_function(struct crypto_alg *alg, void *func) +{ + void *ret; + + /* + * The XArray API requires 4-byte aligned values. Although function + * pointers in general aren't guaranteed to be 4-byte aligned, it should + * be the case for the platforms this module is used on. + */ + if (WARN_ON((unsigned long)func & 3)) + return -EINVAL; + + ret = xa_store(&fips140_init_func_map, (unsigned long)alg, func, + GFP_KERNEL); + return xa_err(ret); +} + +/* Get the algorithm's original initialization function (possibly NULL) */ +static void *fips140_load_init_function(struct crypto_alg *alg) +{ + return xa_load(&fips140_init_func_map, (unsigned long)alg); +} + +/* tfm initialization function overrides */ + +static int fips140_alg_init_tfm(struct crypto_tfm *tfm) +{ + struct crypto_alg *alg = tfm->__crt_alg; + int (*cra_init)(struct crypto_tfm *tfm) = + fips140_load_init_function(alg); + + if (fips140_wait_until_ready(alg)) + WRITE_ONCE(alg->cra_init, cra_init); + return cra_init ? cra_init(tfm) : 0; +} + +static int fips140_aead_init_tfm(struct crypto_aead *tfm) +{ + struct aead_alg *alg = crypto_aead_alg(tfm); + int (*init)(struct crypto_aead *tfm) = + fips140_load_init_function(&alg->base); + + if (fips140_wait_until_ready(&alg->base)) + WRITE_ONCE(alg->init, init); + return init ? init(tfm) : 0; +} + +static int fips140_ahash_init_tfm(struct crypto_ahash *tfm) +{ + struct hash_alg_common *halg = crypto_hash_alg_common(tfm); + struct ahash_alg *alg = container_of(halg, struct ahash_alg, halg); + int (*init_tfm)(struct crypto_ahash *tfm) = + fips140_load_init_function(&halg->base); + + if (fips140_wait_until_ready(&halg->base)) + WRITE_ONCE(alg->init_tfm, init_tfm); + return init_tfm ? init_tfm(tfm) : 0; +} + +static int fips140_shash_init_tfm(struct crypto_shash *tfm) +{ + struct shash_alg *alg = crypto_shash_alg(tfm); + int (*init_tfm)(struct crypto_shash *tfm) = + fips140_load_init_function(&alg->base); + + if (fips140_wait_until_ready(&alg->base)) + WRITE_ONCE(alg->init_tfm, init_tfm); + return init_tfm ? init_tfm(tfm) : 0; +} + +static int fips140_skcipher_init_tfm(struct crypto_skcipher *tfm) +{ + struct skcipher_alg *alg = crypto_skcipher_alg(tfm); + int (*init)(struct crypto_skcipher *tfm) = + fips140_load_init_function(&alg->base); + + if (fips140_wait_until_ready(&alg->base)) + WRITE_ONCE(alg->init, init); + return init ? init(tfm) : 0; +} + +/* Single algorithm registration */ + +#define prepare_alg(alg, base_alg, field, wrapper_func) \ +({ \ + int err = 0; \ + \ + if (!fips140_ready() && alg->field != wrapper_func) { \ + err = fips140_store_init_function(base_alg, alg->field);\ + if (err == 0) \ + alg->field = wrapper_func; \ + } \ + err; \ +}) + +static int fips140_prepare_alg(struct crypto_alg *alg) +{ + /* + * Override cra_init. This is only for algorithm types like cipher and + * rng that don't have a strongly-typed initialization function. + */ + return prepare_alg(alg, alg, cra_init, fips140_alg_init_tfm); +} + +static int fips140_prepare_aead_alg(struct aead_alg *alg) +{ + return prepare_alg(alg, &alg->base, init, fips140_aead_init_tfm); +} + +static int fips140_prepare_ahash_alg(struct ahash_alg *alg) +{ + return prepare_alg(alg, &alg->halg.base, init_tfm, + fips140_ahash_init_tfm); +} + +static int fips140_prepare_rng_alg(struct rng_alg *alg) +{ + /* + * rng doesn't have a strongly-typed initialization function, so we must + * treat rng algorithms as "generic" algorithms. + */ + return fips140_prepare_alg(&alg->base); +} + +static int fips140_prepare_shash_alg(struct shash_alg *alg) +{ + return prepare_alg(alg, &alg->base, init_tfm, fips140_shash_init_tfm); +} + +static int fips140_prepare_skcipher_alg(struct skcipher_alg *alg) +{ + return prepare_alg(alg, &alg->base, init, fips140_skcipher_init_tfm); +} + +int fips140_crypto_register_alg(struct crypto_alg *alg) +{ + return fips140_prepare_alg(alg) ?: crypto_register_alg(alg); +} + +int fips140_crypto_register_aead(struct aead_alg *alg) +{ + return fips140_prepare_aead_alg(alg) ?: crypto_register_aead(alg); +} + +int fips140_crypto_register_ahash(struct ahash_alg *alg) +{ + return fips140_prepare_ahash_alg(alg) ?: crypto_register_ahash(alg); +} + +int fips140_crypto_register_rng(struct rng_alg *alg) +{ + return fips140_prepare_rng_alg(alg) ?: crypto_register_rng(alg); +} + +int fips140_crypto_register_shash(struct shash_alg *alg) +{ + return fips140_prepare_shash_alg(alg) ?: crypto_register_shash(alg); +} + +int fips140_crypto_register_skcipher(struct skcipher_alg *alg) +{ + return fips140_prepare_skcipher_alg(alg) ?: + crypto_register_skcipher(alg); +} + +/* Instance registration */ + +int fips140_aead_register_instance(struct crypto_template *tmpl, + struct aead_instance *inst) +{ + return fips140_prepare_aead_alg(&inst->alg) ?: + aead_register_instance(tmpl, inst); +} + +int fips140_ahash_register_instance(struct crypto_template *tmpl, + struct ahash_instance *inst) +{ + return fips140_prepare_ahash_alg(&inst->alg) ?: + ahash_register_instance(tmpl, inst); +} + +int fips140_shash_register_instance(struct crypto_template *tmpl, + struct shash_instance *inst) +{ + return fips140_prepare_shash_alg(&inst->alg) ?: + shash_register_instance(tmpl, inst); +} + +int fips140_skcipher_register_instance(struct crypto_template *tmpl, + struct skcipher_instance *inst) +{ + return fips140_prepare_skcipher_alg(&inst->alg) ?: + skcipher_register_instance(tmpl, inst); +} + +/* Bulk algorithm registration */ + +int fips140_crypto_register_algs(struct crypto_alg *algs, int count) +{ + int i; + int err; + + for (i = 0; i < count; i++) { + err = fips140_prepare_alg(&algs[i]); + if (err) + return err; + } + + return crypto_register_algs(algs, count); +} + +int fips140_crypto_register_aeads(struct aead_alg *algs, int count) +{ + int i; + int err; + + for (i = 0; i < count; i++) { + err = fips140_prepare_aead_alg(&algs[i]); + if (err) + return err; + } + + return crypto_register_aeads(algs, count); +} + +int fips140_crypto_register_ahashes(struct ahash_alg *algs, int count) +{ + int i; + int err; + + for (i = 0; i < count; i++) { + err = fips140_prepare_ahash_alg(&algs[i]); + if (err) + return err; + } + + return crypto_register_ahashes(algs, count); +} + +int fips140_crypto_register_rngs(struct rng_alg *algs, int count) +{ + int i; + int err; + + for (i = 0; i < count; i++) { + err = fips140_prepare_rng_alg(&algs[i]); + if (err) + return err; + } + + return crypto_register_rngs(algs, count); +} + +int fips140_crypto_register_shashes(struct shash_alg *algs, int count) +{ + int i; + int err; + + for (i = 0; i < count; i++) { + err = fips140_prepare_shash_alg(&algs[i]); + if (err) + return err; + } + + return crypto_register_shashes(algs, count); +} + +int fips140_crypto_register_skciphers(struct skcipher_alg *algs, int count) +{ + int i; + int err; + + for (i = 0; i < count; i++) { + err = fips140_prepare_skcipher_alg(&algs[i]); + if (err) + return err; + } + + return crypto_register_skciphers(algs, count); +} diff --git a/crypto/fips140-defs.h b/crypto/fips140-defs.h new file mode 100644 index 000000000000..e64a2f739aa9 --- /dev/null +++ b/crypto/fips140-defs.h @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright 2021 Google LLC + * + * This file is automatically included by all files built into fips140.ko, via + * the "-include" compiler flag. It redirects all calls to algorithm + * registration functions to the wrapper functions defined within the module. + */ + +#define aead_register_instance fips140_aead_register_instance +#define ahash_register_instance fips140_ahash_register_instance +#define crypto_register_aead fips140_crypto_register_aead +#define crypto_register_aeads fips140_crypto_register_aeads +#define crypto_register_ahash fips140_crypto_register_ahash +#define crypto_register_ahashes fips140_crypto_register_ahashes +#define crypto_register_alg fips140_crypto_register_alg +#define crypto_register_algs fips140_crypto_register_algs +#define crypto_register_rng fips140_crypto_register_rng +#define crypto_register_rngs fips140_crypto_register_rngs +#define crypto_register_shash fips140_crypto_register_shash +#define crypto_register_shashes fips140_crypto_register_shashes +#define crypto_register_skcipher fips140_crypto_register_skcipher +#define crypto_register_skciphers fips140_crypto_register_skciphers +#define shash_register_instance fips140_shash_register_instance +#define skcipher_register_instance fips140_skcipher_register_instance diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index 704b367ec562..31df2b1e006f 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -571,6 +571,7 @@ fips140_init(void) const u32 *initcall; pr_info("loading module\n"); + fips140_init_thread = current; unregister_existing_fips140_algos(); @@ -592,19 +593,6 @@ fips140_init(void) } } - if (!update_live_fips140_algos()) - goto panic; - - if (!update_fips140_library_routines()) - goto panic; - - /* - * Wait until all tasks have at least been scheduled once and preempted - * voluntarily. This ensures that none of the superseded algorithms that - * were already in use will still be live. - */ - synchronize_rcu_tasks(); - if (!fips140_run_selftests()) goto panic; @@ -623,6 +611,21 @@ fips140_init(void) } pr_info("integrity check passed\n"); + complete_all(&fips140_tests_done); + + if (!update_live_fips140_algos()) + goto panic; + + if (!update_fips140_library_routines()) + goto panic; + + /* + * Wait until all tasks have at least been scheduled once and preempted + * voluntarily. This ensures that none of the superseded algorithms that + * were already in use will still be live. + */ + synchronize_rcu_tasks(); + pr_info("module successfully loaded\n"); return 0; diff --git a/crypto/fips140-module.h b/crypto/fips140-module.h index b30a2e2928a6..f33580cf7bf8 100644 --- a/crypto/fips140-module.h +++ b/crypto/fips140-module.h @@ -6,6 +6,7 @@ #ifndef _CRYPTO_FIPS140_MODULE_H #define _CRYPTO_FIPS140_MODULE_H +#include #include #undef pr_fmt @@ -15,6 +16,9 @@ extern char *fips140_broken_alg; #endif +extern struct completion fips140_tests_done; +extern struct task_struct *fips140_init_thread; + bool __init __must_check fips140_run_selftests(void); #endif /* _CRYPTO_FIPS140_MODULE_H */ From ecf9341134d1ebd82ead94ba83bf658a7e737c57 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Wed, 27 Oct 2021 12:01:42 -0700 Subject: [PATCH 49/62] ANDROID: fips140: remove in-place updating of live algorithms The lab has confirmed that it is actually fine for users to keep using non-FIPS code after the module has loaded if they were already using it beforehand. So remove the code that tried to prevent this by updating live algorithms in-place. Similarly, remove the call to synchronize_rcu_tasks() which no longer has any purpose. We still need to move the live algorithms to a private list, so keep doing that. Keep appending "+orig" to cra_name as well, and start doing the same for cra_driver_name too. Bug: 188620248 Change-Id: I29c9faec7d7314484a03f9729924b2f892552c7c Signed-off-by: Eric Biggers (cherry picked from commit 54aecb72dba94d1bb68844af6e4790b5823fb6ce) --- crypto/fips140-module.c | 247 ++++++++-------------------------------- 1 file changed, 46 insertions(+), 201 deletions(-) diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index 31df2b1e006f..61b90f6c7b8d 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -130,7 +130,7 @@ static bool __init is_fips140_algo(struct crypto_alg *alg) return false; } -static LIST_HEAD(unchecked_fips140_algos); +static LIST_HEAD(existing_live_algos); /* * Release a list of algorithms which have been removed from crypto_alg_list. @@ -173,38 +173,53 @@ static void __init unregister_existing_fips140_algos(void) down_write(&crypto_alg_sem); /* - * Find all registered algorithms that we care about, and move them to - * a private list so that they are no longer exposed via the algo - * lookup API. Subsequently, we will unregister them if they are not in - * active use. If they are, we cannot simply remove them but we can - * adapt them later to use our integrity checked backing code. + * Find all registered algorithms that we care about, and move them to a + * private list so that they are no longer exposed via the algo lookup + * API. Subsequently, we will unregister them if they are not in active + * use. If they are, we can't fully unregister them but we can ensure + * that new users won't use them. */ list_for_each_entry_safe(alg, tmp, &crypto_alg_list, cra_list) { - if (is_fips140_algo(alg)) { - if (refcount_read(&alg->cra_refcnt) == 1) { - /* - * This algorithm is not currently in use, but - * there may be template instances holding - * references to it via spawns. So let's tear - * it down like crypto_unregister_alg() would, - * but without releasing the lock, to prevent - * races with concurrent TFM allocations. - */ - alg->cra_flags |= CRYPTO_ALG_DEAD; - list_move(&alg->cra_list, &remove_list); - crypto_remove_spawns(alg, &spawns, NULL); - } else { - /* - * This algorithm is live, i.e., there are TFMs - * allocated that rely on it for its crypto - * transformations. We will swap these out - * later with integrity checked versions. - */ - pr_info("found already-live algorithm '%s' ('%s')\n", - alg->cra_name, alg->cra_driver_name); - list_move(&alg->cra_list, - &unchecked_fips140_algos); - } + if (!is_fips140_algo(alg)) + continue; + if (refcount_read(&alg->cra_refcnt) == 1) { + /* + * This algorithm is not currently in use, but there may + * be template instances holding references to it via + * spawns. So let's tear it down like + * crypto_unregister_alg() would, but without releasing + * the lock, to prevent races with concurrent TFM + * allocations. + */ + alg->cra_flags |= CRYPTO_ALG_DEAD; + list_move(&alg->cra_list, &remove_list); + crypto_remove_spawns(alg, &spawns, NULL); + } else { + /* + * This algorithm is live, i.e. it has TFMs allocated, + * so we can't fully unregister it. It's not necessary + * to dynamically redirect existing users to the FIPS + * code, given that they can't be relying on FIPS + * certified crypto in the first place. However, we do + * need to ensure that new users will get the FIPS code. + * + * In most cases, setting alg->cra_priority to 0 + * achieves this. However, that isn't enough for + * algorithms like "hmac(sha256)" that need to be + * instantiated from a template, since existing + * algorithms always take priority over a template being + * instantiated. Therefore, we move the algorithm to + * a private list so that algorithm lookups won't find + * it anymore. To further distinguish it from the FIPS + * algorithms, we also append "+orig" to its name. + */ + pr_info("found already-live algorithm '%s' ('%s')\n", + alg->cra_name, alg->cra_driver_name); + alg->cra_priority = 0; + strlcat(alg->cra_name, "+orig", CRYPTO_MAX_ALG_NAME); + strlcat(alg->cra_driver_name, "+orig", + CRYPTO_MAX_ALG_NAME); + list_move(&alg->cra_list, &existing_live_algos); } } up_write(&crypto_alg_sem); @@ -355,166 +370,6 @@ static bool __init check_fips140_module_hmac(void) return true; } -static bool __init update_live_fips140_algos(void) -{ - struct crypto_alg *alg, *new_alg, *tmp; - - /* - * Find all algorithms that we could not unregister the last time - * around, due to the fact that they were already in use. - */ - down_write(&crypto_alg_sem); - list_for_each_entry_safe(alg, tmp, &unchecked_fips140_algos, cra_list) { - - /* - * Take this algo off the list before releasing the lock. This - * ensures that a concurrent invocation of - * crypto_unregister_alg() observes a consistent state, i.e., - * the algo is still on the list, and crypto_unregister_alg() - * will release it, or it is not, and crypto_unregister_alg() - * will issue a warning but ignore this condition otherwise. - */ - list_del_init(&alg->cra_list); - up_write(&crypto_alg_sem); - - /* - * Grab the algo that will replace the live one. - * Note that this will instantiate template based instances as - * well, as long as their driver name uses the conventional - * pattern of "template(algo)". In this case, we are relying on - * the fact that the templates carried by this module will - * supersede the builtin ones, due to the fact that they were - * registered later, and therefore appear first in the linked - * list. For example, "hmac(sha1-ce)" constructed using the - * builtin hmac template and the builtin SHA1 driver will be - * superseded by the integrity checked versions of HMAC and - * SHA1-ce carried in this module. - * - * Note that this takes a reference to the new algorithm which - * will never get released. This is intentional: once we copy - * the function pointers from the new algo into the old one, we - * cannot drop the new algo unless we are sure that the old one - * has been released, and this is someting we don't keep track - * of at the moment. - */ - new_alg = crypto_alg_mod_lookup(alg->cra_driver_name, - alg->cra_flags & CRYPTO_ALG_TYPE_MASK, - CRYPTO_ALG_TYPE_MASK | CRYPTO_NOLOAD); - - if (IS_ERR(new_alg)) { - pr_crit("Failed to allocate '%s' for updating live algo (%ld)\n", - alg->cra_driver_name, PTR_ERR(new_alg)); - return false; - } - - /* - * The FIPS module's algorithms are expected to be built from - * the same source code as the in-kernel ones so that they are - * fully compatible. In general, there's no way to verify full - * compatibility at runtime, but we can at least verify that - * the algorithm properties match. - */ - if (alg->cra_ctxsize != new_alg->cra_ctxsize || - alg->cra_alignmask != new_alg->cra_alignmask) { - pr_crit("Failed to update live algo '%s' due to mismatch:\n" - "cra_ctxsize : %u vs %u\n" - "cra_alignmask : 0x%x vs 0x%x\n", - alg->cra_driver_name, - alg->cra_ctxsize, new_alg->cra_ctxsize, - alg->cra_alignmask, new_alg->cra_alignmask); - return false; - } - - /* - * Update the name and priority so the algorithm stands out as - * one that was updated in order to comply with FIPS140, and - * that it is not the preferred version for further use. - */ - strlcat(alg->cra_name, "+orig", CRYPTO_MAX_ALG_NAME); - alg->cra_priority = 0; - - switch (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) { - struct aead_alg *old_aead, *new_aead; - struct skcipher_alg *old_skcipher, *new_skcipher; - struct shash_alg *old_shash, *new_shash; - struct rng_alg *old_rng, *new_rng; - - case CRYPTO_ALG_TYPE_CIPHER: - alg->cra_u.cipher = new_alg->cra_u.cipher; - break; - - case CRYPTO_ALG_TYPE_AEAD: - old_aead = container_of(alg, struct aead_alg, base); - new_aead = container_of(new_alg, struct aead_alg, base); - - old_aead->setkey = new_aead->setkey; - old_aead->setauthsize = new_aead->setauthsize; - old_aead->encrypt = new_aead->encrypt; - old_aead->decrypt = new_aead->decrypt; - old_aead->init = new_aead->init; - old_aead->exit = new_aead->exit; - break; - - case CRYPTO_ALG_TYPE_SKCIPHER: - old_skcipher = container_of(alg, struct skcipher_alg, base); - new_skcipher = container_of(new_alg, struct skcipher_alg, base); - - old_skcipher->setkey = new_skcipher->setkey; - old_skcipher->encrypt = new_skcipher->encrypt; - old_skcipher->decrypt = new_skcipher->decrypt; - old_skcipher->init = new_skcipher->init; - old_skcipher->exit = new_skcipher->exit; - break; - - case CRYPTO_ALG_TYPE_SHASH: - old_shash = container_of(alg, struct shash_alg, base); - new_shash = container_of(new_alg, struct shash_alg, base); - - old_shash->init = new_shash->init; - old_shash->update = new_shash->update; - old_shash->final = new_shash->final; - old_shash->finup = new_shash->finup; - old_shash->digest = new_shash->digest; - old_shash->export = new_shash->export; - old_shash->import = new_shash->import; - old_shash->setkey = new_shash->setkey; - old_shash->init_tfm = new_shash->init_tfm; - old_shash->exit_tfm = new_shash->exit_tfm; - break; - - case CRYPTO_ALG_TYPE_RNG: - old_rng = container_of(alg, struct rng_alg, base); - new_rng = container_of(new_alg, struct rng_alg, base); - - old_rng->generate = new_rng->generate; - old_rng->seed = new_rng->seed; - old_rng->set_ent = new_rng->set_ent; - break; - default: - /* - * This should never happen: every item on the - * fips140_algorithms list should match one of the - * cases above, so if we end up here, something is - * definitely wrong. - */ - pr_crit("Unexpected type %u for algo %s, giving up ...\n", - alg->cra_flags & CRYPTO_ALG_TYPE_MASK, - alg->cra_driver_name); - return false; - } - - /* - * Move the algorithm back to the algorithm list, so it is - * visible in /proc/crypto et al. - */ - down_write(&crypto_alg_sem); - list_add_tail(&alg->cra_list, &crypto_alg_list); - } - up_write(&crypto_alg_sem); - - return true; -} - static void fips140_sha256(void *p, const u8 *data, unsigned int len, u8 *out, int *hook_inuse) { @@ -613,19 +468,9 @@ fips140_init(void) complete_all(&fips140_tests_done); - if (!update_live_fips140_algos()) - goto panic; - if (!update_fips140_library_routines()) goto panic; - /* - * Wait until all tasks have at least been scheduled once and preempted - * voluntarily. This ensures that none of the superseded algorithms that - * were already in use will still be live. - */ - synchronize_rcu_tasks(); - pr_info("module successfully loaded\n"); return 0; From 482b0323cf29435e8177f34c7b9751c51ebb2d06 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Wed, 27 Oct 2021 15:22:43 -0700 Subject: [PATCH 50/62] ANDROID: fips140: zeroize temporary values from integrity check FIPS 140-3 requires this for some reason. Bug: 188620248 Change-Id: I7c286532097e1d8971faf4d8be31b801f9007e3b Signed-off-by: Eric Biggers (cherry picked from commit c14d52059bd86d27ce3c8e581196b011d0cc4d32) --- crypto/fips140-module.c | 42 ++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index 61b90f6c7b8d..951fc8ea8255 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -301,10 +301,12 @@ extern struct { static bool __init check_fips140_module_hmac(void) { + struct crypto_shash *tfm = NULL; SHASH_DESC_ON_STACK(desc, dontcare); u8 digest[SHA256_DIGEST_SIZE]; void *textcopy, *rodatacopy; int textsize, rodatasize; + bool ok = false; int err; textsize = &__fips140_text_end - &__fips140_text_start; @@ -316,7 +318,7 @@ static bool __init check_fips140_module_hmac(void) textcopy = kmalloc(textsize + rodatasize, GFP_KERNEL); if (!textcopy) { pr_err("Failed to allocate memory for copy of .text\n"); - return false; + goto out; } rodatacopy = textcopy + textsize; @@ -333,28 +335,29 @@ static bool __init check_fips140_module_hmac(void) offset_to_ptr(&fips140_rela_rodata.offset), fips140_rela_rodata.count); - desc->tfm = crypto_alloc_shash("hmac(sha256)", 0, 0); - if (IS_ERR(desc->tfm)) { - pr_err("failed to allocate hmac tfm (%ld)\n", PTR_ERR(desc->tfm)); - kfree(textcopy); - return false; + tfm = crypto_alloc_shash("hmac(sha256)", 0, 0); + if (IS_ERR(tfm)) { + pr_err("failed to allocate hmac tfm (%ld)\n", PTR_ERR(tfm)); + tfm = NULL; + goto out; } + desc->tfm = tfm; pr_info("using '%s' for integrity check\n", - crypto_shash_driver_name(desc->tfm)); + crypto_shash_driver_name(tfm)); - err = crypto_shash_setkey(desc->tfm, fips140_integ_hmac_key, + err = crypto_shash_setkey(tfm, fips140_integ_hmac_key, strlen(fips140_integ_hmac_key)) ?: crypto_shash_init(desc) ?: crypto_shash_update(desc, textcopy, textsize) ?: crypto_shash_finup(desc, rodatacopy, rodatasize, digest); - crypto_free_shash(desc->tfm); - kfree(textcopy); + /* Zeroizing this is important; see the comment below. */ + shash_desc_zero(desc); if (err) { pr_err("failed to calculate hmac shash (%d)\n", err); - return false; + goto out; } if (memcmp(digest, fips140_integ_hmac_digest, sizeof(digest))) { @@ -363,11 +366,20 @@ static bool __init check_fips140_module_hmac(void) pr_err("calculated digest: %*phN\n", (int)sizeof(digest), digest); - - return false; + goto out; } - - return true; + ok = true; +out: + /* + * FIPS 140-3 requires that all "temporary value(s) generated during the + * integrity test" be zeroized (ref: FIPS 140-3 IG 9.7.B). There is no + * technical reason to do this given that these values are public + * information, but this is the requirement so we follow it. + */ + crypto_free_shash(tfm); + memzero_explicit(digest, sizeof(digest)); + kfree_sensitive(textcopy); + return ok; } static void fips140_sha256(void *p, const u8 *data, unsigned int len, u8 *out, From cf721d6c4626ba39c30e84310c1b9585cf08a471 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Fri, 29 Oct 2021 14:32:49 -0700 Subject: [PATCH 51/62] ANDROID: ABI: add new symbols required by fips140.ko Add KMI_SYMBOL_LIST_ADD_ONLY=1 to build.config.gki.aarch64.fips140, then regenerate the fips140 symbol list and ABI XML as follows: BUILD_CONFIG=common/build.config.gki.aarch64.fips140 build/build_abi.sh --update-symbol-list BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update --print-report Leaf changes summary: 7 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 7 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 7 Added functions: [A] 'function int ahash_register_instance(crypto_template*, ahash_instance*)' [A] 'function int crypto_grab_spawn(crypto_spawn*, crypto_instance*, const char*, u32, u32)' [A] 'function int crypto_register_aeads(aead_alg*, int)' [A] 'function int crypto_register_ahashes(ahash_alg*, int)' [A] 'function int crypto_register_rng(rng_alg*)' [A] 'function crypto_tfm* crypto_spawn_tfm(crypto_spawn*, u32, u32)' [A] 'function void crypto_unregister_rng(rng_alg*)' Bug: 188620248 Change-Id: Ibc066a431decc123f428ecf5ae0b51b1ad838a8a Signed-off-by: Eric Biggers --- android/abi_gki_aarch64.xml | 72 ++++++++++++++++++++++++++++++-- android/abi_gki_aarch64_fips140 | 38 ++++++++++++----- build.config.gki.aarch64.fips140 | 1 + 3 files changed, 98 insertions(+), 13 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index de92167acb09..d92dd51977f3 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -658,6 +658,7 @@ + @@ -1151,15 +1152,19 @@ + + + + @@ -1184,11 +1189,13 @@ + + @@ -21135,12 +21142,12 @@ - + - + - + @@ -26867,6 +26874,14 @@ + + + + + + + + @@ -35274,6 +35289,7 @@ + @@ -38900,6 +38916,7 @@ + @@ -73380,6 +73397,14 @@ + + + + + + + + @@ -100158,6 +100183,10 @@ + + + + @@ -117038,6 +117067,11 @@ + + + + + @@ -119675,6 +119709,14 @@ + + + + + + + + @@ -119705,10 +119747,20 @@ + + + + + + + + + + @@ -119718,6 +119770,10 @@ + + + + @@ -119844,6 +119900,12 @@ + + + + + + @@ -119865,6 +119927,10 @@ + + + + diff --git a/android/abi_gki_aarch64_fips140 b/android/abi_gki_aarch64_fips140 index cf48b6d66aa9..faea593f3b77 100644 --- a/android/abi_gki_aarch64_fips140 +++ b/android/abi_gki_aarch64_fips140 @@ -6,12 +6,14 @@ # required by fips140.ko add_random_ready_callback aead_register_instance - arm64_const_caps_ready + ahash_register_instance + arch_timer_read_counter bcmp cancel_work_sync __cfi_slowpath + complete_all + completion_done cpu_have_feature - cpu_hwcap_keys crypto_aead_decrypt crypto_aead_encrypt crypto_aead_setauthsize @@ -19,7 +21,6 @@ crypto_ahash_finup crypto_ahash_setkey crypto_alg_list - crypto_alg_mod_lookup crypto_alg_sem crypto_alloc_aead crypto_alloc_base @@ -28,7 +29,6 @@ crypto_alloc_skcipher crypto_attr_alg_name crypto_check_attr_type - crypto_cipher_decrypt_one crypto_cipher_encrypt_one crypto_cipher_setkey crypto_destroy_tfm @@ -38,17 +38,23 @@ crypto_grab_ahash crypto_grab_shash crypto_grab_skcipher + crypto_grab_spawn crypto_inst_setname crypto_put_default_null_skcipher crypto_register_aead + crypto_register_aeads + crypto_register_ahash + crypto_register_ahashes crypto_register_alg + crypto_register_algs + crypto_register_rng crypto_register_rngs crypto_register_shash crypto_register_shashes + crypto_register_skcipher crypto_register_skciphers crypto_register_template crypto_register_templates - crypto_remove_final crypto_remove_spawns crypto_req_done crypto_rng_reset @@ -63,8 +69,10 @@ crypto_skcipher_encrypt crypto_skcipher_setkey crypto_spawn_tfm2 + crypto_spawn_tfm crypto_unregister_aead crypto_unregister_alg + crypto_unregister_rng crypto_unregister_rngs crypto_unregister_shash crypto_unregister_shashes @@ -87,6 +95,7 @@ kmalloc_order_trace kmem_cache_alloc_trace kmemdup + ktime_get __list_add_valid __list_del_entry_valid memcpy @@ -99,6 +108,9 @@ preempt_schedule_notrace printk queue_work_on + ___ratelimit + _raw_spin_lock + _raw_spin_unlock refcount_warn_saturate scatterwalk_ffwd scatterwalk_map_and_copy @@ -121,7 +133,6 @@ strlcpy strlen strncmp - synchronize_rcu_tasks system_wq __traceiter_android_vh_aes_decrypt __traceiter_android_vh_aes_encrypt @@ -134,23 +145,29 @@ tracepoint_probe_register up_write wait_for_completion + xa_load + xa_store -# needed by fips140.ko but not identified by the tooling -# TODO(b/189327973): [GKI: ABI] Build of fips140.ko module fails to identify some symbols - __crypto_memneq - __crypto_xor +# preserved by --additions-only aes_decrypt aes_encrypt aes_expandkey + arm64_const_caps_ready ce_aes_expandkey + cpu_hwcap_keys crypto_aes_inv_sbox crypto_aes_sbox crypto_aes_set_key + crypto_alg_mod_lookup + crypto_cipher_decrypt_one crypto_ft_tab crypto_inc crypto_it_tab + __crypto_memneq + crypto_remove_final crypto_sha1_finup crypto_sha1_update + __crypto_xor gf128mul_lle sha1_transform sha224_final @@ -158,3 +175,4 @@ sha256_block_data_order sha256_final sha256_update + synchronize_rcu_tasks diff --git a/build.config.gki.aarch64.fips140 b/build.config.gki.aarch64.fips140 index a1a75a8dbeee..f7ef7dae35e3 100644 --- a/build.config.gki.aarch64.fips140 +++ b/build.config.gki.aarch64.fips140 @@ -15,3 +15,4 @@ DEFCONFIG=fips140_gki_defconfig KMI_SYMBOL_LIST=android/abi_gki_aarch64_fips140 PRE_DEFCONFIG_CMDS="cat ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/fips140_gki.fragment > ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG};" POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}" +KMI_SYMBOL_LIST_ADD_ONLY=1 From 8a30a2cadd2e89dc74486c2efefa745fc2488e43 Mon Sep 17 00:00:00 2001 From: Steve Muckle Date: Thu, 28 Oct 2021 17:39:41 +0000 Subject: [PATCH 52/62] ANDROID: GKI: update virtual device symbol list No ABI changes expected. Bug: 202405948 Signed-off-by: Steve Muckle Change-Id: I26010314259d1325999fbe9a640532031a44a6cc --- android/abi_gki_aarch64.xml | 10637 ++++++++++++----------- android/abi_gki_aarch64_virtual_device | 5 +- 2 files changed, 5408 insertions(+), 5234 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index d92dd51977f3..932ed71c46fa 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -8550,9 +8550,9 @@ - - - + + + @@ -8565,6 +8565,7 @@ + @@ -8646,6 +8647,7 @@ + @@ -9059,14 +9061,7 @@ - - - - - - - - + @@ -9074,6 +9069,13 @@ + + + + + + + @@ -11506,7 +11508,6 @@ - @@ -11913,8 +11914,8 @@ - - + + @@ -12547,23 +12548,7 @@ - - - - - - - - - - - - - - - - - + @@ -13210,7 +13195,6 @@ - @@ -14760,6 +14744,12 @@ + + + + + + @@ -15254,9 +15244,6 @@ - - - @@ -15456,29 +15443,7 @@ - - - - - - - - - - - - - - - - - - - - - - - + @@ -16833,8 +16798,8 @@ - - + + @@ -18362,6 +18327,7 @@ + @@ -18735,7 +18701,11 @@ - + + + + + @@ -19690,6 +19660,7 @@ + @@ -19887,6 +19858,7 @@ + @@ -20324,6 +20296,14 @@ + + + + + + + + @@ -20674,7 +20654,7 @@ - + @@ -21388,7 +21368,6 @@ - @@ -22129,11 +22108,6 @@ - - - - - @@ -24292,7 +24266,7 @@ - + @@ -24516,7 +24490,6 @@ - @@ -24821,23 +24794,7 @@ - - - - - - - - - - - - - - - - - + @@ -25499,7 +25456,7 @@ - + @@ -25876,6 +25833,7 @@ + @@ -25953,7 +25911,7 @@ - + @@ -26010,7 +25968,6 @@ - @@ -26364,7 +26321,6 @@ - @@ -26995,7 +26951,7 @@ - + @@ -27930,6 +27886,7 @@ + @@ -31674,9 +31631,9 @@ - - - + + + @@ -32550,6 +32507,7 @@ + @@ -32804,68 +32762,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -33370,6 +33267,7 @@ + @@ -33784,7 +33682,6 @@ - @@ -33983,7 +33880,7 @@ - + @@ -37529,6 +37426,7 @@ + @@ -38318,8 +38216,8 @@ - - + + @@ -39291,6 +39189,17 @@ + + + + + + + + + + + @@ -39570,9 +39479,9 @@ - - - + + + @@ -40079,7 +39988,6 @@ - @@ -41037,6 +40945,7 @@ + @@ -43538,7 +43447,15 @@ + + + + + + + + @@ -43875,7 +43792,18 @@ - + + + + + + + + + + + + @@ -43971,12 +43899,12 @@ - - - - - - + + + + + + @@ -44081,6 +44009,7 @@ + @@ -44861,21 +44790,21 @@ - + - + - + - + - + - + @@ -45321,6 +45250,7 @@ + @@ -46971,8 +46901,8 @@ - - + + @@ -47318,35 +47248,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -47907,14 +47809,7 @@ - - - - - - - - + @@ -48560,6 +48455,11 @@ + + + + + @@ -48965,7 +48865,7 @@ - + @@ -49091,11 +48991,6 @@ - - - - - @@ -49401,7 +49296,7 @@ - + @@ -49549,7 +49444,56 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -49890,7 +49834,6 @@ - @@ -50826,7 +50769,7 @@ - + @@ -51671,8 +51614,26 @@ + + + + + + + + + + + + + + + + + + @@ -51931,6 +51892,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -52118,7 +52099,6 @@ - @@ -52708,23 +52688,7 @@ - - - - - - - - - - - - - - - - - + @@ -53086,6 +53050,7 @@ + @@ -54016,9 +53981,9 @@ - - - + + + @@ -54738,7 +54703,6 @@ - @@ -55323,7 +55287,7 @@ - + @@ -55788,7 +55752,7 @@ - + @@ -56649,6 +56613,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -57993,6 +57977,7 @@ + @@ -58455,6 +58440,11 @@ + + + + + @@ -59679,7 +59669,44 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -60869,7 +60896,65 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -61646,6 +61731,7 @@ + @@ -62595,17 +62681,7 @@ - - - - - - - - - - - + @@ -63671,7 +63747,7 @@ - + @@ -64165,10 +64241,10 @@ - - - - + + + + @@ -64218,12 +64294,6 @@ - - - - - - @@ -64483,7 +64553,6 @@ - @@ -64807,7 +64876,47 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -65402,6 +65511,11 @@ + + + + + @@ -66428,6 +66542,11 @@ + + + + + @@ -66888,7 +67007,7 @@ - + @@ -68752,6 +68871,7 @@ + @@ -68948,7 +69068,6 @@ - @@ -70557,7 +70676,14 @@ - + + + + + + + + @@ -70691,6 +70817,14 @@ + + + + + + + + @@ -71379,8 +71513,8 @@ - - + + @@ -71499,6 +71633,7 @@ + @@ -72185,8 +72320,8 @@ - - + + @@ -72258,7 +72393,6 @@ - @@ -72723,7 +72857,38 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -72834,7 +72999,7 @@ - + @@ -75522,6 +75687,7 @@ + @@ -76929,11 +77095,11 @@ - + - + @@ -77986,12 +78152,12 @@ - - - - - - + + + + + + @@ -79277,7 +79443,6 @@ - @@ -79517,6 +79682,7 @@ + @@ -80242,7 +80408,6 @@ - @@ -80830,7 +80995,6 @@ - @@ -80903,9 +81067,6 @@ - - - @@ -80922,6 +81083,11 @@ + + + + + @@ -80944,6 +81110,7 @@ + @@ -81404,7 +81571,7 @@ - + @@ -81480,6 +81647,14 @@ + + + + + + + + @@ -84557,7 +84732,6 @@ - @@ -85176,7 +85350,7 @@ - + @@ -85857,9 +86031,9 @@ - - - + + + @@ -86328,7 +86502,26 @@ - + + + + + + + + + + + + + + + + + + + + @@ -86353,7 +86546,7 @@ - + @@ -86378,7 +86571,6 @@ - @@ -86417,7 +86609,6 @@ - @@ -87830,7 +88021,7 @@ - + @@ -88461,8 +88652,8 @@ - - + + @@ -89531,6 +89722,7 @@ + @@ -89691,14 +89883,6 @@ - - - - - - - - @@ -90133,20 +90317,7 @@ - - - - - - - - - - - - - - + @@ -90703,7 +90874,7 @@ - + @@ -90878,7 +91049,7 @@ - + @@ -91173,7 +91344,6 @@ - @@ -91309,12 +91479,12 @@ - + - + @@ -92879,6 +93049,7 @@ + @@ -93391,6 +93562,17 @@ + + + + + + + + + + + @@ -94153,7 +94335,7 @@ - + @@ -94711,7 +94893,7 @@ - + @@ -95149,7 +95331,7 @@ - + @@ -95855,6 +96037,9 @@ + + + @@ -97094,7 +97279,6 @@ - @@ -97370,8 +97554,8 @@ - - + + @@ -97580,8 +97764,8 @@ - - + + @@ -98736,7 +98920,6 @@ - @@ -99712,14 +99895,7 @@ - - - - - - - - + @@ -101202,10 +101378,10 @@ - - - + + + @@ -101229,7 +101405,7 @@ - + @@ -101370,8 +101546,8 @@ - - + + @@ -101971,6 +102147,7 @@ + @@ -102239,7 +102416,6 @@ - @@ -102765,20 +102941,7 @@ - - - - - - - - - - - - - - + @@ -102837,9 +103000,6 @@ - - - @@ -106247,7 +106407,6 @@ - @@ -106262,6 +106421,20 @@ + + + + + + + + + + + + + + @@ -106596,7 +106769,6 @@ - @@ -109923,7 +110095,7 @@ - + @@ -110521,6 +110693,11 @@ + + + + + @@ -110847,7 +111024,6 @@ - @@ -112603,6 +112779,7 @@ + @@ -112687,6 +112864,7 @@ + @@ -112805,8 +112983,8 @@ - - + + @@ -113343,7 +113521,6 @@ - @@ -116760,9 +116937,9 @@ - - - + + + @@ -116773,33 +116950,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + @@ -116809,27 +116986,27 @@ - - - + + + - - - + + + - - - + + + - - - + + + @@ -116839,8 +117016,8 @@ - - + + @@ -116859,8 +117036,8 @@ - - + + @@ -116876,57 +117053,57 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + @@ -116937,16 +117114,16 @@ - - + + - - + + @@ -116970,12 +117147,12 @@ - - - - - - + + + + + + @@ -116992,9 +117169,9 @@ - - - + + + @@ -117010,33 +117187,33 @@ - - + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + @@ -117049,22 +117226,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -117143,13 +117320,13 @@ - - - - - - - + + + + + + + @@ -117158,29 +117335,29 @@ - - - + + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -117222,11 +117399,11 @@ - - - - - + + + + + @@ -117246,14 +117423,14 @@ - - + + - - - - + + + + @@ -117276,15 +117453,15 @@ - - - - + + + + - - - + + + @@ -117292,11 +117469,11 @@ - - - - - + + + + + @@ -117347,21 +117524,21 @@ - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -117402,18 +117579,18 @@ - - + + - - - + + + - - - + + + @@ -117446,17 +117623,17 @@ - - - - + + + + - - - - - + + + + + @@ -117467,58 +117644,58 @@ - - - - + + + + - - + + - - - + + + - - - + + + - - + + - - - - + + + + - - + + - - + + - - + + - - - - - + + + + + - - - + + + @@ -117527,49 +117704,49 @@ - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -117579,10 +117756,10 @@ - - - - + + + + @@ -117626,17 +117803,17 @@ - - + + - - + + - - - + + + @@ -117671,10 +117848,10 @@ - - - - + + + + @@ -117706,13 +117883,13 @@ - - - + + + - - + + @@ -117743,8 +117920,8 @@ - - + + @@ -117753,8 +117930,8 @@ - - + + @@ -117776,8 +117953,8 @@ - - + + @@ -117824,8 +118001,8 @@ - - + + @@ -117847,10 +118024,10 @@ - - - - + + + + @@ -117886,9 +118063,9 @@ - - - + + + @@ -118032,16 +118209,16 @@ - - + + - - + + @@ -118090,26 +118267,26 @@ - - - - + + + + - - - - + + + + - - - + + + - - - + + + @@ -118118,31 +118295,31 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -118160,9 +118337,9 @@ - - - + + + @@ -118210,67 +118387,67 @@ - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + @@ -118286,16 +118463,16 @@ - - + + - - - - - - + + + + + + @@ -118316,33 +118493,33 @@ - - + + - - + + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -118352,8 +118529,8 @@ - - + + @@ -118366,8 +118543,8 @@ - - + + @@ -118437,9 +118614,9 @@ - - - + + + @@ -118478,11 +118655,11 @@ - - - - - + + + + + @@ -118498,19 +118675,19 @@ - - - + + + - - - + + + - - - + + + @@ -118542,9 +118719,9 @@ - - - + + + @@ -118628,14 +118805,14 @@ - - - + + + - - - + + + @@ -118644,65 +118821,65 @@ - - - + + + - - - - + + + + - - + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -118711,48 +118888,48 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -118763,8 +118940,8 @@ - - + + @@ -118882,8 +119059,8 @@ - - + + @@ -118985,28 +119162,28 @@ - - - + + + - - + + - - - - - + + + + + @@ -119021,11 +119198,11 @@ - - - - - + + + + + @@ -119037,11 +119214,11 @@ - - - - - + + + + + @@ -119060,8 +119237,8 @@ - - + + @@ -119098,10 +119275,10 @@ - - - - + + + + @@ -119139,22 +119316,22 @@ - - + + - - - - + + + + - - + + - - + + @@ -119181,22 +119358,22 @@ - - + + - - - - + + + + - - - + + + @@ -119257,8 +119434,8 @@ - - + + @@ -119289,18 +119466,18 @@ - - + + - - - + + + - - - + + + @@ -119312,8 +119489,8 @@ - - + + @@ -119329,9 +119506,9 @@ - - - + + + @@ -119364,12 +119541,12 @@ - - + + - - + + @@ -119380,23 +119557,23 @@ - - + + - - - + + + - - - - + + + + @@ -119411,9 +119588,9 @@ - - - + + + @@ -119432,8 +119609,8 @@ - - + + @@ -119453,58 +119630,58 @@ - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - + - + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -119547,12 +119724,12 @@ - - + + - - + + @@ -119581,10 +119758,10 @@ - - - - + + + + @@ -119639,42 +119816,42 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - + + - - - + + + - - - + + + - + @@ -119717,10 +119894,10 @@ - - - - + + + + @@ -119728,9 +119905,9 @@ - - - + + + @@ -119740,7 +119917,7 @@ - + @@ -119761,8 +119938,8 @@ - - + + @@ -119783,22 +119960,22 @@ - - + + - - - + + + - - - + + + @@ -119848,11 +120025,11 @@ - - - - - + + + + + @@ -119860,44 +120037,44 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -119918,8 +120095,8 @@ - - + + @@ -119944,18 +120121,18 @@ - - - + + + - - - + + + @@ -119972,9 +120149,9 @@ - - - + + + @@ -119985,11 +120162,11 @@ - - - - - + + + + + @@ -119999,8 +120176,8 @@ - - + + @@ -120016,18 +120193,18 @@ - - + + - - + + - - - - + + + + @@ -120058,12 +120235,12 @@ - - + + - - + + @@ -120072,7 +120249,7 @@ - + @@ -120103,11 +120280,11 @@ - - - - - + + + + + @@ -120117,25 +120294,25 @@ - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -120172,11 +120349,11 @@ - - - - - + + + + + @@ -120186,11 +120363,11 @@ - - - - - + + + + + @@ -120222,9 +120399,9 @@ - - - + + + @@ -120235,8 +120412,8 @@ - - + + @@ -120246,9 +120423,9 @@ - - - + + + @@ -120257,11 +120434,11 @@ - - - - - + + + + + @@ -120274,16 +120451,16 @@ - - + + - - + + - - + + @@ -120294,8 +120471,8 @@ - - + + @@ -120331,49 +120508,49 @@ - - + + - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -120395,9 +120572,9 @@ - - - + + + @@ -120410,9 +120587,9 @@ - - - + + + @@ -120434,10 +120611,10 @@ - - - - + + + + @@ -120468,15 +120645,15 @@ - - - - + + + + - - - + + + @@ -120496,8 +120673,8 @@ - - + + @@ -120513,8 +120690,8 @@ - - + + @@ -120522,13 +120699,13 @@ - - + + - - - + + + @@ -120539,9 +120716,9 @@ - - - + + + @@ -120558,16 +120735,16 @@ - - + + - - + + @@ -120592,9 +120769,9 @@ - - - + + + @@ -120684,9 +120861,9 @@ - - - + + + @@ -120699,17 +120876,17 @@ - - - - + + + + - - - - + + + + @@ -120717,10 +120894,10 @@ - - - - + + + + @@ -120728,9 +120905,9 @@ - - - + + + @@ -120751,11 +120928,11 @@ - - - - - + + + + + @@ -120827,20 +121004,20 @@ - - + + - - + + - - + + @@ -120853,8 +121030,8 @@ - - + + @@ -120876,12 +121053,12 @@ - - - - - - + + + + + + @@ -120890,40 +121067,40 @@ - - - + + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -120958,28 +121135,28 @@ - - - + + + - - + + - - - - + + + + - - - + + + @@ -121001,10 +121178,10 @@ - - - - + + + + @@ -121026,11 +121203,11 @@ - - - - - + + + + + @@ -121053,15 +121230,15 @@ - - - + + + - - - - + + + + @@ -121078,14 +121255,14 @@ - - - + + + - - - + + + @@ -121114,22 +121291,22 @@ - - + + - - + + - - - - + + + + @@ -121152,10 +121329,10 @@ - - - - + + + + @@ -121163,15 +121340,15 @@ - - - - + + + + - - - + + + @@ -121278,11 +121455,11 @@ - - - - - + + + + + @@ -121480,29 +121657,29 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -121512,10 +121689,10 @@ - - - - + + + + @@ -121554,14 +121731,14 @@ - - - - - - - - + + + + + + + + @@ -121574,9 +121751,9 @@ - - - + + + @@ -121609,8 +121786,8 @@ - - + + @@ -121677,14 +121854,14 @@ - - - + + + - - - + + + @@ -121692,10 +121869,10 @@ - - - - + + + + @@ -121740,15 +121917,15 @@ - - - - + + + + - - - + + + @@ -121847,16 +122024,16 @@ - - - + + + - - - - - + + + + + @@ -121906,46 +122083,46 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - - + + + + + - - + + - - + + @@ -122040,9 +122217,9 @@ - - - + + + @@ -122064,17 +122241,17 @@ - - + + - - - + + + - - + + @@ -122082,15 +122259,15 @@ - - - + + + - - - - + + + + @@ -122101,34 +122278,34 @@ - - + + - - - - + + + + - - + + - - - + + + - - - - + + + + @@ -122140,9 +122317,9 @@ - - - + + + @@ -122150,8 +122327,8 @@ - - + + @@ -122162,15 +122339,15 @@ - + - - - - - - + + + + + + @@ -122182,13 +122359,13 @@ - - - - + + + + - - + + @@ -122208,10 +122385,10 @@ - - - - + + + + @@ -122361,46 +122538,46 @@ - - - + + + - - - + + + - - + + - - - - - + + + + + - - + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -122533,8 +122710,8 @@ - - + + @@ -122567,16 +122744,16 @@ - - + + - - + + - - + + @@ -122588,8 +122765,8 @@ - - + + @@ -122600,8 +122777,8 @@ - - + + @@ -122621,9 +122798,9 @@ - - - + + + @@ -122633,62 +122810,62 @@ - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -122706,14 +122883,14 @@ - - - + + + - - - + + + @@ -122748,13 +122925,13 @@ - - - - - - - + + + + + + + @@ -122978,62 +123155,62 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + @@ -123049,15 +123226,15 @@ - - + + - - - - - + + + + + @@ -123068,10 +123245,10 @@ - - - - + + + + @@ -123100,8 +123277,8 @@ - - + + @@ -123109,9 +123286,9 @@ - - - + + + @@ -123148,9 +123325,9 @@ - - - + + + @@ -123159,8 +123336,8 @@ - - + + @@ -123168,19 +123345,19 @@ - - - - - + + + + + - - - - - - + + + + + + @@ -123188,20 +123365,20 @@ - - + + - - + + - - + + - - + + @@ -123214,17 +123391,17 @@ - - + + - - + + - - - + + + @@ -123271,19 +123448,19 @@ - - - - - - - + + + + + + + - - - + + + @@ -123291,17 +123468,17 @@ - - - + + + - - + + @@ -123319,20 +123496,20 @@ - - + + - - + + - - + + @@ -123345,11 +123522,11 @@ - - - - - + + + + + @@ -123360,33 +123537,33 @@ - - - + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -123670,23 +123847,23 @@ - - + + - - - - + + + + - - - + + + @@ -123702,12 +123879,12 @@ - - - - - - + + + + + + @@ -123759,20 +123936,20 @@ - - + + - - - - + + + + - - - - + + + + @@ -123927,10 +124104,10 @@ - - - - + + + + @@ -123980,9 +124157,9 @@ - - - + + + @@ -124111,19 +124288,19 @@ - - - + + + - - - + + + - - - + + + @@ -124224,8 +124401,8 @@ - - + + @@ -124247,9 +124424,9 @@ - - - + + + @@ -124277,8 +124454,8 @@ - - + + @@ -124293,24 +124470,24 @@ - - + + - - - + + + - - - - + + + + - - - + + + @@ -124329,9 +124506,9 @@ - - - + + + @@ -124345,18 +124522,18 @@ - - + + - - - + + + - - - + + + @@ -124377,9 +124554,9 @@ - - - + + + @@ -124410,28 +124587,28 @@ - - + + - - + + - - - + + + - - - - + + + + - - - + + + @@ -124442,83 +124619,83 @@ - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + @@ -124574,17 +124751,17 @@ - - + + - - + + - - - + + + @@ -124598,20 +124775,20 @@ - - + + - - + + - - + + @@ -124680,9 +124857,9 @@ - - - + + + @@ -124690,44 +124867,44 @@ - - + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + @@ -124737,12 +124914,12 @@ - - - - - - + + + + + + @@ -124753,9 +124930,9 @@ - - - + + + @@ -124763,18 +124940,18 @@ - - - - + + + + - - - - - - - + + + + + + + @@ -124789,30 +124966,30 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -124848,8 +125025,8 @@ - - + + @@ -124925,20 +125102,20 @@ - - + + - - - - - - - - - - + + + + + + + + + + @@ -124947,19 +125124,19 @@ - - - + + + - - - - + + + + - - - + + + @@ -124986,36 +125163,36 @@ - - - - + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -125254,8 +125431,8 @@ - - + + @@ -125269,13 +125446,13 @@ - - + + - - - + + + @@ -125314,14 +125491,14 @@ - - - + + + - - - + + + @@ -125329,17 +125506,17 @@ - - - - + + + + - - + + @@ -125354,9 +125531,9 @@ - - - + + + @@ -125370,50 +125547,50 @@ - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - + + @@ -125423,15 +125600,15 @@ - - - + + + - - - - + + + + @@ -125464,27 +125641,27 @@ - - - - + + + + - - - - - + + + + + - - - + + + - - + + @@ -125498,9 +125675,9 @@ - - - + + + @@ -125509,30 +125686,30 @@ - - - + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -125548,26 +125725,26 @@ - - + + - - - + + + - - + + - - - + + + @@ -125584,8 +125761,8 @@ - - + + @@ -125600,8 +125777,8 @@ - - + + @@ -125649,18 +125826,18 @@ - - - + + + - - + + - - - + + + @@ -125668,13 +125845,13 @@ - - + + - - - + + + @@ -125682,9 +125859,9 @@ - - - + + + @@ -125742,8 +125919,8 @@ - - + + @@ -125752,9 +125929,9 @@ - - - + + + @@ -125767,8 +125944,8 @@ - - + + @@ -125811,12 +125988,12 @@ - - + + - - + + @@ -125853,35 +126030,35 @@ - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - + + + @@ -125893,13 +126070,13 @@ - - - + + + - - + + @@ -125942,33 +126119,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + @@ -125989,8 +126166,8 @@ - - + + @@ -126015,10 +126192,10 @@ - - - - + + + + @@ -126028,12 +126205,12 @@ - - + + - - + + @@ -126044,17 +126221,17 @@ - - - - - - - + + + + + + + - - + + @@ -126071,8 +126248,8 @@ - - + + @@ -126098,15 +126275,15 @@ - - + + - - - - - + + + + + @@ -126118,8 +126295,8 @@ - - + + @@ -126145,8 +126322,8 @@ - - + + @@ -126156,20 +126333,20 @@ - - + + - + - - - + + + @@ -126183,41 +126360,41 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -126227,13 +126404,13 @@ - - + + - - - + + + @@ -126247,41 +126424,41 @@ - - - - - - + + + + + + - - + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + @@ -126291,8 +126468,8 @@ - - + + @@ -126304,18 +126481,18 @@ - - + + - - - - + + + + @@ -126339,23 +126516,23 @@ - - - + + + - - - + + + - - - + + + - - + + @@ -126368,9 +126545,9 @@ - - - + + + @@ -126378,29 +126555,29 @@ - - - - + + + + - - + + - - - - - + + + + + - - - - - - + + + + + + @@ -126433,9 +126610,9 @@ - - - + + + @@ -126444,13 +126621,13 @@ - - + + - - - + + + @@ -126543,8 +126720,8 @@ - - + + @@ -126569,13 +126746,13 @@ - - - + + + - - + + @@ -126620,27 +126797,27 @@ - - + + - + - - - + + + - - + + - - + + @@ -126691,38 +126868,38 @@ - - - - + + + + - - - - - - - - + + + + + + + + - - + + - - + + - + - - + + @@ -126733,9 +126910,9 @@ - - - + + + @@ -126750,26 +126927,26 @@ - - + + - - - - + + + + - - - - - - + + + + + + - - + + @@ -126784,28 +126961,28 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - - + + + + @@ -126820,28 +126997,28 @@ - - - - - + + + + + - - + + - - - - - + + + + + - - - - + + + + @@ -126863,18 +127040,18 @@ - - + + - - + + - - + + @@ -126897,12 +127074,12 @@ - - + + - - + + @@ -126939,9 +127116,9 @@ - - - + + + @@ -126976,81 +127153,81 @@ - - - + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -127175,12 +127352,12 @@ - - + + - - + + @@ -127223,14 +127400,14 @@ - - + + - - - - + + + + @@ -127251,36 +127428,36 @@ - - - - - + + + + + - - + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -127291,39 +127468,39 @@ - - + + - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - - - + + + + @@ -127349,14 +127526,14 @@ - - + + - - - - + + + + @@ -127373,8 +127550,8 @@ - - + + @@ -127464,14 +127641,14 @@ - - - - - - - - + + + + + + + + @@ -127481,8 +127658,8 @@ - - + + @@ -127506,9 +127683,9 @@ - - - + + + @@ -127528,18 +127705,18 @@ - - - - + + + + - - - + + + @@ -127547,27 +127724,27 @@ - - - - - - + + + + + + - - - + + + - - - + + + - - - + + + @@ -127577,8 +127754,8 @@ - - + + @@ -127599,8 +127776,8 @@ - - + + @@ -127615,8 +127792,8 @@ - - + + @@ -127649,20 +127826,20 @@ - - + + - - + + - - + + @@ -127699,12 +127876,12 @@ - - + + - - + + @@ -127712,34 +127889,34 @@ - - + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -127821,9 +127998,9 @@ - - - + + + @@ -127984,29 +128161,29 @@ - - - + + + - - + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -128014,47 +128191,47 @@ - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - - - + + + + + + - - - - - + + + + + @@ -128089,8 +128266,8 @@ - - + + @@ -128190,13 +128367,13 @@ - - - + + + - - + + @@ -128207,15 +128384,15 @@ - - - - - - - - - + + + + + + + + + @@ -128251,9 +128428,9 @@ - - - + + + @@ -128279,30 +128456,30 @@ - - - + + + - - - - + + + + - - - - + + + + - - - + + + @@ -128315,10 +128492,10 @@ - - - - + + + + @@ -128326,11 +128503,11 @@ - - - - - + + + + + @@ -128353,10 +128530,10 @@ - - - - + + + + @@ -128369,20 +128546,20 @@ - - - + + + - - - - + + + + - + - - + + @@ -128392,9 +128569,9 @@ - - - + + + @@ -128483,14 +128660,14 @@ - - - + + + - - + + @@ -128566,8 +128743,8 @@ - - + + @@ -128577,66 +128754,66 @@ - - + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - + + - + - - - - + + + + @@ -128656,21 +128833,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -128681,23 +128858,23 @@ - - - - - - - - + + + + + + + + - - + + - - - + + + @@ -128706,10 +128883,10 @@ - - - - + + + + @@ -128741,46 +128918,46 @@ - - - - + + + + - - - + + + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - - + + + @@ -128789,31 +128966,31 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -128822,23 +128999,23 @@ - - - + + + - - - + + + - - - + + + @@ -128846,34 +129023,34 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + @@ -128883,10 +129060,10 @@ - - - - + + + + @@ -128902,10 +129079,10 @@ - - - - + + + + @@ -128915,10 +129092,10 @@ - - - - + + + + @@ -128928,37 +129105,37 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -128969,9 +129146,9 @@ - - - + + + @@ -128985,11 +129162,11 @@ - - - - - + + + + + @@ -129021,11 +129198,11 @@ - - + + - + @@ -129042,15 +129219,15 @@ - - + + - - + + - - + + @@ -129070,8 +129247,8 @@ - - + + @@ -129081,8 +129258,8 @@ - - + + @@ -129094,8 +129271,8 @@ - - + + @@ -129109,18 +129286,18 @@ - - - + + + - - - - + + + + - - + + @@ -129128,10 +129305,10 @@ - - - - + + + + @@ -129144,14 +129321,14 @@ - - - - + + + + - - + + @@ -129187,18 +129364,18 @@ - - - + + + - - - + + + @@ -129209,8 +129386,8 @@ - - + + @@ -129221,29 +129398,29 @@ - - - - + + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -129262,11 +129439,11 @@ - - - - - + + + + + @@ -129274,8 +129451,8 @@ - - + + @@ -129293,11 +129470,11 @@ - - - - - + + + + + @@ -129325,21 +129502,21 @@ - - - + + + - - - - + + + + - - - - + + + + @@ -129352,9 +129529,9 @@ - - - + + + @@ -129365,13 +129542,13 @@ - - + + - - - + + + @@ -129379,50 +129556,50 @@ - - - + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -129436,8 +129613,8 @@ - - + + @@ -129513,9 +129690,9 @@ - - - + + + @@ -129549,12 +129726,12 @@ - - + + - - - + + + @@ -129564,17 +129741,17 @@ - - - + + + - - - + + + - + @@ -129585,9 +129762,9 @@ - - - + + + @@ -129652,10 +129829,10 @@ - - - - + + + + @@ -129683,13 +129860,13 @@ - - - - - - - + + + + + + + @@ -129876,12 +130053,12 @@ - - + + - - + + @@ -129893,11 +130070,11 @@ - - - - - + + + + + @@ -129938,8 +130115,8 @@ - - + + @@ -129992,8 +130169,8 @@ - - + + @@ -130005,9 +130182,9 @@ - - - + + + @@ -130018,28 +130195,28 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - + + + + + @@ -130050,9 +130227,9 @@ - - - + + + @@ -130113,8 +130290,8 @@ - - + + @@ -130153,9 +130330,9 @@ - - - + + + @@ -130211,8 +130388,8 @@ - - + + @@ -130265,51 +130442,51 @@ - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + @@ -130317,18 +130494,18 @@ - - - - + + + + - - + + @@ -130336,14 +130513,14 @@ - - - - + + + + - - - + + + @@ -130379,17 +130556,17 @@ - - + + - - - + + + @@ -130399,9 +130576,9 @@ - - - + + + @@ -130443,12 +130620,12 @@ - - + + - - + + @@ -130462,67 +130639,67 @@ - - - + + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + @@ -130530,19 +130707,19 @@ - - + + - - + + - - - - - + + + + + @@ -130553,41 +130730,41 @@ - - - - + + + + - - - + + + - - + + - - - - - + + + + + - - + + - - + + @@ -130596,16 +130773,16 @@ - - - - + + + + - - - - + + + + @@ -130626,11 +130803,11 @@ - - - - - + + + + + @@ -130647,24 +130824,24 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + @@ -130699,12 +130876,12 @@ - - + + - - + + @@ -130729,18 +130906,18 @@ - - - + + + - - + + - - - + + + @@ -130764,18 +130941,18 @@ - - - - - + + + + + - - - - - + + + + + @@ -130786,19 +130963,19 @@ - - - - + + + + - - + + - - - + + + @@ -130817,14 +130994,14 @@ - - - + + + - - - + + + @@ -130850,9 +131027,9 @@ - - - + + + @@ -130865,22 +131042,22 @@ - - - - + + + + - - + + - - + + @@ -130894,43 +131071,43 @@ - - + + - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + @@ -130943,9 +131120,9 @@ - - - + + + @@ -130978,14 +131155,14 @@ - - - - + + + + - - + + @@ -130996,44 +131173,44 @@ - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -131067,16 +131244,16 @@ - - - - - - + + + + + + - - - + + + @@ -131084,9 +131261,9 @@ - - - + + + @@ -131130,33 +131307,33 @@ - - - + + + - - - + + + - - + + - - + + - - - + + + - - - - + + + + @@ -131181,9 +131358,9 @@ - - - + + + @@ -131199,32 +131376,32 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - - + + + @@ -131233,9 +131410,9 @@ - - - + + + @@ -131243,74 +131420,74 @@ - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -131322,42 +131499,42 @@ - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - + + @@ -131372,8 +131549,8 @@ - - + + @@ -131393,8 +131570,8 @@ - - + + @@ -131408,61 +131585,61 @@ - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - + + + + @@ -131480,12 +131657,12 @@ - - - - - - + + + + + + @@ -131496,12 +131673,12 @@ - - - - - - + + + + + + @@ -131516,9 +131693,9 @@ - - - + + + @@ -131531,15 +131708,15 @@ - - + + - - - - - + + + + + @@ -131556,10 +131733,10 @@ - - - - + + + + @@ -131579,10 +131756,10 @@ - - - - + + + + @@ -131608,8 +131785,8 @@ - - + + @@ -131620,8 +131797,8 @@ - - + + @@ -131728,25 +131905,25 @@ - - + + - - - - - - + + + + + + - - - + + + - - + + @@ -131772,8 +131949,8 @@ - - + + @@ -131788,16 +131965,16 @@ - - + + - - + + - - + + @@ -131882,19 +132059,19 @@ - - - + + + - - - + + + - - - + + + @@ -131909,8 +132086,8 @@ - - + + @@ -131941,9 +132118,9 @@ - - - + + + @@ -131973,14 +132150,14 @@ - - - + + + - - - + + + @@ -131993,9 +132170,9 @@ - - - + + + @@ -132003,10 +132180,10 @@ - - - - + + + + @@ -132020,12 +132197,12 @@ - - + + - - + + @@ -132046,9 +132223,9 @@ - - - + + + @@ -132060,9 +132237,9 @@ - - - + + + @@ -132110,8 +132287,8 @@ - - + + @@ -132157,9 +132334,9 @@ - - - + + + @@ -132175,10 +132352,10 @@ - - - - + + + + @@ -132199,10 +132376,10 @@ - - - - + + + + @@ -132235,17 +132412,17 @@ - - + + - - - + + + @@ -132259,40 +132436,40 @@ - - + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - + + - - + + - - + + @@ -132314,20 +132491,20 @@ - - - - - - + + + + + + - - + + - - + + @@ -132335,21 +132512,21 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -132360,7 +132537,7 @@ - + @@ -132379,21 +132556,21 @@ - - - - + + + + - - - - - - - - - + + + + + + + + + @@ -132427,8 +132604,8 @@ - - + + @@ -132448,9 +132625,9 @@ - - - + + + @@ -132458,23 +132635,23 @@ - - - + + + - - - + + + - - - + + + @@ -132495,37 +132672,37 @@ - - + + - - - - + + + + - - - + + + - - + + - - - - + + + + @@ -132539,11 +132716,11 @@ - - - - - + + + + + @@ -132594,10 +132771,10 @@ - - - - + + + + @@ -132656,24 +132833,24 @@ - - + + - - + + - - + + @@ -132683,11 +132860,11 @@ - - - - - + + + + + @@ -132732,14 +132909,14 @@ - - - - + + + + - - - + + + @@ -132971,8 +133148,8 @@ - - + + @@ -132992,29 +133169,29 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + @@ -133026,14 +133203,14 @@ - - - + + + - - - + + + @@ -133046,16 +133223,16 @@ - - - - + + + + - - - - + + + + @@ -133107,12 +133284,12 @@ - - + + - - + + @@ -133159,24 +133336,24 @@ - - + + - - + + - - + + - - + + @@ -133196,13 +133373,13 @@ - - + + - - - + + + @@ -133216,19 +133393,18 @@ - - - - + + + + - - - - + + + + - @@ -133246,8 +133422,8 @@ - - + + @@ -133262,8 +133438,8 @@ - - + + @@ -133297,8 +133473,8 @@ - - + + @@ -133316,10 +133492,10 @@ - - - - + + + + @@ -133332,54 +133508,54 @@ - - + + - - - + + + - - + + - + - + - - - - + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + + - - + + @@ -133388,36 +133564,36 @@ - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + @@ -133428,12 +133604,12 @@ - - - - - - + + + + + + @@ -133452,9 +133628,9 @@ - - - + + + @@ -133464,8 +133640,8 @@ - - + + @@ -133479,10 +133655,10 @@ - - - - + + + + @@ -133495,13 +133671,13 @@ - - - + + + - - + + @@ -133554,11 +133730,11 @@ - - - - - + + + + + @@ -133574,20 +133750,20 @@ - - + + - - + + - - + + @@ -133595,24 +133771,24 @@ - - + + - - + + - - + + @@ -133672,8 +133848,8 @@ - - + + @@ -133683,21 +133859,21 @@ - - - - - + + + + + - - - - + + + + @@ -133711,19 +133887,19 @@ - - - + + + - - + + - - - - + + + + @@ -133746,48 +133922,48 @@ - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + @@ -133796,7 +133972,7 @@ - + @@ -133836,17 +134012,17 @@ - + - + - - + + @@ -133865,8 +134041,8 @@ - - + + @@ -133893,31 +134069,31 @@ - - + + - - - - + + + + - - - + + + - - - + + + @@ -133977,8 +134153,8 @@ - - + + @@ -134019,16 +134195,16 @@ - - + + - - + + - - + + @@ -134039,8 +134215,8 @@ - - + + @@ -134063,12 +134239,12 @@ - - + + - - + + @@ -134084,8 +134260,8 @@ - - + + @@ -134204,10 +134380,10 @@ - - - - + + + + @@ -134216,20 +134392,20 @@ - - - - - - - - + + + + + + + + - - - - + + + + @@ -134237,14 +134413,14 @@ - - - + + + - - - + + + @@ -134262,8 +134438,8 @@ - - + + @@ -134275,8 +134451,8 @@ - - + + @@ -134313,8 +134489,8 @@ - - + + @@ -134365,22 +134541,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -134470,8 +134646,8 @@ - - + + @@ -134479,22 +134655,22 @@ - - + + - - - - - - + + + + + + - - - - + + + + @@ -134507,9 +134683,9 @@ - - - + + + @@ -134517,9 +134693,9 @@ - - - + + + @@ -134567,13 +134743,13 @@ - - - - - - - + + + + + + + @@ -134581,28 +134757,28 @@ - - + + - - + + - - + + - - + + - - + + @@ -134618,20 +134794,20 @@ - - - - - - + + + + + + - - - + + + - - + + @@ -134647,8 +134823,8 @@ - - + + @@ -134665,8 +134841,8 @@ - - + + @@ -134679,15 +134855,15 @@ - - - + + + - - - - + + + + @@ -134695,39 +134871,39 @@ - - - + + + - - - - + + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + @@ -134735,30 +134911,30 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -134885,8 +135061,8 @@ - - + + @@ -135005,12 +135181,12 @@ - - + + - - + + @@ -135027,9 +135203,9 @@ - - - + + + @@ -135037,9 +135213,9 @@ - - - + + + @@ -135047,9 +135223,9 @@ - - - + + + @@ -135074,12 +135250,12 @@ - - + + - - + + @@ -135097,10 +135273,10 @@ - - - - + + + + @@ -135117,62 +135293,62 @@ - - - - + + + + - - - + + + - - + + - - - - - - + + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -135183,7 +135359,7 @@ - + @@ -135217,10 +135393,10 @@ - - - - + + + + @@ -135262,7 +135438,7 @@ - + @@ -135270,34 +135446,34 @@ - - + + - - + + - - + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -135308,10 +135484,10 @@ - - - - + + + + @@ -135321,8 +135497,8 @@ - - + + @@ -135333,8 +135509,8 @@ - - + + @@ -135372,8 +135548,8 @@ - - + + @@ -135411,14 +135587,14 @@ - - - - - + + + + + - - + + @@ -135456,11 +135632,11 @@ - - - - - + + + + + @@ -135604,21 +135780,21 @@ - - + + - - - + + + - - + + - - + + @@ -135652,11 +135828,11 @@ - - - - - + + + + + @@ -135671,21 +135847,21 @@ - - + + - - + + - - + + - - - + + + @@ -135701,11 +135877,11 @@ - - - - - + + + + + @@ -135746,21 +135922,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -135781,26 +135957,26 @@ - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + @@ -135809,20 +135985,20 @@ - - - + + + - - - + + + - - - + + + @@ -135832,26 +136008,26 @@ - - - + + + - - - + + + - - - - + + + + - - - - + + + + @@ -135997,9 +136173,9 @@ - - - + + + @@ -136008,9 +136184,9 @@ - - - + + + @@ -136018,21 +136194,21 @@ - - + + - - - - + + + + - - + + - - + + @@ -136040,15 +136216,15 @@ - - - + + + - - - - + + + + @@ -136060,33 +136236,33 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - + + + @@ -136094,28 +136270,28 @@ - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -136126,13 +136302,13 @@ - - - - - - - + + + + + + + @@ -136164,14 +136340,14 @@ - - + + - - - - + + + + @@ -136179,10 +136355,10 @@ - - - - + + + + @@ -136190,10 +136366,10 @@ - - - - + + + + @@ -136216,10 +136392,10 @@ - - - - + + + + @@ -136235,29 +136411,29 @@ - + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -136286,13 +136462,13 @@ - - - - - - - + + + + + + + @@ -136311,10 +136487,10 @@ - - - - + + + + @@ -136331,10 +136507,10 @@ - - - - + + + + @@ -136344,30 +136520,30 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - - - + + + + + + + @@ -136384,13 +136560,13 @@ - - + + - - - + + + @@ -136409,39 +136585,39 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + @@ -136458,55 +136634,55 @@ - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -136516,9 +136692,9 @@ - - - + + + @@ -136528,16 +136704,16 @@ - - - - - + + + + + - - - + + + @@ -136572,15 +136748,15 @@ - - - + + + - - - - + + + + @@ -136593,11 +136769,11 @@ - - - - - + + + + + @@ -136607,16 +136783,16 @@ - - - - - + + + + + - - - + + + @@ -136626,8 +136802,8 @@ - - + + @@ -136639,25 +136815,25 @@ - - + + - - + + - - - - - - - + + + + + + + - - + + @@ -136668,9 +136844,9 @@ - - - + + + @@ -136722,9 +136898,9 @@ - - - + + + @@ -136758,22 +136934,22 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -136852,13 +137028,13 @@ - - + + - - - + + + @@ -136910,8 +137086,8 @@ - - + + @@ -136927,9 +137103,9 @@ - - - + + + @@ -136939,17 +137115,17 @@ - - - - + + + + - - - - - + + + + + @@ -136966,17 +137142,17 @@ - - + + - - - - - - - + + + + + + + @@ -136985,23 +137161,23 @@ - - + + - - - - + + + + - - - + + + - - + + @@ -137012,12 +137188,12 @@ - - - - - - + + + + + + @@ -137029,8 +137205,8 @@ - - + + @@ -137042,18 +137218,18 @@ - - - - - - + + + + + + - - - - + + + + @@ -137061,12 +137237,12 @@ - - + + - - + + @@ -137104,9 +137280,9 @@ - - - + + + @@ -137118,8 +137294,8 @@ - - + + @@ -137151,45 +137327,45 @@ - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + @@ -137234,9 +137410,9 @@ - - - + + + @@ -137267,10 +137443,10 @@ - - - - + + + + @@ -137362,14 +137538,14 @@ - - - - + + + + - - + + @@ -137387,8 +137563,8 @@ - - + + @@ -137633,9 +137809,9 @@ - - - + + + @@ -137724,9 +137900,9 @@ - - - + + + @@ -137747,13 +137923,13 @@ - - - - - - - + + + + + + + @@ -137765,29 +137941,29 @@ - - - + + + - - + + - - + + - - - - - - + + + + + + - - + + @@ -137845,9 +138021,9 @@ - - - + + + @@ -137859,17 +138035,17 @@ - - - - - - + + + + + + - - - + + + @@ -137993,9 +138169,9 @@ - - - + + + @@ -138028,30 +138204,30 @@ - - + + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -138074,9 +138250,9 @@ - - - + + + @@ -138094,8 +138270,8 @@ - - + + @@ -138130,10 +138306,10 @@ - - - - + + + + @@ -138142,21 +138318,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -138164,21 +138340,21 @@ - - - - + + + + - - - - - + + + + + - - - + + + @@ -138197,12 +138373,12 @@ - - - + + + - - + + @@ -138217,26 +138393,26 @@ - - + + - - + + - - + + - + - + @@ -138248,12 +138424,12 @@ - - + + - - + + @@ -138268,23 +138444,23 @@ - - + + - - + + - - - + + + - + - + @@ -138303,15 +138479,15 @@ - - - + + + - - - - + + + + @@ -138324,20 +138500,20 @@ - - - + + + - - - - + + + + - - - + + + @@ -138359,9 +138535,9 @@ - - - + + + @@ -138370,10 +138546,10 @@ - - - - + + + + @@ -138381,9 +138557,9 @@ - - - + + + @@ -138391,9 +138567,9 @@ - - - + + + @@ -138402,17 +138578,17 @@ - - - - + + + + - + @@ -138424,8 +138600,8 @@ - - + + @@ -138467,8 +138643,8 @@ - - + + @@ -138561,8 +138737,8 @@ - - + + @@ -138571,8 +138747,8 @@ - - + + @@ -138604,19 +138780,19 @@ - - - - - - - - - + + + + + + + + + - - + + @@ -138628,9 +138804,9 @@ - - - + + + @@ -138649,14 +138825,14 @@ - - - - + + + + - - + + @@ -138684,9 +138860,9 @@ - - - + + + @@ -138704,6 +138880,7 @@ + @@ -138725,19 +138902,19 @@ - - + + - - - - + + + + - - - + + + @@ -138755,8 +138932,8 @@ - - + + @@ -138766,24 +138943,24 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -138793,32 +138970,32 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -138835,12 +139012,12 @@ - + - - - + + + @@ -138968,10 +139145,10 @@ - - - - + + + + @@ -138979,10 +139156,10 @@ - - - - + + + + @@ -139061,19 +139238,19 @@ - - - + + + - - - + + + - - - + + + @@ -139103,8 +139280,8 @@ - - + + @@ -139122,16 +139299,16 @@ - - + + - - + + @@ -139184,9 +139361,9 @@ - - - + + + @@ -139200,9 +139377,9 @@ - - - + + + @@ -139241,8 +139418,8 @@ - - + + @@ -139288,9 +139465,9 @@ - - - + + + @@ -139381,11 +139558,11 @@ - - - - - + + + + + @@ -139620,9 +139797,9 @@ - - - + + + @@ -139740,15 +139917,15 @@ - - + + - - - - - + + + + + @@ -139782,8 +139959,8 @@ - - + + @@ -139818,17 +139995,17 @@ - - + + - - + + - - - + + + @@ -139839,8 +140016,8 @@ - - + + @@ -139871,12 +140048,12 @@ - - + + - - + + @@ -139899,8 +140076,8 @@ - - + + @@ -139922,8 +140099,8 @@ - - + + @@ -139959,9 +140136,9 @@ - - - + + + @@ -139984,9 +140161,9 @@ - - - + + + @@ -140001,16 +140178,16 @@ - - + + - - + + - - + + @@ -140029,8 +140206,8 @@ - - + + @@ -140045,16 +140222,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -140088,8 +140265,8 @@ - - + + @@ -140112,9 +140289,9 @@ - - - + + + @@ -140126,9 +140303,9 @@ - - - + + + @@ -140147,24 +140324,24 @@ - - - + + + - - - - + + + + - - - + + + @@ -140191,8 +140368,8 @@ - - + + @@ -140211,9 +140388,9 @@ - - - + + + @@ -140222,28 +140399,28 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -140252,14 +140429,14 @@ - - - - + + + + - - + + @@ -140270,9 +140447,9 @@ - - - + + + @@ -140306,8 +140483,8 @@ - - + + @@ -140409,15 +140586,15 @@ - - - + + + - - - - + + + + @@ -140429,8 +140606,8 @@ - - + + @@ -140496,8 +140673,8 @@ - - + + @@ -140509,10 +140686,10 @@ - - - - + + + + @@ -140536,30 +140713,30 @@ - - + + - - + + - - - + + + - - - + + + - - + + @@ -140571,10 +140748,10 @@ - - - - + + + + @@ -140598,9 +140775,9 @@ - - - + + + @@ -140608,8 +140785,8 @@ - - + + @@ -140648,9 +140825,9 @@ - - - + + + @@ -140671,10 +140848,10 @@ - - - - + + + + @@ -140724,9 +140901,9 @@ - - - + + + @@ -140786,21 +140963,21 @@ - - - + + + - - - - - - + + + + + + - - + + @@ -140976,9 +141153,9 @@ - - - + + + @@ -140992,27 +141169,27 @@ - - + + - - - - + + + + - - - + + + @@ -141026,33 +141203,33 @@ - - - - - + + + + + - - - + + + - - + + - - + + - - + + - - - + + + @@ -141298,15 +141475,15 @@ - - - + + + - - - - + + + + @@ -141357,9 +141534,9 @@ - - - + + + @@ -141373,15 +141550,15 @@ - - - - + + + + - - - + + + @@ -141459,9 +141636,9 @@ - - - + + + @@ -141477,36 +141654,36 @@ - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -141521,9 +141698,9 @@ - - - + + + @@ -141538,14 +141715,14 @@ - - - + + + - - - + + + @@ -141587,15 +141764,15 @@ - - + + - - - - - + + + + + @@ -141603,11 +141780,11 @@ - - - - - + + + + + @@ -141623,8 +141800,8 @@ - - + + @@ -141644,8 +141821,8 @@ - - + + @@ -141688,8 +141865,8 @@ - - + + @@ -141725,8 +141902,8 @@ - - + + @@ -141793,9 +141970,9 @@ - - - + + + @@ -141866,26 +142043,26 @@ - - - - - - - + + + + + + + - - + + - - - + + + @@ -141922,21 +142099,21 @@ - - - + + + - - - + + + - - - + + + @@ -142000,15 +142177,15 @@ - - + + - - + + @@ -142019,16 +142196,16 @@ - - - - - + + + + + - - - + + + @@ -142037,11 +142214,11 @@ - - - - - + + + + + @@ -142050,9 +142227,9 @@ - - - + + + @@ -142102,11 +142279,11 @@ - - - - - + + + + + @@ -142116,23 +142293,23 @@ - - - - + + + + - - - + + + - - + + - - + + @@ -142145,12 +142322,12 @@ - - + + - - + + @@ -142158,8 +142335,8 @@ - - + + @@ -142176,8 +142353,8 @@ - - + + @@ -142185,12 +142362,12 @@ - - - + + + - + @@ -142219,17 +142396,17 @@ - - - + + + - - + + @@ -142296,28 +142473,28 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + @@ -142327,17 +142504,17 @@ - - + + - - - - + + + + @@ -142348,26 +142525,26 @@ - - - - + + + + - - - - + + + + - - + + - - - - + + + + @@ -142378,9 +142555,9 @@ - - - + + + @@ -142412,10 +142589,10 @@ - - - - + + + + @@ -142448,9 +142625,9 @@ - - - + + + @@ -142467,15 +142644,15 @@ - - - - + + + + - - - + + + @@ -142499,12 +142676,12 @@ - - - - - - + + + + + + @@ -142526,13 +142703,13 @@ - - + + - - - + + + @@ -142549,10 +142726,10 @@ - - - - + + + + @@ -142563,47 +142740,47 @@ - - - + + + - - + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + diff --git a/android/abi_gki_aarch64_virtual_device b/android/abi_gki_aarch64_virtual_device index e2a5103e1b75..33752fac64a8 100644 --- a/android/abi_gki_aarch64_virtual_device +++ b/android/abi_gki_aarch64_virtual_device @@ -693,9 +693,7 @@ led_set_brightness_nosleep led_trigger_event led_trigger_register - led_trigger_register_simple led_trigger_unregister - led_trigger_unregister_simple # required by lzo-rle.ko lzorle1x_1_compress @@ -1349,6 +1347,7 @@ # required by virtio_pci.ko irq_set_affinity_hint pci_alloc_irq_vectors_affinity + pci_device_is_present pci_disable_sriov pci_enable_sriov pci_find_capability @@ -1383,8 +1382,6 @@ wait_for_completion_interruptible_timeout # required by vmw_vsock_virtio_transport.ko - lock_sock_nested - release_sock virtio_transport_connect virtio_transport_deliver_tap_pkt virtio_transport_destruct From f5284c5c9c632f646d67e6728439e1eeee39d814 Mon Sep 17 00:00:00 2001 From: Jiachiam Liu Date: Mon, 1 Nov 2021 13:32:44 +0800 Subject: [PATCH 53/62] ANDROID: Update symbol list for mtk Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable 1 Added function: [A] 'function int __traceiter_android_vh_scmi_timeout_sync(void*, int*)' 1 Added variable: [A] 'tracepoint __tracepoint_android_vh_scmi_timeout_sync' Bug: 204502634 Signed-off-by: Jiachiam Liu Change-Id: I3820936488980ba11e581c14424252d35cced7f3 --- android/abi_gki_aarch64.xml | 10645 +++++++++++++++++----------------- android/abi_gki_aarch64_mtk | 2 + 2 files changed, 5240 insertions(+), 5407 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 932ed71c46fa..e42fda1c4b3d 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -460,6 +460,7 @@ + @@ -5821,6 +5822,7 @@ + @@ -8550,9 +8552,9 @@ - - - + + + @@ -8565,7 +8567,6 @@ - @@ -8647,7 +8648,6 @@ - @@ -9061,7 +9061,14 @@ - + + + + + + + + @@ -9069,13 +9076,6 @@ - - - - - - - @@ -11508,6 +11508,7 @@ + @@ -11914,8 +11915,8 @@ - - + + @@ -12548,7 +12549,23 @@ - + + + + + + + + + + + + + + + + + @@ -13195,6 +13212,7 @@ + @@ -14744,12 +14762,6 @@ - - - - - - @@ -15244,6 +15256,9 @@ + + + @@ -15443,7 +15458,29 @@ - + + + + + + + + + + + + + + + + + + + + + + + @@ -16798,8 +16835,8 @@ - - + + @@ -18327,7 +18364,6 @@ - @@ -18701,11 +18737,7 @@ - - - - - + @@ -19660,7 +19692,6 @@ - @@ -19858,7 +19889,6 @@ - @@ -20296,14 +20326,6 @@ - - - - - - - - @@ -20654,7 +20676,7 @@ - + @@ -21368,6 +21390,7 @@ + @@ -22108,6 +22131,11 @@ + + + + + @@ -24266,7 +24294,7 @@ - + @@ -24490,6 +24518,7 @@ + @@ -24794,7 +24823,23 @@ - + + + + + + + + + + + + + + + + + @@ -25456,7 +25501,7 @@ - + @@ -25833,7 +25878,6 @@ - @@ -25911,7 +25955,7 @@ - + @@ -25968,6 +26012,7 @@ + @@ -26321,6 +26366,7 @@ + @@ -26951,7 +26997,7 @@ - + @@ -27886,7 +27932,6 @@ - @@ -31631,9 +31676,9 @@ - - - + + + @@ -32507,7 +32552,6 @@ - @@ -32762,7 +32806,68 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -33267,7 +33372,6 @@ - @@ -33682,6 +33786,7 @@ + @@ -33880,7 +33985,7 @@ - + @@ -37426,7 +37531,6 @@ - @@ -38216,8 +38320,8 @@ - - + + @@ -39189,17 +39293,6 @@ - - - - - - - - - - - @@ -39479,9 +39572,9 @@ - - - + + + @@ -39988,6 +40081,7 @@ + @@ -40945,7 +41039,6 @@ - @@ -43447,15 +43540,7 @@ - - - - - - - - @@ -43792,18 +43877,7 @@ - - - - - - - - - - - - + @@ -43899,12 +43973,12 @@ - - - - - - + + + + + + @@ -44009,7 +44083,6 @@ - @@ -44790,21 +44863,21 @@ - + - + - + - + - + - + @@ -45250,7 +45323,6 @@ - @@ -46901,8 +46973,8 @@ - - + + @@ -47248,7 +47320,35 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -47809,7 +47909,14 @@ - + + + + + + + + @@ -48455,11 +48562,6 @@ - - - - - @@ -48865,7 +48967,7 @@ - + @@ -48991,6 +49093,11 @@ + + + + + @@ -49296,7 +49403,7 @@ - + @@ -49444,56 +49551,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -49834,6 +49892,7 @@ + @@ -50769,7 +50828,7 @@ - + @@ -51614,26 +51673,8 @@ - - - - - - - - - - - - - - - - - - @@ -51892,26 +51933,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -52099,6 +52120,7 @@ + @@ -52688,7 +52710,23 @@ - + + + + + + + + + + + + + + + + + @@ -53050,7 +53088,6 @@ - @@ -53981,9 +54018,9 @@ - - - + + + @@ -54703,6 +54740,7 @@ + @@ -55287,7 +55325,7 @@ - + @@ -55752,7 +55790,7 @@ - + @@ -56613,26 +56651,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -57977,7 +57995,6 @@ - @@ -58440,11 +58457,6 @@ - - - - - @@ -59669,44 +59681,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -60896,65 +60871,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -61731,7 +61648,6 @@ - @@ -62681,7 +62597,17 @@ - + + + + + + + + + + + @@ -63747,7 +63673,7 @@ - + @@ -64241,10 +64167,10 @@ - - - - + + + + @@ -64294,6 +64220,12 @@ + + + + + + @@ -64553,6 +64485,7 @@ + @@ -64876,47 +64809,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -65511,11 +65404,6 @@ - - - - - @@ -66542,11 +66430,6 @@ - - - - - @@ -67007,7 +66890,7 @@ - + @@ -68871,7 +68754,6 @@ - @@ -69068,6 +68950,7 @@ + @@ -70676,14 +70559,7 @@ - - - - - - - - + @@ -70817,14 +70693,6 @@ - - - - - - - - @@ -71513,8 +71381,8 @@ - - + + @@ -71633,7 +71501,6 @@ - @@ -72320,8 +72187,8 @@ - - + + @@ -72393,6 +72260,7 @@ + @@ -72857,38 +72725,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -72999,7 +72836,7 @@ - + @@ -75687,7 +75524,6 @@ - @@ -77095,11 +76931,11 @@ - + - + @@ -78152,12 +77988,12 @@ - - - - - - + + + + + + @@ -79443,6 +79279,7 @@ + @@ -79682,7 +79519,6 @@ - @@ -80408,6 +80244,7 @@ + @@ -80995,6 +80832,7 @@ + @@ -81067,6 +80905,9 @@ + + + @@ -81083,11 +80924,6 @@ - - - - - @@ -81110,7 +80946,6 @@ - @@ -81571,7 +81406,7 @@ - + @@ -81647,14 +81482,6 @@ - - - - - - - - @@ -84732,6 +84559,7 @@ + @@ -85350,7 +85178,7 @@ - + @@ -86031,9 +85859,9 @@ - - - + + + @@ -86502,26 +86330,7 @@ - - - - - - - - - - - - - - - - - - - - + @@ -86546,7 +86355,7 @@ - + @@ -86571,6 +86380,7 @@ + @@ -86609,6 +86419,7 @@ + @@ -88021,7 +87832,7 @@ - + @@ -88652,8 +88463,8 @@ - - + + @@ -89722,7 +89533,6 @@ - @@ -89883,6 +89693,14 @@ + + + + + + + + @@ -90317,7 +90135,20 @@ - + + + + + + + + + + + + + + @@ -90874,7 +90705,7 @@ - + @@ -91049,7 +90880,7 @@ - + @@ -91344,6 +91175,7 @@ + @@ -91479,12 +91311,12 @@ - + - + @@ -93049,7 +92881,6 @@ - @@ -93562,17 +93393,6 @@ - - - - - - - - - - - @@ -94335,7 +94155,7 @@ - + @@ -94893,7 +94713,7 @@ - + @@ -95331,7 +95151,7 @@ - + @@ -96037,9 +95857,6 @@ - - - @@ -97279,6 +97096,7 @@ + @@ -97554,8 +97372,8 @@ - - + + @@ -97764,8 +97582,8 @@ - - + + @@ -98920,6 +98738,7 @@ + @@ -99895,7 +99714,14 @@ - + + + + + + + + @@ -101378,10 +101204,10 @@ - - - + + + @@ -101405,7 +101231,7 @@ - + @@ -101546,8 +101372,8 @@ - - + + @@ -102147,7 +101973,6 @@ - @@ -102416,6 +102241,7 @@ + @@ -102941,7 +102767,20 @@ - + + + + + + + + + + + + + + @@ -103000,6 +102839,9 @@ + + + @@ -106407,6 +106249,7 @@ + @@ -106421,20 +106264,6 @@ - - - - - - - - - - - - - - @@ -106769,6 +106598,7 @@ + @@ -110095,7 +109925,7 @@ - + @@ -110693,11 +110523,6 @@ - - - - - @@ -111024,6 +110849,7 @@ + @@ -112779,7 +112605,6 @@ - @@ -112864,7 +112689,6 @@ - @@ -112983,8 +112807,8 @@ - - + + @@ -113521,6 +113345,7 @@ + @@ -115772,6 +115597,11 @@ + + + + + @@ -116642,6 +116472,7 @@ + @@ -116937,9 +116768,9 @@ - - - + + + @@ -116950,33 +116781,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + @@ -116986,27 +116817,27 @@ - - - + + + - - - + + + - - - + + + - - - + + + @@ -117016,8 +116847,8 @@ - - + + @@ -117036,8 +116867,8 @@ - - + + @@ -117053,57 +116884,57 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + @@ -117114,16 +116945,16 @@ - - + + - - + + @@ -117147,12 +116978,12 @@ - - - - - - + + + + + + @@ -117169,9 +117000,9 @@ - - - + + + @@ -117187,33 +117018,33 @@ - - + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + @@ -117226,22 +117057,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -117320,13 +117151,13 @@ - - - - - - - + + + + + + + @@ -117335,29 +117166,29 @@ - - - + + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -117399,11 +117230,11 @@ - - - - - + + + + + @@ -117423,14 +117254,14 @@ - - + + - - - - + + + + @@ -117453,15 +117284,15 @@ - - - - + + + + - - - + + + @@ -117469,11 +117300,11 @@ - - - - - + + + + + @@ -117524,21 +117355,21 @@ - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -117579,18 +117410,18 @@ - - + + - - - + + + - - - + + + @@ -117623,17 +117454,17 @@ - - - - + + + + - - - - - + + + + + @@ -117644,58 +117475,58 @@ - - - - + + + + - - + + - - - + + + - - - + + + - - + + - - - - + + + + - - + + - - + + - - + + - - - - - + + + + + - - - + + + @@ -117704,49 +117535,49 @@ - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -117756,10 +117587,10 @@ - - - - + + + + @@ -117803,17 +117634,17 @@ - - + + - - + + - - - + + + @@ -117848,10 +117679,10 @@ - - - - + + + + @@ -117883,13 +117714,13 @@ - - - + + + - - + + @@ -117920,8 +117751,8 @@ - - + + @@ -117930,8 +117761,8 @@ - - + + @@ -117953,8 +117784,8 @@ - - + + @@ -118001,8 +117832,8 @@ - - + + @@ -118024,10 +117855,10 @@ - - - - + + + + @@ -118063,9 +117894,9 @@ - - - + + + @@ -118209,16 +118040,16 @@ - - + + - - + + @@ -118267,26 +118098,26 @@ - - - - + + + + - - - - + + + + - - - + + + - - - + + + @@ -118295,31 +118126,31 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -118337,9 +118168,9 @@ - - - + + + @@ -118387,67 +118218,67 @@ - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + @@ -118463,16 +118294,16 @@ - - + + - - - - - - + + + + + + @@ -118493,33 +118324,33 @@ - - + + - - + + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -118529,8 +118360,8 @@ - - + + @@ -118543,8 +118374,8 @@ - - + + @@ -118614,9 +118445,9 @@ - - - + + + @@ -118655,11 +118486,11 @@ - - - - - + + + + + @@ -118675,19 +118506,19 @@ - - - + + + - - - + + + - - - + + + @@ -118719,9 +118550,9 @@ - - - + + + @@ -118805,14 +118636,14 @@ - - - + + + - - - + + + @@ -118821,65 +118652,65 @@ - - - + + + - - - - + + + + - - + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -118888,48 +118719,48 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -118940,8 +118771,8 @@ - - + + @@ -119059,8 +118890,8 @@ - - + + @@ -119162,28 +118993,28 @@ - - - + + + - - + + - - - - - + + + + + @@ -119198,11 +119029,11 @@ - - - - - + + + + + @@ -119214,11 +119045,11 @@ - - - - - + + + + + @@ -119237,8 +119068,8 @@ - - + + @@ -119275,10 +119106,10 @@ - - - - + + + + @@ -119316,22 +119147,22 @@ - - + + - - - - + + + + - - + + - - + + @@ -119358,22 +119189,22 @@ - - + + - - - - + + + + - - - + + + @@ -119434,8 +119265,8 @@ - - + + @@ -119466,18 +119297,18 @@ - - + + - - - + + + - - - + + + @@ -119489,8 +119320,8 @@ - - + + @@ -119506,9 +119337,9 @@ - - - + + + @@ -119541,12 +119372,12 @@ - - + + - - + + @@ -119557,23 +119388,23 @@ - - + + - - - + + + - - - - + + + + @@ -119588,9 +119419,9 @@ - - - + + + @@ -119609,8 +119440,8 @@ - - + + @@ -119630,58 +119461,58 @@ - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - + - + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -119724,12 +119555,12 @@ - - + + - - + + @@ -119758,10 +119589,10 @@ - - - - + + + + @@ -119816,42 +119647,42 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - + + - - - + + + - - - + + + - + @@ -119894,10 +119725,10 @@ - - - - + + + + @@ -119905,9 +119736,9 @@ - - - + + + @@ -119917,7 +119748,7 @@ - + @@ -119938,8 +119769,8 @@ - - + + @@ -119960,22 +119791,22 @@ - - + + - - - + + + - - - + + + @@ -120025,11 +119856,11 @@ - - - - - + + + + + @@ -120037,44 +119868,44 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -120095,8 +119926,8 @@ - - + + @@ -120121,18 +119952,18 @@ - - - + + + - - - + + + @@ -120149,9 +119980,9 @@ - - - + + + @@ -120162,11 +119993,11 @@ - - - - - + + + + + @@ -120176,8 +120007,8 @@ - - + + @@ -120193,18 +120024,18 @@ - - + + - - + + - - - - + + + + @@ -120235,12 +120066,12 @@ - - + + - - + + @@ -120249,7 +120080,7 @@ - + @@ -120280,11 +120111,11 @@ - - - - - + + + + + @@ -120294,25 +120125,25 @@ - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -120349,11 +120180,11 @@ - - - - - + + + + + @@ -120363,11 +120194,11 @@ - - - - - + + + + + @@ -120399,9 +120230,9 @@ - - - + + + @@ -120412,8 +120243,8 @@ - - + + @@ -120423,9 +120254,9 @@ - - - + + + @@ -120434,11 +120265,11 @@ - - - - - + + + + + @@ -120451,16 +120282,16 @@ - - + + - - + + - - + + @@ -120471,8 +120302,8 @@ - - + + @@ -120508,49 +120339,49 @@ - - + + - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -120572,9 +120403,9 @@ - - - + + + @@ -120587,9 +120418,9 @@ - - - + + + @@ -120611,10 +120442,10 @@ - - - - + + + + @@ -120645,15 +120476,15 @@ - - - - + + + + - - - + + + @@ -120673,8 +120504,8 @@ - - + + @@ -120690,8 +120521,8 @@ - - + + @@ -120699,13 +120530,13 @@ - - + + - - - + + + @@ -120716,9 +120547,9 @@ - - - + + + @@ -120735,16 +120566,16 @@ - - + + - - + + @@ -120769,9 +120600,9 @@ - - - + + + @@ -120861,9 +120692,9 @@ - - - + + + @@ -120876,17 +120707,17 @@ - - - - + + + + - - - - + + + + @@ -120894,10 +120725,10 @@ - - - - + + + + @@ -120905,9 +120736,9 @@ - - - + + + @@ -120928,11 +120759,11 @@ - - - - - + + + + + @@ -121004,20 +120835,20 @@ - - + + - - + + - - + + @@ -121030,8 +120861,8 @@ - - + + @@ -121053,12 +120884,12 @@ - - - - - - + + + + + + @@ -121067,40 +120898,40 @@ - - - + + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -121135,28 +120966,28 @@ - - - + + + - - + + - - - - + + + + - - - + + + @@ -121178,10 +121009,10 @@ - - - - + + + + @@ -121203,11 +121034,11 @@ - - - - - + + + + + @@ -121230,15 +121061,15 @@ - - - + + + - - - - + + + + @@ -121255,14 +121086,14 @@ - - - + + + - - - + + + @@ -121291,22 +121122,22 @@ - - + + - - + + - - - - + + + + @@ -121329,10 +121160,10 @@ - - - - + + + + @@ -121340,15 +121171,15 @@ - - - - + + + + - - - + + + @@ -121455,11 +121286,11 @@ - - - - - + + + + + @@ -121657,29 +121488,29 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -121689,10 +121520,10 @@ - - - - + + + + @@ -121731,14 +121562,14 @@ - - - - - - - - + + + + + + + + @@ -121751,9 +121582,9 @@ - - - + + + @@ -121786,8 +121617,8 @@ - - + + @@ -121854,14 +121685,14 @@ - - - + + + - - - + + + @@ -121869,10 +121700,10 @@ - - - - + + + + @@ -121917,15 +121748,15 @@ - - - - + + + + - - - + + + @@ -122024,16 +121855,16 @@ - - - + + + - - - - - + + + + + @@ -122083,46 +121914,46 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - - + + + + + - - + + - - + + @@ -122217,9 +122048,9 @@ - - - + + + @@ -122241,17 +122072,17 @@ - - + + - - - + + + - - + + @@ -122259,15 +122090,15 @@ - - - + + + - - - - + + + + @@ -122278,34 +122109,34 @@ - - + + - - - - + + + + - - + + - - - + + + - - - - + + + + @@ -122317,9 +122148,9 @@ - - - + + + @@ -122327,8 +122158,8 @@ - - + + @@ -122339,15 +122170,15 @@ - + - - - - - - + + + + + + @@ -122359,13 +122190,13 @@ - - - - + + + + - - + + @@ -122385,10 +122216,10 @@ - - - - + + + + @@ -122538,46 +122369,46 @@ - - - + + + - - - + + + - - + + - - - - - + + + + + - - + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -122710,8 +122541,8 @@ - - + + @@ -122744,16 +122575,16 @@ - - + + - - + + - - + + @@ -122765,8 +122596,8 @@ - - + + @@ -122777,8 +122608,8 @@ - - + + @@ -122798,9 +122629,9 @@ - - - + + + @@ -122810,62 +122641,62 @@ - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -122883,14 +122714,14 @@ - - - + + + - - - + + + @@ -122925,13 +122756,13 @@ - - - - - - - + + + + + + + @@ -123155,62 +122986,62 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + @@ -123226,15 +123057,15 @@ - - + + - - - - - + + + + + @@ -123245,10 +123076,10 @@ - - - - + + + + @@ -123277,8 +123108,8 @@ - - + + @@ -123286,9 +123117,9 @@ - - - + + + @@ -123325,9 +123156,9 @@ - - - + + + @@ -123336,8 +123167,8 @@ - - + + @@ -123345,19 +123176,19 @@ - - - - - + + + + + - - - - - - + + + + + + @@ -123365,20 +123196,20 @@ - - + + - - + + - - + + - - + + @@ -123391,17 +123222,17 @@ - - + + - - + + - - - + + + @@ -123448,19 +123279,19 @@ - - - - - - - + + + + + + + - - - + + + @@ -123468,17 +123299,17 @@ - - - + + + - - + + @@ -123496,20 +123327,20 @@ - - + + - - + + - - + + @@ -123522,11 +123353,11 @@ - - - - - + + + + + @@ -123537,33 +123368,33 @@ - - - + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -123847,23 +123678,23 @@ - - + + - - - - + + + + - - - + + + @@ -123879,12 +123710,12 @@ - - - - - - + + + + + + @@ -123936,20 +123767,20 @@ - - + + - - - - + + + + - - - - + + + + @@ -124104,10 +123935,10 @@ - - - - + + + + @@ -124157,9 +123988,9 @@ - - - + + + @@ -124288,19 +124119,19 @@ - - - + + + - - - + + + - - - + + + @@ -124401,8 +124232,8 @@ - - + + @@ -124424,9 +124255,9 @@ - - - + + + @@ -124454,8 +124285,8 @@ - - + + @@ -124470,24 +124301,24 @@ - - + + - - - + + + - - - - + + + + - - - + + + @@ -124506,9 +124337,9 @@ - - - + + + @@ -124522,18 +124353,18 @@ - - + + - - - + + + - - - + + + @@ -124554,9 +124385,9 @@ - - - + + + @@ -124587,28 +124418,28 @@ - - + + - - + + - - - + + + - - - - + + + + - - - + + + @@ -124619,83 +124450,83 @@ - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + @@ -124751,17 +124582,17 @@ - - + + - - + + - - - + + + @@ -124775,20 +124606,20 @@ - - + + - - + + - - + + @@ -124857,9 +124688,9 @@ - - - + + + @@ -124867,44 +124698,44 @@ - - + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + @@ -124914,12 +124745,12 @@ - - - - - - + + + + + + @@ -124930,9 +124761,9 @@ - - - + + + @@ -124940,18 +124771,18 @@ - - - - + + + + - - - - - - - + + + + + + + @@ -124966,30 +124797,30 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -125025,8 +124856,8 @@ - - + + @@ -125102,20 +124933,20 @@ - - + + - - - - - - - - - - + + + + + + + + + + @@ -125124,19 +124955,19 @@ - - - + + + - - - - + + + + - - - + + + @@ -125163,36 +124994,36 @@ - - - - + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -125431,8 +125262,8 @@ - - + + @@ -125446,13 +125277,13 @@ - - + + - - - + + + @@ -125491,14 +125322,14 @@ - - - + + + - - - + + + @@ -125506,17 +125337,17 @@ - - - - + + + + - - + + @@ -125531,9 +125362,9 @@ - - - + + + @@ -125547,50 +125378,50 @@ - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - + + @@ -125600,15 +125431,15 @@ - - - + + + - - - - + + + + @@ -125641,27 +125472,27 @@ - - - - + + + + - - - - - + + + + + - - - + + + - - + + @@ -125675,9 +125506,9 @@ - - - + + + @@ -125686,30 +125517,30 @@ - - - + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -125725,26 +125556,26 @@ - - + + - - - + + + - - + + - - - + + + @@ -125761,8 +125592,8 @@ - - + + @@ -125777,8 +125608,8 @@ - - + + @@ -125826,18 +125657,18 @@ - - - + + + - - + + - - - + + + @@ -125845,13 +125676,13 @@ - - + + - - - + + + @@ -125859,9 +125690,9 @@ - - - + + + @@ -125919,8 +125750,8 @@ - - + + @@ -125929,9 +125760,9 @@ - - - + + + @@ -125944,8 +125775,8 @@ - - + + @@ -125988,12 +125819,12 @@ - - + + - - + + @@ -126030,35 +125861,35 @@ - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - + + + @@ -126070,13 +125901,13 @@ - - - + + + - - + + @@ -126119,33 +125950,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + @@ -126166,8 +125997,8 @@ - - + + @@ -126192,10 +126023,10 @@ - - - - + + + + @@ -126205,12 +126036,12 @@ - - + + - - + + @@ -126221,17 +126052,17 @@ - - - - - - - + + + + + + + - - + + @@ -126248,8 +126079,8 @@ - - + + @@ -126275,15 +126106,15 @@ - - + + - - - - - + + + + + @@ -126295,8 +126126,8 @@ - - + + @@ -126322,8 +126153,8 @@ - - + + @@ -126333,20 +126164,20 @@ - - + + - + - - - + + + @@ -126360,41 +126191,41 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -126404,13 +126235,13 @@ - - + + - - - + + + @@ -126424,41 +126255,41 @@ - - - - - - + + + + + + - - + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + @@ -126468,8 +126299,8 @@ - - + + @@ -126481,18 +126312,18 @@ - - + + - - - - + + + + @@ -126516,23 +126347,23 @@ - - - + + + - - - + + + - - - + + + - - + + @@ -126545,9 +126376,9 @@ - - - + + + @@ -126555,29 +126386,29 @@ - - - - + + + + - - + + - - - - - + + + + + - - - - - - + + + + + + @@ -126610,9 +126441,9 @@ - - - + + + @@ -126621,13 +126452,13 @@ - - + + - - - + + + @@ -126720,8 +126551,8 @@ - - + + @@ -126746,13 +126577,13 @@ - - - + + + - - + + @@ -126797,27 +126628,27 @@ - - + + - + - - - + + + - - + + - - + + @@ -126868,38 +126699,38 @@ - - - - + + + + - - - - - - - - + + + + + + + + - - + + - - + + - + - - + + @@ -126910,9 +126741,9 @@ - - - + + + @@ -126927,26 +126758,26 @@ - - + + - - - - + + + + - - - - - - + + + + + + - - + + @@ -126961,28 +126792,28 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - - + + + + @@ -126997,28 +126828,28 @@ - - - - - + + + + + - - + + - - - - - + + + + + - - - - + + + + @@ -127040,18 +126871,18 @@ - - + + - - + + - - + + @@ -127074,12 +126905,12 @@ - - + + - - + + @@ -127116,9 +126947,9 @@ - - - + + + @@ -127153,81 +126984,81 @@ - - - + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -127352,12 +127183,12 @@ - - + + - - + + @@ -127400,14 +127231,14 @@ - - + + - - - - + + + + @@ -127428,36 +127259,36 @@ - - - - - + + + + + - - + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -127468,39 +127299,39 @@ - - + + - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - - - + + + + @@ -127526,14 +127357,14 @@ - - + + - - - - + + + + @@ -127550,8 +127381,8 @@ - - + + @@ -127641,14 +127472,14 @@ - - - - - - - - + + + + + + + + @@ -127658,8 +127489,8 @@ - - + + @@ -127683,9 +127514,9 @@ - - - + + + @@ -127705,18 +127536,18 @@ - - - - + + + + - - - + + + @@ -127724,27 +127555,27 @@ - - - - - - + + + + + + - - - + + + - - - + + + - - - + + + @@ -127754,8 +127585,8 @@ - - + + @@ -127776,8 +127607,8 @@ - - + + @@ -127792,8 +127623,8 @@ - - + + @@ -127826,20 +127657,20 @@ - - + + - - + + - - + + @@ -127876,12 +127707,12 @@ - - + + - - + + @@ -127889,34 +127720,34 @@ - - + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -127998,9 +127829,9 @@ - - - + + + @@ -128161,29 +127992,29 @@ - - - + + + - - + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -128191,47 +128022,47 @@ - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - - - + + + + + + - - - - - + + + + + @@ -128266,8 +128097,8 @@ - - + + @@ -128367,13 +128198,13 @@ - - - + + + - - + + @@ -128384,15 +128215,15 @@ - - - - - - - - - + + + + + + + + + @@ -128428,9 +128259,9 @@ - - - + + + @@ -128456,30 +128287,30 @@ - - - + + + - - - - + + + + - - - - + + + + - - - + + + @@ -128492,10 +128323,10 @@ - - - - + + + + @@ -128503,11 +128334,11 @@ - - - - - + + + + + @@ -128530,10 +128361,10 @@ - - - - + + + + @@ -128546,20 +128377,20 @@ - - - + + + - - - - + + + + - + - - + + @@ -128569,9 +128400,9 @@ - - - + + + @@ -128660,14 +128491,14 @@ - - - + + + - - + + @@ -128743,8 +128574,8 @@ - - + + @@ -128754,66 +128585,66 @@ - - + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - + + - + - - - - + + + + @@ -128833,21 +128664,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -128858,23 +128689,23 @@ - - - - - - - - + + + + + + + + - - + + - - - + + + @@ -128883,10 +128714,10 @@ - - - - + + + + @@ -128918,46 +128749,46 @@ - - - - + + + + - - - + + + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - - + + + @@ -128966,31 +128797,31 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -128999,23 +128830,23 @@ - - - + + + - - - + + + - - - + + + @@ -129023,34 +128854,34 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + @@ -129060,10 +128891,10 @@ - - - - + + + + @@ -129079,10 +128910,10 @@ - - - - + + + + @@ -129092,10 +128923,10 @@ - - - - + + + + @@ -129105,37 +128936,37 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -129146,9 +128977,9 @@ - - - + + + @@ -129162,11 +128993,11 @@ - - - - - + + + + + @@ -129198,11 +129029,11 @@ - - + + - + @@ -129219,15 +129050,15 @@ - - + + - - + + - - + + @@ -129247,8 +129078,8 @@ - - + + @@ -129258,8 +129089,8 @@ - - + + @@ -129271,8 +129102,8 @@ - - + + @@ -129286,18 +129117,18 @@ - - - + + + - - - - + + + + - - + + @@ -129305,10 +129136,10 @@ - - - - + + + + @@ -129321,14 +129152,14 @@ - - - - + + + + - - + + @@ -129364,18 +129195,18 @@ - - - + + + - - - + + + @@ -129386,8 +129217,8 @@ - - + + @@ -129398,29 +129229,29 @@ - - - - + + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -129439,11 +129270,11 @@ - - - - - + + + + + @@ -129451,8 +129282,8 @@ - - + + @@ -129470,11 +129301,11 @@ - - - - - + + + + + @@ -129502,21 +129333,21 @@ - - - + + + - - - - + + + + - - - - + + + + @@ -129529,9 +129360,9 @@ - - - + + + @@ -129542,13 +129373,13 @@ - - + + - - - + + + @@ -129556,50 +129387,50 @@ - - - + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -129613,8 +129444,8 @@ - - + + @@ -129690,9 +129521,9 @@ - - - + + + @@ -129726,12 +129557,12 @@ - - + + - - - + + + @@ -129741,17 +129572,17 @@ - - - + + + - - - + + + - + @@ -129762,9 +129593,9 @@ - - - + + + @@ -129829,10 +129660,10 @@ - - - - + + + + @@ -129860,13 +129691,13 @@ - - - - - - - + + + + + + + @@ -130053,12 +129884,12 @@ - - + + - - + + @@ -130070,11 +129901,11 @@ - - - - - + + + + + @@ -130115,8 +129946,8 @@ - - + + @@ -130169,8 +130000,8 @@ - - + + @@ -130182,9 +130013,9 @@ - - - + + + @@ -130195,28 +130026,28 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - + + + + + @@ -130227,9 +130058,9 @@ - - - + + + @@ -130290,8 +130121,8 @@ - - + + @@ -130330,9 +130161,9 @@ - - - + + + @@ -130388,8 +130219,8 @@ - - + + @@ -130442,51 +130273,51 @@ - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + @@ -130494,18 +130325,18 @@ - - - - + + + + - - + + @@ -130513,14 +130344,14 @@ - - - - + + + + - - - + + + @@ -130556,17 +130387,17 @@ - - + + - - - + + + @@ -130576,9 +130407,9 @@ - - - + + + @@ -130620,12 +130451,12 @@ - - + + - - + + @@ -130639,67 +130470,67 @@ - - - + + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + @@ -130707,19 +130538,19 @@ - - + + - - + + - - - - - + + + + + @@ -130730,41 +130561,41 @@ - - - - + + + + - - - + + + - - + + - - - - - + + + + + - - + + - - + + @@ -130773,16 +130604,16 @@ - - - - + + + + - - - - + + + + @@ -130803,11 +130634,11 @@ - - - - - + + + + + @@ -130824,24 +130655,24 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + @@ -130876,12 +130707,12 @@ - - + + - - + + @@ -130906,18 +130737,18 @@ - - - + + + - - + + - - - + + + @@ -130941,18 +130772,18 @@ - - - - - + + + + + - - - - - + + + + + @@ -130963,19 +130794,19 @@ - - - - + + + + - - + + - - - + + + @@ -130994,14 +130825,14 @@ - - - + + + - - - + + + @@ -131027,9 +130858,9 @@ - - - + + + @@ -131042,22 +130873,22 @@ - - - - + + + + - - + + - - + + @@ -131071,43 +130902,43 @@ - - + + - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + @@ -131120,9 +130951,9 @@ - - - + + + @@ -131155,14 +130986,14 @@ - - - - + + + + - - + + @@ -131173,44 +131004,44 @@ - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -131244,16 +131075,16 @@ - - - - - - + + + + + + - - - + + + @@ -131261,9 +131092,9 @@ - - - + + + @@ -131307,33 +131138,33 @@ - - - + + + - - - + + + - - + + - - + + - - - + + + - - - - + + + + @@ -131358,9 +131189,9 @@ - - - + + + @@ -131376,32 +131207,32 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - - + + + @@ -131410,9 +131241,9 @@ - - - + + + @@ -131420,74 +131251,74 @@ - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -131499,42 +131330,42 @@ - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - + + @@ -131549,8 +131380,8 @@ - - + + @@ -131570,8 +131401,8 @@ - - + + @@ -131585,61 +131416,61 @@ - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - + + + + @@ -131657,12 +131488,12 @@ - - - - - - + + + + + + @@ -131673,12 +131504,12 @@ - - - - - - + + + + + + @@ -131693,9 +131524,9 @@ - - - + + + @@ -131708,15 +131539,15 @@ - - + + - - - - - + + + + + @@ -131733,10 +131564,10 @@ - - - - + + + + @@ -131756,10 +131587,10 @@ - - - - + + + + @@ -131785,8 +131616,8 @@ - - + + @@ -131797,8 +131628,8 @@ - - + + @@ -131905,25 +131736,25 @@ - - + + - - - - - - + + + + + + - - - + + + - - + + @@ -131949,8 +131780,8 @@ - - + + @@ -131965,16 +131796,16 @@ - - + + - - + + - - + + @@ -132059,19 +131890,19 @@ - - - + + + - - - + + + - - - + + + @@ -132086,8 +131917,8 @@ - - + + @@ -132118,9 +131949,9 @@ - - - + + + @@ -132150,14 +131981,14 @@ - - - + + + - - - + + + @@ -132170,9 +132001,9 @@ - - - + + + @@ -132180,10 +132011,10 @@ - - - - + + + + @@ -132197,12 +132028,12 @@ - - + + - - + + @@ -132223,9 +132054,9 @@ - - - + + + @@ -132237,9 +132068,9 @@ - - - + + + @@ -132287,8 +132118,8 @@ - - + + @@ -132334,9 +132165,9 @@ - - - + + + @@ -132352,10 +132183,10 @@ - - - - + + + + @@ -132376,10 +132207,10 @@ - - - - + + + + @@ -132412,17 +132243,17 @@ - - + + - - - + + + @@ -132436,40 +132267,40 @@ - - + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - + + - - + + - - + + @@ -132491,20 +132322,20 @@ - - - - - - + + + + + + - - + + - - + + @@ -132512,21 +132343,21 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -132537,7 +132368,7 @@ - + @@ -132556,21 +132387,21 @@ - - - - + + + + - - - - - - - - - + + + + + + + + + @@ -132604,8 +132435,8 @@ - - + + @@ -132625,9 +132456,9 @@ - - - + + + @@ -132635,23 +132466,23 @@ - - - + + + - - - + + + - - - + + + @@ -132672,37 +132503,37 @@ - - + + - - - - + + + + - - - + + + - - + + - - - - + + + + @@ -132716,11 +132547,11 @@ - - - - - + + + + + @@ -132771,10 +132602,10 @@ - - - - + + + + @@ -132833,24 +132664,24 @@ - - + + - - + + - - + + @@ -132860,11 +132691,11 @@ - - - - - + + + + + @@ -132909,14 +132740,14 @@ - - - - + + + + - - - + + + @@ -133148,8 +132979,8 @@ - - + + @@ -133169,29 +133000,29 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + @@ -133203,14 +133034,14 @@ - - - + + + - - - + + + @@ -133223,16 +133054,16 @@ - - - - + + + + - - - - + + + + @@ -133284,12 +133115,12 @@ - - + + - - + + @@ -133336,24 +133167,24 @@ - - + + - - + + - - + + - - + + @@ -133373,13 +133204,13 @@ - - + + - - - + + + @@ -133393,18 +133224,19 @@ - - - - + + + + - - - - + + + + + @@ -133422,8 +133254,8 @@ - - + + @@ -133438,8 +133270,8 @@ - - + + @@ -133473,8 +133305,8 @@ - - + + @@ -133492,10 +133324,10 @@ - - - - + + + + @@ -133508,54 +133340,54 @@ - - + + - - - + + + - - + + - + - + - - - - + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + + - - + + @@ -133564,36 +133396,36 @@ - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + @@ -133604,12 +133436,12 @@ - - - - - - + + + + + + @@ -133628,9 +133460,9 @@ - - - + + + @@ -133640,8 +133472,8 @@ - - + + @@ -133655,10 +133487,10 @@ - - - - + + + + @@ -133671,13 +133503,13 @@ - - - + + + - - + + @@ -133730,11 +133562,11 @@ - - - - - + + + + + @@ -133750,20 +133582,20 @@ - - + + - - + + - - + + @@ -133771,24 +133603,24 @@ - - + + - - + + - - + + @@ -133848,8 +133680,8 @@ - - + + @@ -133859,21 +133691,21 @@ - - - - - + + + + + - - - - + + + + @@ -133887,19 +133719,19 @@ - - - + + + - - + + - - - - + + + + @@ -133922,48 +133754,48 @@ - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + @@ -133972,7 +133804,7 @@ - + @@ -134012,17 +133844,17 @@ - + - + - - + + @@ -134041,8 +133873,8 @@ - - + + @@ -134069,31 +133901,31 @@ - - + + - - - - + + + + - - - + + + - - - + + + @@ -134153,8 +133985,8 @@ - - + + @@ -134195,16 +134027,16 @@ - - + + - - + + - - + + @@ -134215,8 +134047,8 @@ - - + + @@ -134239,12 +134071,12 @@ - - + + - - + + @@ -134260,8 +134092,8 @@ - - + + @@ -134380,10 +134212,10 @@ - - - - + + + + @@ -134392,20 +134224,20 @@ - - - - - - - - + + + + + + + + - - - - + + + + @@ -134413,14 +134245,14 @@ - - - + + + - - - + + + @@ -134438,8 +134270,8 @@ - - + + @@ -134451,8 +134283,8 @@ - - + + @@ -134489,8 +134321,8 @@ - - + + @@ -134541,22 +134373,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -134646,8 +134478,8 @@ - - + + @@ -134655,22 +134487,22 @@ - - + + - - - - - - + + + + + + - - - - + + + + @@ -134683,9 +134515,9 @@ - - - + + + @@ -134693,9 +134525,9 @@ - - - + + + @@ -134743,13 +134575,13 @@ - - - - - - - + + + + + + + @@ -134757,28 +134589,28 @@ - - + + - - + + - - + + - - + + - - + + @@ -134794,20 +134626,20 @@ - - - - - - + + + + + + - - - + + + - - + + @@ -134823,8 +134655,8 @@ - - + + @@ -134841,8 +134673,8 @@ - - + + @@ -134855,15 +134687,15 @@ - - - + + + - - - - + + + + @@ -134871,39 +134703,39 @@ - - - + + + - - - - + + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + @@ -134911,30 +134743,30 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -135061,8 +134893,8 @@ - - + + @@ -135181,12 +135013,12 @@ - - + + - - + + @@ -135203,9 +135035,9 @@ - - - + + + @@ -135213,9 +135045,9 @@ - - - + + + @@ -135223,9 +135055,9 @@ - - - + + + @@ -135250,12 +135082,12 @@ - - + + - - + + @@ -135273,10 +135105,10 @@ - - - - + + + + @@ -135293,62 +135125,62 @@ - - - - + + + + - - - + + + - - + + - - - - - - + + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -135359,7 +135191,7 @@ - + @@ -135393,10 +135225,10 @@ - - - - + + + + @@ -135438,7 +135270,7 @@ - + @@ -135446,34 +135278,34 @@ - - + + - - + + - - + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -135484,10 +135316,10 @@ - - - - + + + + @@ -135497,8 +135329,8 @@ - - + + @@ -135509,8 +135341,8 @@ - - + + @@ -135548,8 +135380,8 @@ - - + + @@ -135587,14 +135419,14 @@ - - - - - + + + + + - - + + @@ -135632,11 +135464,11 @@ - - - - - + + + + + @@ -135780,21 +135612,21 @@ - - + + - - - + + + - - + + - - + + @@ -135828,11 +135660,11 @@ - - - - - + + + + + @@ -135847,21 +135679,21 @@ - - + + - - + + - - + + - - - + + + @@ -135877,11 +135709,11 @@ - - - - - + + + + + @@ -135922,21 +135754,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -135957,26 +135789,26 @@ - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + @@ -135985,20 +135817,20 @@ - - - + + + - - - + + + - - - + + + @@ -136008,26 +135840,26 @@ - - - + + + - - - + + + - - - - + + + + - - - - + + + + @@ -136173,9 +136005,9 @@ - - - + + + @@ -136184,9 +136016,9 @@ - - - + + + @@ -136194,21 +136026,21 @@ - - + + - - - - + + + + - - + + - - + + @@ -136216,15 +136048,15 @@ - - - + + + - - - - + + + + @@ -136236,33 +136068,33 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - + + + @@ -136270,28 +136102,28 @@ - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -136302,13 +136134,13 @@ - - - - - - - + + + + + + + @@ -136340,14 +136172,14 @@ - - + + - - - - + + + + @@ -136355,10 +136187,10 @@ - - - - + + + + @@ -136366,10 +136198,10 @@ - - - - + + + + @@ -136392,10 +136224,10 @@ - - - - + + + + @@ -136411,29 +136243,29 @@ - + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -136462,13 +136294,13 @@ - - - - - - - + + + + + + + @@ -136487,10 +136319,10 @@ - - - - + + + + @@ -136507,10 +136339,10 @@ - - - - + + + + @@ -136520,30 +136352,30 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - - - + + + + + + + @@ -136560,13 +136392,13 @@ - - + + - - - + + + @@ -136585,39 +136417,39 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + @@ -136634,55 +136466,55 @@ - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -136692,9 +136524,9 @@ - - - + + + @@ -136704,16 +136536,16 @@ - - - - - + + + + + - - - + + + @@ -136748,15 +136580,15 @@ - - - + + + - - - - + + + + @@ -136769,11 +136601,11 @@ - - - - - + + + + + @@ -136783,16 +136615,16 @@ - - - - - + + + + + - - - + + + @@ -136802,8 +136634,8 @@ - - + + @@ -136815,25 +136647,25 @@ - - + + - - + + - - - - - - - + + + + + + + - - + + @@ -136844,9 +136676,9 @@ - - - + + + @@ -136898,9 +136730,9 @@ - - - + + + @@ -136934,22 +136766,22 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -137028,13 +136860,13 @@ - - + + - - - + + + @@ -137086,8 +136918,8 @@ - - + + @@ -137103,9 +136935,9 @@ - - - + + + @@ -137115,17 +136947,17 @@ - - - - + + + + - - - - - + + + + + @@ -137142,17 +136974,17 @@ - - + + - - - - - - - + + + + + + + @@ -137161,23 +136993,23 @@ - - + + - - - - + + + + - - - + + + - - + + @@ -137188,12 +137020,12 @@ - - - - - - + + + + + + @@ -137205,8 +137037,8 @@ - - + + @@ -137218,18 +137050,18 @@ - - - - - - + + + + + + - - - - + + + + @@ -137237,12 +137069,12 @@ - - + + - - + + @@ -137280,9 +137112,9 @@ - - - + + + @@ -137294,8 +137126,8 @@ - - + + @@ -137327,45 +137159,45 @@ - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + @@ -137410,9 +137242,9 @@ - - - + + + @@ -137443,10 +137275,10 @@ - - - - + + + + @@ -137538,14 +137370,14 @@ - - - - + + + + - - + + @@ -137563,8 +137395,8 @@ - - + + @@ -137809,9 +137641,9 @@ - - - + + + @@ -137900,9 +137732,9 @@ - - - + + + @@ -137923,13 +137755,13 @@ - - - - - - - + + + + + + + @@ -137941,29 +137773,29 @@ - - - + + + - - + + - - + + - - - - - - + + + + + + - - + + @@ -138021,9 +137853,9 @@ - - - + + + @@ -138035,17 +137867,17 @@ - - - - - - + + + + + + - - - + + + @@ -138169,9 +138001,9 @@ - - - + + + @@ -138204,30 +138036,30 @@ - - + + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -138250,9 +138082,9 @@ - - - + + + @@ -138270,8 +138102,8 @@ - - + + @@ -138306,10 +138138,10 @@ - - - - + + + + @@ -138318,21 +138150,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -138340,21 +138172,21 @@ - - - - + + + + - - - - - + + + + + - - - + + + @@ -138373,12 +138205,12 @@ - - - + + + - - + + @@ -138393,26 +138225,26 @@ - - + + - - + + - - + + - + - + @@ -138424,12 +138256,12 @@ - - + + - - + + @@ -138444,23 +138276,23 @@ - - + + - - + + - - - + + + - + - + @@ -138479,15 +138311,15 @@ - - - + + + - - - - + + + + @@ -138500,20 +138332,20 @@ - - - + + + - - - - + + + + - - - + + + @@ -138535,9 +138367,9 @@ - - - + + + @@ -138546,10 +138378,10 @@ - - - - + + + + @@ -138557,9 +138389,9 @@ - - - + + + @@ -138567,9 +138399,9 @@ - - - + + + @@ -138578,17 +138410,17 @@ - - - - + + + + - + @@ -138600,8 +138432,8 @@ - - + + @@ -138643,8 +138475,8 @@ - - + + @@ -138737,8 +138569,8 @@ - - + + @@ -138747,8 +138579,8 @@ - - + + @@ -138780,19 +138612,19 @@ - - - - - - - - - + + + + + + + + + - - + + @@ -138804,9 +138636,9 @@ - - - + + + @@ -138825,14 +138657,14 @@ - - - - + + + + - - + + @@ -138860,9 +138692,9 @@ - - - + + + @@ -138880,7 +138712,6 @@ - @@ -138902,19 +138733,19 @@ - - + + - - - - + + + + - - - + + + @@ -138932,8 +138763,8 @@ - - + + @@ -138943,24 +138774,24 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -138970,32 +138801,32 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -139012,12 +138843,12 @@ - + - - - + + + @@ -139145,10 +138976,10 @@ - - - - + + + + @@ -139156,10 +138987,10 @@ - - - - + + + + @@ -139238,19 +139069,19 @@ - - - + + + - - - + + + - - - + + + @@ -139280,8 +139111,8 @@ - - + + @@ -139299,16 +139130,16 @@ - - + + - - + + @@ -139361,9 +139192,9 @@ - - - + + + @@ -139377,9 +139208,9 @@ - - - + + + @@ -139418,8 +139249,8 @@ - - + + @@ -139465,9 +139296,9 @@ - - - + + + @@ -139558,11 +139389,11 @@ - - - - - + + + + + @@ -139797,9 +139628,9 @@ - - - + + + @@ -139917,15 +139748,15 @@ - - + + - - - - - + + + + + @@ -139959,8 +139790,8 @@ - - + + @@ -139995,17 +139826,17 @@ - - + + - - + + - - - + + + @@ -140016,8 +139847,8 @@ - - + + @@ -140048,12 +139879,12 @@ - - + + - - + + @@ -140076,8 +139907,8 @@ - - + + @@ -140099,8 +139930,8 @@ - - + + @@ -140136,9 +139967,9 @@ - - - + + + @@ -140161,9 +139992,9 @@ - - - + + + @@ -140178,16 +140009,16 @@ - - + + - - + + - - + + @@ -140206,8 +140037,8 @@ - - + + @@ -140222,16 +140053,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -140265,8 +140096,8 @@ - - + + @@ -140289,9 +140120,9 @@ - - - + + + @@ -140303,9 +140134,9 @@ - - - + + + @@ -140324,24 +140155,24 @@ - - - + + + - - - - + + + + - - - + + + @@ -140368,8 +140199,8 @@ - - + + @@ -140388,9 +140219,9 @@ - - - + + + @@ -140399,28 +140230,28 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -140429,14 +140260,14 @@ - - - - + + + + - - + + @@ -140447,9 +140278,9 @@ - - - + + + @@ -140483,8 +140314,8 @@ - - + + @@ -140586,15 +140417,15 @@ - - - + + + - - - - + + + + @@ -140606,8 +140437,8 @@ - - + + @@ -140673,8 +140504,8 @@ - - + + @@ -140686,10 +140517,10 @@ - - - - + + + + @@ -140713,30 +140544,30 @@ - - + + - - + + - - - + + + - - - + + + - - + + @@ -140748,10 +140579,10 @@ - - - - + + + + @@ -140775,9 +140606,9 @@ - - - + + + @@ -140785,8 +140616,8 @@ - - + + @@ -140825,9 +140656,9 @@ - - - + + + @@ -140848,10 +140679,10 @@ - - - - + + + + @@ -140901,9 +140732,9 @@ - - - + + + @@ -140963,21 +140794,21 @@ - - - + + + - - - - - - + + + + + + - - + + @@ -141153,9 +140984,9 @@ - - - + + + @@ -141169,27 +141000,27 @@ - - + + - - - - + + + + - - - + + + @@ -141203,33 +141034,33 @@ - - - - - + + + + + - - - + + + - - + + - - + + - - + + - - - + + + @@ -141475,15 +141306,15 @@ - - - + + + - - - - + + + + @@ -141534,9 +141365,9 @@ - - - + + + @@ -141550,15 +141381,15 @@ - - - - + + + + - - - + + + @@ -141636,9 +141467,9 @@ - - - + + + @@ -141654,36 +141485,36 @@ - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -141698,9 +141529,9 @@ - - - + + + @@ -141715,14 +141546,14 @@ - - - + + + - - - + + + @@ -141764,15 +141595,15 @@ - - + + - - - - - + + + + + @@ -141780,11 +141611,11 @@ - - - - - + + + + + @@ -141800,8 +141631,8 @@ - - + + @@ -141821,8 +141652,8 @@ - - + + @@ -141865,8 +141696,8 @@ - - + + @@ -141902,8 +141733,8 @@ - - + + @@ -141970,9 +141801,9 @@ - - - + + + @@ -142043,26 +141874,26 @@ - - - - - - - + + + + + + + - - + + - - - + + + @@ -142099,21 +141930,21 @@ - - - + + + - - - + + + - - - + + + @@ -142177,15 +142008,15 @@ - - + + - - + + @@ -142196,16 +142027,16 @@ - - - - - + + + + + - - - + + + @@ -142214,11 +142045,11 @@ - - - - - + + + + + @@ -142227,9 +142058,9 @@ - - - + + + @@ -142279,11 +142110,11 @@ - - - - - + + + + + @@ -142293,23 +142124,23 @@ - - - - + + + + - - - + + + - - + + - - + + @@ -142322,12 +142153,12 @@ - - + + - - + + @@ -142335,8 +142166,8 @@ - - + + @@ -142353,8 +142184,8 @@ - - + + @@ -142362,12 +142193,12 @@ - - - + + + - + @@ -142396,17 +142227,17 @@ - - - + + + - - + + @@ -142473,28 +142304,28 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + @@ -142504,17 +142335,17 @@ - - + + - - - - + + + + @@ -142525,26 +142356,26 @@ - - - - + + + + - - - - + + + + - - + + - - - - + + + + @@ -142555,9 +142386,9 @@ - - - + + + @@ -142589,10 +142420,10 @@ - - - - + + + + @@ -142625,9 +142456,9 @@ - - - + + + @@ -142644,15 +142475,15 @@ - - - - + + + + - - - + + + @@ -142676,12 +142507,12 @@ - - - - - - + + + + + + @@ -142703,13 +142534,13 @@ - - + + - - - + + + @@ -142726,10 +142557,10 @@ - - - - + + + + @@ -142740,47 +142571,47 @@ - - - + + + - - + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index e1befd71e03a..9dd6a627f4ab 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -1940,6 +1940,7 @@ __traceiter_android_vh_rwsem_wake __traceiter_android_vh_rwsem_write_finished __traceiter_android_vh_scheduler_tick + __traceiter_android_vh_scmi_timeout_sync __traceiter_android_vh_selinux_avc_insert __traceiter_android_vh_selinux_avc_lookup __traceiter_android_vh_selinux_avc_node_delete @@ -2019,6 +2020,7 @@ __tracepoint_android_vh_rwsem_wake __tracepoint_android_vh_rwsem_write_finished __tracepoint_android_vh_scheduler_tick + __tracepoint_android_vh_scmi_timeout_sync __tracepoint_android_vh_selinux_avc_insert __tracepoint_android_vh_selinux_avc_lookup __tracepoint_android_vh_selinux_avc_node_delete From 62f22f5c05e37dc820618e206c1467f6abb97912 Mon Sep 17 00:00:00 2001 From: Jindong Yue Date: Mon, 1 Nov 2021 15:43:51 +0800 Subject: [PATCH 54/62] ANDROID: ABI: Update symbol list for IMX Add vb2_create_bufs symbol required by vsiv4l2.ko. Leaf changes summary: 1 artifact changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 1 Added function: [A] 'function int vb2_create_bufs(vb2_queue*, v4l2_create_buffers*)' Bug: 194108974 Signed-off-by: Jindong Yue Change-Id: I7b52e5fafbe58889a4bd6cce4f9b3676471e28ce --- android/abi_gki_aarch64.xml | 6 ++++++ android/abi_gki_aarch64_imx | 38 ++++++++++++++++++------------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index e42fda1c4b3d..2640a4369214 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -5351,6 +5351,7 @@ + @@ -141371,6 +141372,11 @@ + + + + + diff --git a/android/abi_gki_aarch64_imx b/android/abi_gki_aarch64_imx index b90451f6f40d..13ac690aa640 100644 --- a/android/abi_gki_aarch64_imx +++ b/android/abi_gki_aarch64_imx @@ -133,6 +133,7 @@ devm_extcon_dev_allocate devm_extcon_dev_register devm_free_irq + devm_get_clk_from_child devm_gpiochip_add_data_with_key devm_gpiod_get devm_gpiod_get_index @@ -148,7 +149,6 @@ devm_phy_create devm_phy_get devm_pinctrl_get - devm_pinctrl_put devm_platform_ioremap_resource __devm_regmap_init __devm_regmap_init_i2c @@ -307,6 +307,7 @@ drm_mode_duplicate drm_mode_equal drm_mode_find_dmt + drm_mode_is_420_also drm_mode_is_420_only drm_mode_probed_add drm_mode_set_name @@ -337,7 +338,6 @@ eth_validate_addr event_triggers_call extcon_set_state_sync - filp_close find_next_bit finish_wait flush_work @@ -433,7 +433,6 @@ kobject_put kobject_uevent_env kthread_create_on_node - kthread_should_stop ktime_get ktime_get_mono_fast_ns ktime_get_real_ts64 @@ -500,6 +499,7 @@ netif_device_attach netif_device_detach netif_napi_add + netif_receive_skb netif_rx netif_rx_ni netif_tx_stop_all_queues @@ -652,6 +652,8 @@ regcache_mark_dirty regcache_sync __register_chrdev + register_inet6addr_notifier + register_inetaddr_notifier register_netdev register_netdevice register_netdevice_notifier @@ -818,10 +820,11 @@ trace_raw_output_prep trace_seq_printf try_module_get - tty_flip_buffer_push __udelay __unregister_chrdev unregister_chrdev_region + unregister_inet6addr_notifier + unregister_inetaddr_notifier unregister_netdev unregister_netdevice_notifier unregister_netdevice_queue @@ -877,6 +880,7 @@ v4l2_m2m_job_finish v4l2_m2m_next_buf v4l2_m2m_release + v4l2_src_change_event_subscribe v4l2_subdev_call_wrappers v4l2_subdev_init v4l2_subdev_link_validate @@ -1140,7 +1144,6 @@ drm_atomic_get_new_connector_for_encoder drm_connector_attach_max_bpc_property drm_connector_init_with_ddc - drm_mode_is_420_also drm_scdc_read drm_scdc_set_high_tmds_clock_ratio drm_scdc_set_scrambling @@ -1258,8 +1261,6 @@ __put_page reset_control_reset schedule_hrtimeout - set_user_nice - si_meminfo sync_file_create sync_file_get_fence __task_pid_nr_ns @@ -1268,6 +1269,7 @@ up_write vm_mmap vm_munmap + vm_zone_stat # required by gmsl-max9286.ko i2c_smbus_read_byte_data @@ -1402,6 +1404,7 @@ rational_best_approximation _raw_spin_trylock sysrq_mask + tty_flip_buffer_push __tty_insert_flip_char tty_insert_flip_string_fixed_flag tty_termios_encode_baud_rate @@ -1533,13 +1536,10 @@ kvfree kvmalloc_node netdev_set_default_ethtool_ops - netif_receive_skb netif_receive_skb_list prandom_bytes ___pskb_trim rcu_barrier - register_inet6addr_notifier - register_inetaddr_notifier rhashtable_free_and_destroy rhashtable_insert_slow rhltable_init @@ -1560,14 +1560,10 @@ __skb_gso_segment skb_queue_head system_freezable_wq - unregister_inet6addr_notifier - unregister_inetaddr_notifier unregister_netdevice_many __usecs_to_jiffies # required by moal.ko - bitmap_parse - cpumask_next_and default_wake_function hex_dump_to_buffer in4_pton @@ -1579,6 +1575,7 @@ iw_handler_get_thrspy iw_handler_set_spy iw_handler_set_thrspy + kthread_should_stop ktime_get_raw_ts64 mmc_hw_reset mmc_set_data_timeout @@ -1609,7 +1606,7 @@ proc_create_data proc_mkdir remove_proc_entry - rps_needed + request_firmware_direct sdio_claim_host sdio_claim_irq sdio_disable_func @@ -1629,8 +1626,6 @@ sdio_writesb skb_realloc_headroom sort - static_key_slow_dec - static_key_slow_inc strcat strchr strim @@ -1680,7 +1675,6 @@ # required by mxc-jpeg-encdec.ko v4l2_m2m_dqbuf v4l2_m2m_qbuf - v4l2_src_change_event_subscribe # required by mxs-dma.ko dmaenginem_async_device_register @@ -1720,6 +1714,9 @@ v4l2_event_subdev_unsubscribe __v4l2_find_nearest_size +# required by ov5640_camera_mipi_v2.ko + devm_pinctrl_put + # required by panel-raydium-rm67191.ko devm_backlight_device_register mipi_dsi_dcs_enter_sleep_mode @@ -1836,7 +1833,6 @@ backlight_device_register backlight_device_unregister devm_pwm_get - gpiod_get_direction pwm_apply_state pwm_free pwm_request @@ -1995,7 +1991,6 @@ snd_soc_dapm_put_enum_double # required by snd-soc-simple-card-utils.ko - devm_get_clk_from_child devm_kvasprintf of_property_read_string_helper snd_soc_dapm_get_pin_switch @@ -2056,6 +2051,8 @@ # required by trusty-ipc.ko _copy_from_iter + dma_buf_vmap + dma_buf_vunmap fget import_iovec strncpy_from_user @@ -2117,6 +2114,7 @@ # required by vsiv4l2.ko devm_device_add_group v4l2_event_dequeue + vb2_create_bufs vb2_prepare_buf # required by vvcam-video.ko From 6ad609468d93cd2080e6f76d8596f4dff6cc860f Mon Sep 17 00:00:00 2001 From: Suren Baghdasaryan Date: Fri, 29 Oct 2021 11:00:34 -0700 Subject: [PATCH 55/62] ANDROID: Fix mmu_notifier imbalance SPF patchset introduced an mmu_notifier imbalance by adding a new exit path that skips mmu_notifier_invalidate_range_only_end after calling mmu_notifier_invalidate_range_start. This triggers a BUG in KVM driver checking for mmu_notifier_count to remain balanced Fixes: afeec97a8dfc ("FROMLIST: mm: prepare for FAULT_FLAG_SPECULATIVE") Bug: 161210518 Signed-off-by: Suren Baghdasaryan Change-Id: Ibe9d1f0903a23b48c9d733b81249b190e5321c2f --- mm/memory.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/memory.c b/mm/memory.c index 44c6a8ee197b..5db2a3ed395b 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3159,7 +3159,7 @@ static vm_fault_t wp_page_copy(struct vm_fault *vmf) */ if (!pte_map_lock(vmf)) { ret = VM_FAULT_RETRY; - goto out_free_new; + goto out_invalidate_end; } if (likely(pte_same(*vmf->pte, vmf->orig_pte))) { if (old_page) { @@ -3247,6 +3247,8 @@ static vm_fault_t wp_page_copy(struct vm_fault *vmf) put_page(old_page); } return page_copied ? VM_FAULT_WRITE : 0; +out_invalidate_end: + mmu_notifier_invalidate_range_only_end(&range); out_free_new: put_page(new_page); out: From 9cafb6afaa2c155af1fa5c87681cb9b0bbdd4cc4 Mon Sep 17 00:00:00 2001 From: Liujie Xie Date: Fri, 29 Oct 2021 17:53:50 +0800 Subject: [PATCH 56/62] ANDROID: GKI: Update symbols to symbol list Update symbols to symbol list externed by oem modules. Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable 1 Added function: [A] 'function int __traceiter_android_vh_cpu_up(void*, unsigned int)' 1 Added variable: [A] 'tracepoint __tracepoint_android_vh_cpu_up' Bug: 193384408 Change-Id: I5c0f08e4a5b07c2277189aabdee1d49f2a690189 Signed-off-by: Liujie Xie --- android/abi_gki_aarch64.xml | 8 ++++++++ android/abi_gki_aarch64_oplus | 2 ++ 2 files changed, 10 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 2640a4369214..9e7bbdc91f7a 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -384,6 +384,7 @@ + @@ -5735,6 +5736,7 @@ + @@ -115132,6 +115134,11 @@ + + + + + @@ -116385,6 +116392,7 @@ + diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index 8d81b5dc8b62..d4abfde0e0b2 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -2594,6 +2594,7 @@ __traceiter_android_vh_commit_creds __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit + __traceiter_android_vh_cpu_up __traceiter_android_vh_do_send_sig_info __traceiter_android_vh_em_cpu_energy __traceiter_android_vh_exclude_reserved_zone @@ -2776,6 +2777,7 @@ __tracepoint_android_vh_commit_creds __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit + __tracepoint_android_vh_cpu_up __tracepoint_android_vh_do_send_sig_info __tracepoint_android_vh_em_cpu_energy __tracepoint_android_vh_exclude_reserved_zone From aee113fcef3a143b4997377354546f4cffa81664 Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Fri, 22 Oct 2021 19:07:29 +0100 Subject: [PATCH 57/62] ANDROID: Incremental fs: Fix dentry get/put imbalance on vfs_mkdir() failure Syz{bot,kaller} reports[0]: BUG: Dentry ffff888119d8a000{i=0,n=.index} still in use (1) [unmount of ramfs ramfs] ------------[ cut here ]------------ WARNING: CPU: 0 PID: 367 at fs/dcache.c:1616 umount_check+0x18d/0x1d0 fs/dcache.c:1607 Modules linked in: CPU: 0 PID: 367 Comm: syz-executor388 Not tainted 5.10.75-syzkaller-01082-g234d53d2bb60 #0 Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 RIP: 0010:umount_check+0x18d/0x1d0 fs/dcache.c:1607 Code: 8b 0b 49 81 c6 f8 03 00 00 48 c7 c7 00 40 2e 85 4c 89 e6 48 8b 55 d0 4c 89 e1 45 89 f8 31 c0 41 56 e8 ae d9 9e ff 48 83 c4 08 <0f> 0b e9 f1 fe ff ff 89 d9 80 e1 07 80 c1 03 38 c1 0f 8c c9 fe ff RSP: 0018:ffffc9000096f770 EFLAGS: 00010292 RAX: 0000000000000055 RBX: ffffffff866af200 RCX: 1ad6b89836e5b500 RDX: 0000000000000000 RSI: 0000000000000002 RDI: 0000000000000000 RBP: ffffc9000096f7a0 R08: ffffffff81545368 R09: 0000000000000003 R10: fffff5200012de41 R11: 0000000000000004 R12: ffff888119d8a000 R13: dffffc0000000000 R14: ffff88811d7373f8 R15: 0000000000000001 FS: 0000000000000000(0000) GS:ffff8881f7000000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f01b7bddb68 CR3: 000000010c4f0000 CR4: 00000000003506b0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: d_walk+0x309/0x540 fs/dcache.c:1326 do_one_tree fs/dcache.c:1623 [inline] shrink_dcache_for_umount+0x8e/0x1b0 fs/dcache.c:1639 generic_shutdown_super+0x66/0x2c0 fs/super.c:447 kill_anon_super fs/super.c:1108 [inline] kill_litter_super+0x75/0xa0 fs/super.c:1117 ramfs_kill_sb+0x44/0x50 fs/ramfs/inode.c:270 deactivate_locked_super+0xb0/0x100 fs/super.c:335 deactivate_super+0xa5/0xd0 fs/super.c:366 cleanup_mnt+0x45f/0x510 fs/namespace.c:1118 __cleanup_mnt+0x19/0x20 fs/namespace.c:1125 task_work_run+0x147/0x1b0 kernel/task_work.c:154 exit_task_work include/linux/task_work.h:30 [inline] do_exit+0x70e/0x23a0 kernel/exit.c:813 do_group_exit+0x16a/0x2d0 kernel/exit.c:910 get_signal+0x133e/0x1f80 kernel/signal.c:2790 arch_do_signal+0x8d/0x620 arch/x86/kernel/signal.c:805 exit_to_user_mode_loop kernel/entry/common.c:161 [inline] exit_to_user_mode_prepare+0xaa/0xe0 kernel/entry/common.c:191 syscall_exit_to_user_mode+0x24/0x40 kernel/entry/common.c:266 do_syscall_64+0x3d/0x70 arch/x86/entry/common.c:56 entry_SYSCALL_64_after_hwframe+0x44/0xa9 RIP: 0033:0x7f01b7b884f9 Code: Unable to access opcode bytes at RIP 0x7f01b7b884cf. RSP: 002b:00007f01b7b19308 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca RAX: fffffffffffffe00 RBX: 00007f01b7c103f8 RCX: 00007f Which was due to a missing dput() before returning from a vfs_mkdir() failure. Bug: 203827798 Link: [0] https://syzkaller.appspot.com/bug?extid=81b5ca9b2848f4dad8fa Reported-by: syzbot+81b5ca9b2848f4dad8fa@syzkaller.appspotmail.com Signed-off-by: Lee Jones Change-Id: Iaef9aa0aecc964645aaca5fe8d79388ae28527bd --- fs/incfs/vfs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/incfs/vfs.c b/fs/incfs/vfs.c index 0650ee90f8b1..ea7866fbfd6e 100644 --- a/fs/incfs/vfs.c +++ b/fs/incfs/vfs.c @@ -458,8 +458,10 @@ static struct dentry *open_or_create_special_dir(struct dentry *backing_dir, err = vfs_mkdir(backing_inode, index_dentry, 0777); inode_unlock(backing_inode); - if (err) + if (err) { + dput(index_dentry); return ERR_PTR(err); + } if (!d_really_is_positive(index_dentry) || unlikely(d_unhashed(index_dentry))) { From 1eae8229b75495d6595baea64d70fdb87d89758f Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Thu, 28 Oct 2021 10:55:33 +0800 Subject: [PATCH 58/62] ANDROID: GKI: Update symbols to symbol list Update symbols to symbol list for OEM extern kernel modules Leaf changes summary: 6 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 6 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 6 Added functions: [A] 'function __sum16 __skb_checksum_complete(sk_buff*)' [A] 'function int ip6_local_out(net*, sock*, sk_buff*)' [A] 'function int ip6_route_me_harder(net*, sock*, sk_buff*)' [A] 'function int ip_local_out(net*, sock*, sk_buff*)' [A] 'function void nf_ct_attach(sk_buff*, const sk_buff*)' [A] 'function void skb_dump(const char*, const sk_buff*, bool)' Bug: 193384408 Signed-off-by: Wei Liu Change-Id: I054f8eb6214ae1618a987e101aa5ff36c70ccf0d --- android/abi_gki_aarch64.xml | 39 +++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_oplus | 6 ++++++ 2 files changed, 45 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 9e7bbdc91f7a..2c7d0d3dba6c 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -231,6 +231,7 @@ + @@ -2738,7 +2739,10 @@ + + + @@ -3250,6 +3254,7 @@ + @@ -4399,6 +4404,7 @@ + @@ -114156,6 +114162,10 @@ + + + + @@ -128026,11 +128036,29 @@ + + + + + + + + + + + + + + + + + + @@ -130607,6 +130635,11 @@ + + + + + @@ -136465,6 +136498,12 @@ + + + + + + diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index d4abfde0e0b2..8f52f1425531 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -1173,7 +1173,10 @@ ioremap_cache iounmap __iowrite32_copy + ip6_local_out + ip6_route_me_harder ipi_desc_get + ip_local_out ip_route_me_harder iput ipv6_find_hdr @@ -1526,6 +1529,7 @@ net_namespace_list net_ns_type_operations net_ratelimit + nf_ct_attach nf_ct_delete nf_register_net_hooks nf_unregister_net_hooks @@ -2254,6 +2258,7 @@ si_swapinfo sk_alloc skb_add_rx_frag + __skb_checksum_complete skb_checksum_help skb_clone skb_clone_sk @@ -2263,6 +2268,7 @@ skb_copy_datagram_iter skb_copy_expand skb_dequeue + skb_dump skb_ensure_writable skb_free_datagram __skb_get_hash From b9066e59a587fb34de9c86674f588077474b667d Mon Sep 17 00:00:00 2001 From: zhengding chen Date: Wed, 3 Nov 2021 19:35:36 +0800 Subject: [PATCH 59/62] ANDROID: GKI: Update symbols to symbol list Update symbols to symbol list externed by oem modules. Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable 1 Added function: [A] 'function int __traceiter_android_vh_cpufreq_acct_update_power(void*, u64, task_struct*, unsigned int)' 1 Added variable: [A] 'tracepoint __tracepoint_android_vh_cpufreq_acct_update_power' Bug: 193384408 Signed-off-by: zhengding chen Change-Id: Ia8b4c3bf3847dd3e61a82bd11c87039fcc2bfbf0 --- android/abi_gki_aarch64.xml | 46 +++++++++++++++++++++-------------- android/abi_gki_aarch64_oplus | 2 ++ 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 2c7d0d3dba6c..2293576626f4 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -386,6 +386,7 @@ + @@ -5743,6 +5744,7 @@ + @@ -115149,6 +115151,13 @@ + + + + + + + @@ -116403,6 +116412,7 @@ + @@ -116997,12 +117007,12 @@ - - - - - - + + + + + + @@ -125631,10 +125641,10 @@ - - - - + + + + @@ -139800,11 +139810,11 @@ - - - - - + + + + + @@ -141419,9 +141429,9 @@ - - - + + + diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index 8f52f1425531..e04180910b8e 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -2598,6 +2598,7 @@ __traceiter_android_vh_clear_mask_adjust __traceiter_android_vh_clear_reserved_fmt_fields __traceiter_android_vh_commit_creds + __traceiter_android_vh_cpufreq_acct_update_power __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit __traceiter_android_vh_cpu_up @@ -2781,6 +2782,7 @@ __tracepoint_android_vh_clear_mask_adjust __tracepoint_android_vh_clear_reserved_fmt_fields __tracepoint_android_vh_commit_creds + __tracepoint_android_vh_cpufreq_acct_update_power __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit __tracepoint_android_vh_cpu_up From 64d769e53f2094eb2b39c1de0d920969168dcf12 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Tue, 2 Nov 2021 14:50:17 -0700 Subject: [PATCH 60/62] ANDROID: fips140: add service indicators To satisfy the FIPS 140-3 "service indicators" requirement, add a function which checks whether the given algorithm is "approved" or not. Note that this function is a bit different from the module's other APIs in that it is an exported symbol rather than a registration-based API. This avoids needing to make kernel/KMI changes, so I think we should do it this way if possible, given that it's unlikely this function will be used in practice outside of the lab test. Built-in code can still call this function via symbol_get() if it really wants to. Bug: 188620248 Change-Id: I26c976258fa9446b34eb189bba7154142d85da16 Signed-off-by: Eric Biggers (cherry picked from commit fe4b8d3c687efcf27064e472730291edbd81dad6) --- crypto/fips140-module.c | 91 ++++++++++++++++++++++++++++++----------- crypto/fips140-module.h | 2 + 2 files changed, 68 insertions(+), 25 deletions(-) diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index 951fc8ea8255..79b09b070463 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -14,6 +14,8 @@ * don't need to meet these requirements. */ +#undef __DISABLE_EXPORTS + #include #include #include @@ -86,34 +88,37 @@ const u8 *__rodata_start = &__fips140_rodata_start; * When adding a new algorithm here, make sure to consider whether it needs a * self-test added to fips140_selftests[] as well. */ -static const char * const fips140_algorithms[] __initconst = { - "aes", +static const struct { + const char *name; + bool approved; +} fips140_algs_to_replace[] = { + {"aes", true}, - "cmac(aes)", - "ecb(aes)", + {"cmac(aes)", true}, + {"ecb(aes)", true}, - "cbc(aes)", - "cts(cbc(aes))", - "ctr(aes)", - "xts(aes)", - "gcm(aes)", + {"cbc(aes)", true}, + {"cts(cbc(aes))", true}, + {"ctr(aes)", true}, + {"xts(aes)", true}, + {"gcm(aes)", false}, - "hmac(sha1)", - "hmac(sha224)", - "hmac(sha256)", - "hmac(sha384)", - "hmac(sha512)", - "sha1", - "sha224", - "sha256", - "sha384", - "sha512", + {"hmac(sha1)", true}, + {"hmac(sha224)", true}, + {"hmac(sha256)", true}, + {"hmac(sha384)", true}, + {"hmac(sha512)", true}, + {"sha1", true}, + {"sha224", true}, + {"sha256", true}, + {"sha384", true}, + {"sha512", true}, - "stdrng", - "jitterentropy_rng", + {"stdrng", true}, + {"jitterentropy_rng", false}, }; -static bool __init is_fips140_algo(struct crypto_alg *alg) +static bool __init fips140_should_unregister_alg(struct crypto_alg *alg) { int i; @@ -124,12 +129,48 @@ static bool __init is_fips140_algo(struct crypto_alg *alg) if (alg->cra_flags & CRYPTO_ALG_ASYNC) return false; - for (i = 0; i < ARRAY_SIZE(fips140_algorithms); i++) - if (!strcmp(alg->cra_name, fips140_algorithms[i])) + for (i = 0; i < ARRAY_SIZE(fips140_algs_to_replace); i++) { + if (!strcmp(alg->cra_name, fips140_algs_to_replace[i].name)) return true; + } return false; } +/* + * FIPS 140-3 service indicators. FIPS 140-3 requires that all services + * "provide an indicator when the service utilises an approved cryptographic + * algorithm, security function or process in an approved manner". What this + * means is very debatable, even with the help of the FIPS 140-3 Implementation + * Guidance document. However, it was decided that a function that takes in an + * algorithm name and returns whether that algorithm is approved or not will + * meet this requirement. Note, this relies on some properties of the module: + * + * - The module doesn't distinguish between "services" and "algorithms"; its + * services are simply its algorithms. + * + * - The status of an approved algorithm is never non-approved, since (a) the + * module doesn't support operating in a non-approved mode, such as a mode + * where the self-tests are skipped; (b) there are no cases where the module + * supports non-approved settings for approved algorithms, e.g. + * non-approved key sizes; and (c) this function isn't available to be + * called until the module_init function has completed, so it's guaranteed + * that the self-tests and integrity check have already passed. + * + * - The module does support some non-approved algorithms, so a single static + * indicator ("return true;") would not be acceptable. + */ +bool fips140_is_approved_service(const char *name) +{ + size_t i; + + for (i = 0; i < ARRAY_SIZE(fips140_algs_to_replace); i++) { + if (!strcmp(name, fips140_algs_to_replace[i].name)) + return fips140_algs_to_replace[i].approved; + } + return false; +} +EXPORT_SYMBOL_GPL(fips140_is_approved_service); + static LIST_HEAD(existing_live_algos); /* @@ -180,7 +221,7 @@ static void __init unregister_existing_fips140_algos(void) * that new users won't use them. */ list_for_each_entry_safe(alg, tmp, &crypto_alg_list, cra_list) { - if (!is_fips140_algo(alg)) + if (!fips140_should_unregister_alg(alg)) continue; if (refcount_read(&alg->cra_refcnt) == 1) { /* diff --git a/crypto/fips140-module.h b/crypto/fips140-module.h index f33580cf7bf8..a01d6c5c1049 100644 --- a/crypto/fips140-module.h +++ b/crypto/fips140-module.h @@ -21,4 +21,6 @@ extern struct task_struct *fips140_init_thread; bool __init __must_check fips140_run_selftests(void); +bool fips140_is_approved_service(const char *name); + #endif /* _CRYPTO_FIPS140_MODULE_H */ From 8d7f609cdaa460ca266af45ae132bec6ffbe9558 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Tue, 2 Nov 2021 14:50:18 -0700 Subject: [PATCH 61/62] ANDROID: fips140: add name and version, and a function to retrieve them This is needed to meet a FIPS 140-3 requirement that modules provide a service that retrieves their name and versioning information. Bug: 188620248 Change-Id: I36049c839c4217e3616daab52ec536b46479c12a Signed-off-by: Eric Biggers (cherry picked from commit 2888f960d09f3af00d1e45f1facd311ccd5b778a) --- crypto/fips140-module.c | 23 ++++++++++++++++++++++- crypto/fips140-module.h | 9 +++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index 79b09b070463..5e42891fbd0d 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -171,6 +171,27 @@ bool fips140_is_approved_service(const char *name) } EXPORT_SYMBOL_GPL(fips140_is_approved_service); +/* + * FIPS 140-3 requires that modules provide a "service" that outputs "the name + * or module identifier and the versioning information that can be correlated + * with a validation record". This function meets that requirement. + * + * Note: the module also prints this same information to the kernel log when it + * is loaded. That might meet the requirement by itself. However, given the + * vagueness of what counts as a "service", we provide this function too, just + * in case the certification lab or CMVP is happier with an explicit function. + * + * Note: /sys/modules/fips140/scmversion also provides versioning information + * about the module. However that file just shows the bare git commit ID, so it + * probably isn't sufficient to meet the FIPS requirement, which seems to want + * the "official" module name and version number used in the FIPS certificate. + */ +const char *fips140_module_version(void) +{ + return FIPS140_MODULE_NAME " " FIPS140_MODULE_VERSION; +} +EXPORT_SYMBOL_GPL(fips140_module_version); + static LIST_HEAD(existing_live_algos); /* @@ -478,7 +499,7 @@ fips140_init(void) { const u32 *initcall; - pr_info("loading module\n"); + pr_info("loading " FIPS140_MODULE_NAME " " FIPS140_MODULE_VERSION "\n"); fips140_init_thread = current; unregister_existing_fips140_algos(); diff --git a/crypto/fips140-module.h b/crypto/fips140-module.h index a01d6c5c1049..ff99d5b2ab4a 100644 --- a/crypto/fips140-module.h +++ b/crypto/fips140-module.h @@ -12,6 +12,14 @@ #undef pr_fmt #define pr_fmt(fmt) "fips140: " fmt +/* + * This is the name and version number of the module that are shown on the FIPS + * certificate. These don't necessarily have any relation to the filename of + * the .ko file, or to the git branch or commit ID. + */ +#define FIPS140_MODULE_NAME "Android Kernel Cryptographic Module" +#define FIPS140_MODULE_VERSION "v1.0" + #ifdef CONFIG_CRYPTO_FIPS140_MOD_ERROR_INJECTION extern char *fips140_broken_alg; #endif @@ -22,5 +30,6 @@ extern struct task_struct *fips140_init_thread; bool __init __must_check fips140_run_selftests(void); bool fips140_is_approved_service(const char *name); +const char *fips140_module_version(void); #endif /* _CRYPTO_FIPS140_MODULE_H */ From 29af14b0862ae80a515c8cdb82963e4ac965f8d7 Mon Sep 17 00:00:00 2001 From: xieliujie Date: Wed, 3 Nov 2021 21:19:35 +0800 Subject: [PATCH 62/62] ANDROID: GKI: Update symbols to symbol list Update symbols to symbol list externed by oem modules. Leaf changes summary: 4 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 2 Added variables 2 Added functions: [A] 'function int __traceiter_sched_stat_sleep(void*, task_struct*, u64)' [A] 'function int __traceiter_sched_waking(void*, task_struct*)' 2 Added variables: [A] 'tracepoint __tracepoint_sched_stat_sleep' [A] 'tracepoint __tracepoint_sched_waking' Bug: 193384408 Change-Id: I9979f21fb3feec8dadc57ef515ab7697cc84e2ca Signed-off-by: xieliujie --- android/abi_gki_aarch64.xml | 17 +++++++++++++++++ android/abi_gki_aarch64_oplus | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 2293576626f4..f621d304fe1b 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -555,11 +555,13 @@ + + @@ -5931,11 +5933,13 @@ + + @@ -116191,6 +116195,12 @@ + + + + + + @@ -116220,6 +116230,11 @@ + + + + + @@ -116599,11 +116614,13 @@ + + diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index e04180910b8e..5476614fa58e 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -2689,9 +2689,11 @@ __traceiter_sched_overutilized_tp __traceiter_sched_stat_blocked __traceiter_sched_stat_iowait + __traceiter_sched_stat_sleep __traceiter_sched_stat_wait __traceiter_sched_switch __traceiter_sched_update_nr_running_tp + __traceiter_sched_waking __traceiter_suspend_resume __traceiter_task_newtask __traceiter_task_rename @@ -2876,9 +2878,11 @@ __tracepoint_sched_overutilized_tp __tracepoint_sched_stat_blocked __tracepoint_sched_stat_iowait + __tracepoint_sched_stat_sleep __tracepoint_sched_stat_wait __tracepoint_sched_switch __tracepoint_sched_update_nr_running_tp + __tracepoint_sched_waking tracepoint_srcu __tracepoint_suspend_resume __tracepoint_task_newtask